smesh_lol_web_common_mls.mjs raw
1 // Package smesh.lol/web/common/mls
2 // Generated by MoxieJS — Moxie JavaScript backend
3
4 import * as $rt from './$runtime/index.mjs';
5
6 import * as errors from './errors.mjs';
7 import * as smesh$lol$web$common$crypto$chacha20poly1305 from './smesh_lol_web_common_crypto_chacha20poly1305.mjs';
8 import * as smesh$lol$web$common$crypto$hkdf from './smesh_lol_web_common_crypto_hkdf.mjs';
9 import * as smesh$lol$web$common$crypto$hmac from './smesh_lol_web_common_crypto_hmac.mjs';
10 import * as smesh$lol$web$common$jsbridge$ed25519 from './smesh_lol_web_common_jsbridge_ed25519.mjs';
11 import * as smesh$lol$web$common$jsbridge$schnorr from './smesh_lol_web_common_jsbridge_schnorr.mjs';
12 import * as smesh$lol$web$common$jsbridge$subtle from './smesh_lol_web_common_jsbridge_subtle.mjs';
13 import * as smesh$lol$web$common$jsbridge$x25519 from './smesh_lol_web_common_jsbridge_x25519.mjs';
14
15 // Package-level variables
16 export let errInvalidKeySize = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17 export let errAEADOpenFailed = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
18 export let errHPKEDecryptFailed = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19 export let kemSuiteID = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
20 export let hpkeSuiteID = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21 export let errUnexpectedEOF = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
22 export let errVarintOverflow = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23 export let errExcessBytes = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24 export let errInvalidContentType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
25 export let errInvalidSenderType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
26 export let errInvalidWireFormat = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
27 export let errInvalidVersion = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
28 export let errNonZeroPadding = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
29 export let errGroupSecretsNotFound = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
30 export let errKeyPackageVersionMismatch = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
31 export let errKeyPackageSuiteMismatch = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
32 export let errKeyPackageBadSource = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
33 export let errKeyPackageBadSignature = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
34 export let errKeyPackageKeysMatch = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
35 export let errInvalidPSKType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
36 export let errInvalidPSKUsage = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
37 export let errInvalidProposalOrRefType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
38 export let secretLabelInit = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
39 export let secretLabelSenderData = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
40 export let secretLabelEncryption = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
41 export let secretLabelExporter = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
42 export let secretLabelExternal = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
43 export let secretLabelConfirm = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
44 export let secretLabelMembership = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
45 export let secretLabelResumption = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
46 export let secretLabelAuthentication = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
47 export let errInvalidProposalType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
48 export let errDupAddKey = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
49 export let errUpdateByCommitter = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
50 export let errDupUpdateOrRemove = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
51 export let errRemoveCommitter = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
52 export let errDupPSK = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
53 export let errDupGroupContextExts = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
54 export let errReinitWithOther = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
55 export let errExternalInitNotAllowed = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
56 export let ratchetLabelHandshake = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
57 export let ratchetLabelApplication = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
58 export let ksEpochs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
59 export let stEntries = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
60 export let hexchars = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
61 export let treeMathVectors = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
62 export let errInvalidLeafNodeSource = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
63 export let errInvalidNodeType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
64 export let errNodeKeyMismatch = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
65 export let errInvalidCredentialType = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
66
67 $rt.types.registerType('smesh.lol/web/common/mls.hpkeSealer', {
68 id: 'smesh.lol/web/common/mls.hpkeSealer',
69 kind: 'struct',
70 methods: new Map(),
71 fields: [
72 { name: 'key', type: '[]byte', tag: '', embedded: false },
73 { name: 'nonce', type: '[]byte', tag: '', embedded: false },
74 ],
75 zero: () => ({ key: null, nonce: null }),
76 });
77 $rt.types.registerType('smesh.lol/web/common/mls.hpkeOpener', {
78 id: 'smesh.lol/web/common/mls.hpkeOpener',
79 kind: 'struct',
80 methods: new Map(),
81 fields: [
82 { name: 'key', type: '[]byte', tag: '', embedded: false },
83 { name: 'nonce', type: '[]byte', tag: '', embedded: false },
84 ],
85 zero: () => ({ key: null, nonce: null }),
86 });
87 $rt.types.registerType('smesh.lol/web/common/mls.Reader', {
88 id: 'smesh.lol/web/common/mls.Reader',
89 kind: 'struct',
90 methods: new Map(),
91 fields: [
92 { name: 'data', type: '[]byte', tag: '', embedded: false },
93 { name: 'pos', type: 'int', tag: '', embedded: false },
94 ],
95 zero: () => ({ data: null, pos: 0 }),
96 });
97 $rt.types.registerType('smesh.lol/web/common/mls.Writer', {
98 id: 'smesh.lol/web/common/mls.Writer',
99 kind: 'struct',
100 methods: new Map(),
101 fields: [
102 { name: 'buf', type: '[]byte', tag: '', embedded: false },
103 { name: 'err', type: 'error', tag: '', embedded: false },
104 ],
105 zero: () => ({ buf: null, err: null }),
106 });
107 $rt.types.registerType('smesh.lol/web/common/mls.unmarshaler', {
108 id: 'smesh.lol/web/common/mls.unmarshaler',
109 kind: 'interface',
110 methods: new Map([
111 ['unmarshal', null],
112 ]),
113 });
114 $rt.types.registerType('smesh.lol/web/common/mls.marshaler', {
115 id: 'smesh.lol/web/common/mls.marshaler',
116 kind: 'interface',
117 methods: new Map([
118 ['marshal', null],
119 ]),
120 });
121 $rt.types.registerType('smesh.lol/web/common/mls.sender', {
122 id: 'smesh.lol/web/common/mls.sender',
123 kind: 'struct',
124 methods: new Map(),
125 fields: [
126 { name: 'senderType', type: 'smesh.lol/web/common/mls.senderType', tag: '', embedded: false },
127 { name: 'leafIndex', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
128 { name: 'senderIndex', type: 'uint32', tag: '', embedded: false },
129 ],
130 zero: () => ({ senderType: 0, leafIndex: 0, senderIndex: 0 }),
131 });
132 $rt.types.registerType('smesh.lol/web/common/mls.framedContent', {
133 id: 'smesh.lol/web/common/mls.framedContent',
134 kind: 'struct',
135 methods: new Map(),
136 fields: [
137 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
138 { name: 'epoch', type: 'uint64', tag: '', embedded: false },
139 { name: 'sender', type: 'smesh.lol/web/common/mls.sender', tag: '', embedded: false },
140 { name: 'authenticatedData', type: '[]byte', tag: '', embedded: false },
141 { name: 'contentType', type: 'smesh.lol/web/common/mls.contentType', tag: '', embedded: false },
142 { name: 'applicationData', type: '[]byte', tag: '', embedded: false },
143 { name: 'proposal', type: '*smesh.lol/web/common/mls.proposal', tag: '', embedded: false },
144 { name: 'commit', type: '*smesh.lol/web/common/mls.commit', tag: '', embedded: false },
145 ],
146 zero: () => ({ groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }),
147 });
148 $rt.types.registerType('smesh.lol/web/common/mls.mlsMessage', {
149 id: 'smesh.lol/web/common/mls.mlsMessage',
150 kind: 'struct',
151 methods: new Map(),
152 fields: [
153 { name: 'version', type: 'smesh.lol/web/common/mls.protocolVersion', tag: '', embedded: false },
154 { name: 'wireFormat', type: 'smesh.lol/web/common/mls.wireFormat', tag: '', embedded: false },
155 { name: 'publicMessage', type: '*smesh.lol/web/common/mls.publicMessage', tag: '', embedded: false },
156 { name: 'privateMessage', type: '*smesh.lol/web/common/mls.privateMessage', tag: '', embedded: false },
157 { name: 'welcome', type: '*smesh.lol/web/common/mls.Welcome', tag: '', embedded: false },
158 { name: 'groupInfo', type: '*smesh.lol/web/common/mls.groupInfo', tag: '', embedded: false },
159 { name: 'keyPackage', type: '*smesh.lol/web/common/mls.KeyPackage', tag: '', embedded: false },
160 ],
161 zero: () => ({ version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }),
162 });
163 $rt.types.registerType('smesh.lol/web/common/mls.framedContentAuthData', {
164 id: 'smesh.lol/web/common/mls.framedContentAuthData',
165 kind: 'struct',
166 methods: new Map(),
167 fields: [
168 { name: 'signature', type: '[]byte', tag: '', embedded: false },
169 { name: 'confirmationTag', type: '[]byte', tag: '', embedded: false },
170 ],
171 zero: () => ({ signature: null, confirmationTag: null }),
172 });
173 $rt.types.registerType('smesh.lol/web/common/mls.authenticatedContent', {
174 id: 'smesh.lol/web/common/mls.authenticatedContent',
175 kind: 'struct',
176 methods: new Map(),
177 fields: [
178 { name: 'wireFormat', type: 'smesh.lol/web/common/mls.wireFormat', tag: '', embedded: false },
179 { name: 'content', type: 'smesh.lol/web/common/mls.framedContent', tag: '', embedded: false },
180 { name: 'auth', type: 'smesh.lol/web/common/mls.framedContentAuthData', tag: '', embedded: false },
181 ],
182 zero: () => ({ wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null } }),
183 });
184 $rt.types.registerType('smesh.lol/web/common/mls.framedContentTBS', {
185 id: 'smesh.lol/web/common/mls.framedContentTBS',
186 kind: 'struct',
187 methods: new Map(),
188 fields: [
189 { name: 'version', type: 'smesh.lol/web/common/mls.protocolVersion', tag: '', embedded: false },
190 { name: 'wireFormat', type: 'smesh.lol/web/common/mls.wireFormat', tag: '', embedded: false },
191 { name: 'content', type: 'smesh.lol/web/common/mls.framedContent', tag: '', embedded: false },
192 { name: 'context', type: '*smesh.lol/web/common/mls.groupContext', tag: '', embedded: false },
193 ],
194 zero: () => ({ version: 0, wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, context: null }),
195 });
196 $rt.types.registerType('smesh.lol/web/common/mls.publicMessage', {
197 id: 'smesh.lol/web/common/mls.publicMessage',
198 kind: 'struct',
199 methods: new Map(),
200 fields: [
201 { name: 'content', type: 'smesh.lol/web/common/mls.framedContent', tag: '', embedded: false },
202 { name: 'auth', type: 'smesh.lol/web/common/mls.framedContentAuthData', tag: '', embedded: false },
203 { name: 'membershipTag', type: '[]byte', tag: '', embedded: false },
204 ],
205 zero: () => ({ content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null }, membershipTag: null }),
206 });
207 $rt.types.registerType('smesh.lol/web/common/mls.authenticatedContentTBM', {
208 id: 'smesh.lol/web/common/mls.authenticatedContentTBM',
209 kind: 'struct',
210 methods: new Map(),
211 fields: [
212 { name: 'contentTBS', type: 'smesh.lol/web/common/mls.framedContentTBS', tag: '', embedded: false },
213 { name: 'auth', type: 'smesh.lol/web/common/mls.framedContentAuthData', tag: '', embedded: false },
214 ],
215 zero: () => ({ contentTBS: { version: 0, wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, context: null }, auth: { signature: null, confirmationTag: null } }),
216 });
217 $rt.types.registerType('smesh.lol/web/common/mls.privateMessage', {
218 id: 'smesh.lol/web/common/mls.privateMessage',
219 kind: 'struct',
220 methods: new Map(),
221 fields: [
222 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
223 { name: 'epoch', type: 'uint64', tag: '', embedded: false },
224 { name: 'contentType', type: 'smesh.lol/web/common/mls.contentType', tag: '', embedded: false },
225 { name: 'authenticatedData', type: '[]byte', tag: '', embedded: false },
226 { name: 'encryptedSenderData', type: '[]byte', tag: '', embedded: false },
227 { name: 'ciphertext', type: '[]byte', tag: '', embedded: false },
228 ],
229 zero: () => ({ groupID: null, epoch: 0n, contentType: 0, authenticatedData: null, encryptedSenderData: null, ciphertext: null }),
230 });
231 $rt.types.registerType('smesh.lol/web/common/mls.senderDataAAD', {
232 id: 'smesh.lol/web/common/mls.senderDataAAD',
233 kind: 'struct',
234 methods: new Map(),
235 fields: [
236 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
237 { name: 'epoch', type: 'uint64', tag: '', embedded: false },
238 { name: 'contentType', type: 'smesh.lol/web/common/mls.contentType', tag: '', embedded: false },
239 ],
240 zero: () => ({ groupID: null, epoch: 0n, contentType: 0 }),
241 });
242 $rt.types.registerType('smesh.lol/web/common/mls.privateContentAAD', {
243 id: 'smesh.lol/web/common/mls.privateContentAAD',
244 kind: 'struct',
245 methods: new Map(),
246 fields: [
247 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
248 { name: 'epoch', type: 'uint64', tag: '', embedded: false },
249 { name: 'contentType', type: 'smesh.lol/web/common/mls.contentType', tag: '', embedded: false },
250 { name: 'authenticatedData', type: '[]byte', tag: '', embedded: false },
251 ],
252 zero: () => ({ groupID: null, epoch: 0n, contentType: 0, authenticatedData: null }),
253 });
254 $rt.types.registerType('smesh.lol/web/common/mls.privateMessageContent', {
255 id: 'smesh.lol/web/common/mls.privateMessageContent',
256 kind: 'struct',
257 methods: new Map(),
258 fields: [
259 { name: 'applicationData', type: '[]byte', tag: '', embedded: false },
260 { name: 'proposal', type: '*smesh.lol/web/common/mls.proposal', tag: '', embedded: false },
261 { name: 'commit', type: '*smesh.lol/web/common/mls.commit', tag: '', embedded: false },
262 { name: 'auth', type: 'smesh.lol/web/common/mls.framedContentAuthData', tag: '', embedded: false },
263 ],
264 zero: () => ({ applicationData: null, proposal: null, commit: null, auth: { signature: null, confirmationTag: null } }),
265 });
266 $rt.types.registerType('smesh.lol/web/common/mls.senderData', {
267 id: 'smesh.lol/web/common/mls.senderData',
268 kind: 'struct',
269 methods: new Map(),
270 fields: [
271 { name: 'leafIndex', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
272 { name: 'generation', type: 'uint32', tag: '', embedded: false },
273 { name: 'reuseGuard', type: '[4]byte', tag: '', embedded: false },
274 ],
275 zero: () => ({ leafIndex: 0, generation: 0, reuseGuard: $rt.builtin.makeSlice(4, 4, 0) }),
276 });
277 $rt.types.registerType('smesh.lol/web/common/mls.pendingProposal', {
278 id: 'smesh.lol/web/common/mls.pendingProposal',
279 kind: 'struct',
280 methods: new Map(),
281 fields: [
282 { name: 'ref', type: 'smesh.lol/web/common/mls.proposalRef', tag: '', embedded: false },
283 { name: 'proposal', type: '*smesh.lol/web/common/mls.proposal', tag: '', embedded: false },
284 { name: 'sender', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
285 ],
286 zero: () => ({ ref: null, proposal: null, sender: 0 }),
287 });
288 $rt.types.registerType('smesh.lol/web/common/mls.Group', {
289 id: 'smesh.lol/web/common/mls.Group',
290 kind: 'struct',
291 methods: new Map(),
292 fields: [
293 { name: 'tree', type: 'smesh.lol/web/common/mls.ratchetTree', tag: '', embedded: false },
294 { name: 'groupContext', type: 'smesh.lol/web/common/mls.groupContext', tag: '', embedded: false },
295 { name: 'interimTranscriptHash', type: '[]byte', tag: '', embedded: false },
296 { name: 'pskSecret', type: '[]byte', tag: '', embedded: false },
297 { name: 'epochSecret', type: '[]byte', tag: '', embedded: false },
298 { name: 'initSecret', type: '[]byte', tag: '', embedded: false },
299 { name: 'myLeafIndex', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
300 { name: 'privTree', type: '[]smesh.lol/web/common/mls.hpkePrivateKey', tag: '', embedded: false },
301 { name: 'signaturePriv', type: 'smesh.lol/web/common/mls.signaturePrivateKey', tag: '', embedded: false },
302 { name: 'pendingProposals', type: '[]smesh.lol/web/common/mls.pendingProposal', tag: '', embedded: false },
303 ],
304 zero: () => ({ tree: null, groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, interimTranscriptHash: null, pskSecret: null, epochSecret: null, initSecret: null, myLeafIndex: 0, privTree: null, signaturePriv: null, pendingProposals: null }),
305 });
306 $rt.types.registerType('smesh.lol/web/common/mls.GroupOptions', {
307 id: 'smesh.lol/web/common/mls.GroupOptions',
308 kind: 'struct',
309 methods: new Map(),
310 fields: [
311 { name: 'Extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
312 ],
313 zero: () => ({ Extensions: null }),
314 });
315 $rt.types.registerType('smesh.lol/web/common/mls.commit', {
316 id: 'smesh.lol/web/common/mls.commit',
317 kind: 'struct',
318 methods: new Map(),
319 fields: [
320 { name: 'proposals', type: '[]smesh.lol/web/common/mls.proposalOrRef', tag: '', embedded: false },
321 { name: 'path', type: '*smesh.lol/web/common/mls.updatePath', tag: '', embedded: false },
322 ],
323 zero: () => ({ proposals: null, path: null }),
324 });
325 $rt.types.registerType('smesh.lol/web/common/mls.groupInfo', {
326 id: 'smesh.lol/web/common/mls.groupInfo',
327 kind: 'struct',
328 methods: new Map(),
329 fields: [
330 { name: 'groupContext', type: 'smesh.lol/web/common/mls.groupContext', tag: '', embedded: false },
331 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
332 { name: 'confirmationTag', type: '[]byte', tag: '', embedded: false },
333 { name: 'signer', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
334 { name: 'signature', type: '[]byte', tag: '', embedded: false },
335 ],
336 zero: () => ({ groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, extensions: null, confirmationTag: null, signer: 0, signature: null }),
337 });
338 $rt.types.registerType('smesh.lol/web/common/mls.groupSecrets', {
339 id: 'smesh.lol/web/common/mls.groupSecrets',
340 kind: 'struct',
341 methods: new Map(),
342 fields: [
343 { name: 'joinerSecret', type: '[]byte', tag: '', embedded: false },
344 { name: 'pathSecret', type: '[]byte', tag: '', embedded: false },
345 { name: 'psks', type: '[]smesh.lol/web/common/mls.preSharedKeyID', tag: '', embedded: false },
346 ],
347 zero: () => ({ joinerSecret: null, pathSecret: null, psks: null }),
348 });
349 $rt.types.registerType('smesh.lol/web/common/mls.encryptedGroupSecrets', {
350 id: 'smesh.lol/web/common/mls.encryptedGroupSecrets',
351 kind: 'struct',
352 methods: new Map(),
353 fields: [
354 { name: 'newMember', type: 'smesh.lol/web/common/mls.KeyPackageRef', tag: '', embedded: false },
355 { name: 'encryptedGroupSecrets', type: 'smesh.lol/web/common/mls.hpkeCiphertext', tag: '', embedded: false },
356 ],
357 zero: () => ({ newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }),
358 });
359 $rt.types.registerType('smesh.lol/web/common/mls.Welcome', {
360 id: 'smesh.lol/web/common/mls.Welcome',
361 kind: 'struct',
362 methods: new Map(),
363 fields: [
364 { name: 'cipherSuite', type: 'smesh.lol/web/common/mls.CipherSuite', tag: '', embedded: false },
365 { name: 'secrets', type: '[]smesh.lol/web/common/mls.encryptedGroupSecrets', tag: '', embedded: false },
366 { name: 'encryptedGroupInfo', type: '[]byte', tag: '', embedded: false },
367 ],
368 zero: () => ({ cipherSuite: 0, secrets: null, encryptedGroupInfo: null }),
369 });
370 $rt.types.registerType('smesh.lol/web/common/mls.KeyPackage', {
371 id: 'smesh.lol/web/common/mls.KeyPackage',
372 kind: 'struct',
373 methods: new Map(),
374 fields: [
375 { name: 'version', type: 'smesh.lol/web/common/mls.protocolVersion', tag: '', embedded: false },
376 { name: 'cipherSuite', type: 'smesh.lol/web/common/mls.CipherSuite', tag: '', embedded: false },
377 { name: 'initKey', type: 'smesh.lol/web/common/mls.hpkePublicKey', tag: '', embedded: false },
378 { name: 'leafNode', type: 'smesh.lol/web/common/mls.leafNode', tag: '', embedded: false },
379 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
380 { name: 'signature', type: '[]byte', tag: '', embedded: false },
381 ],
382 zero: () => ({ version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }),
383 });
384 $rt.types.registerType('smesh.lol/web/common/mls.PrivateKeyPackage', {
385 id: 'smesh.lol/web/common/mls.PrivateKeyPackage',
386 kind: 'struct',
387 methods: new Map(),
388 fields: [
389 { name: 'InitKey', type: '[]byte', tag: '', embedded: false },
390 { name: 'EncryptionKey', type: '[]byte', tag: '', embedded: false },
391 { name: 'SignatureKey', type: '[]byte', tag: '', embedded: false },
392 ],
393 zero: () => ({ InitKey: null, EncryptionKey: null, SignatureKey: null }),
394 });
395 $rt.types.registerType('smesh.lol/web/common/mls.KeyPairPackage', {
396 id: 'smesh.lol/web/common/mls.KeyPairPackage',
397 kind: 'struct',
398 methods: new Map(),
399 fields: [
400 { name: 'Public', type: 'smesh.lol/web/common/mls.KeyPackage', tag: '', embedded: false },
401 { name: 'Private', type: 'smesh.lol/web/common/mls.PrivateKeyPackage', tag: '', embedded: false },
402 ],
403 zero: () => ({ Public: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }, Private: { InitKey: null, EncryptionKey: null, SignatureKey: null } }),
404 });
405 $rt.types.registerType('smesh.lol/web/common/mls.KeyPackageOptions', {
406 id: 'smesh.lol/web/common/mls.KeyPackageOptions',
407 kind: 'struct',
408 methods: new Map(),
409 fields: [
410 { name: 'CapabilityExtensions', type: '[]smesh.lol/web/common/mls.extensionType', tag: '', embedded: false },
411 { name: 'LeafExtensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
412 { name: 'KeyPackageExtensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
413 ],
414 zero: () => ({ CapabilityExtensions: null, LeafExtensions: null, KeyPackageExtensions: null }),
415 });
416 $rt.types.registerType('smesh.lol/web/common/mls.groupContext', {
417 id: 'smesh.lol/web/common/mls.groupContext',
418 kind: 'struct',
419 methods: new Map(),
420 fields: [
421 { name: 'version', type: 'smesh.lol/web/common/mls.protocolVersion', tag: '', embedded: false },
422 { name: 'cipherSuite', type: 'smesh.lol/web/common/mls.CipherSuite', tag: '', embedded: false },
423 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
424 { name: 'epoch', type: 'uint64', tag: '', embedded: false },
425 { name: 'treeHash', type: '[]byte', tag: '', embedded: false },
426 { name: 'confirmedTranscriptHash', type: '[]byte', tag: '', embedded: false },
427 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
428 ],
429 zero: () => ({ version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }),
430 });
431 $rt.types.registerType('smesh.lol/web/common/mls.confirmedTranscriptHashInput', {
432 id: 'smesh.lol/web/common/mls.confirmedTranscriptHashInput',
433 kind: 'struct',
434 methods: new Map(),
435 fields: [
436 { name: 'wireFormat', type: 'smesh.lol/web/common/mls.wireFormat', tag: '', embedded: false },
437 { name: 'content', type: 'smesh.lol/web/common/mls.framedContent', tag: '', embedded: false },
438 { name: 'signature', type: '[]byte', tag: '', embedded: false },
439 ],
440 zero: () => ({ wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, signature: null }),
441 });
442 $rt.types.registerType('smesh.lol/web/common/mls.preSharedKeyID', {
443 id: 'smesh.lol/web/common/mls.preSharedKeyID',
444 kind: 'struct',
445 methods: new Map(),
446 fields: [
447 { name: 'pskType', type: 'smesh.lol/web/common/mls.pskType', tag: '', embedded: false },
448 { name: 'pskID', type: '[]byte', tag: '', embedded: false },
449 { name: 'usage', type: 'smesh.lol/web/common/mls.resumptionPSKUsage', tag: '', embedded: false },
450 { name: 'pskGroupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
451 { name: 'pskEpoch', type: 'uint64', tag: '', embedded: false },
452 { name: 'pskNonce', type: '[]byte', tag: '', embedded: false },
453 ],
454 zero: () => ({ pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }),
455 });
456 $rt.types.registerType('smesh.lol/web/common/mls.pskLabel', {
457 id: 'smesh.lol/web/common/mls.pskLabel',
458 kind: 'struct',
459 methods: new Map(),
460 fields: [
461 { name: 'id', type: 'smesh.lol/web/common/mls.preSharedKeyID', tag: '', embedded: false },
462 { name: 'index', type: 'uint16', tag: '', embedded: false },
463 { name: 'count', type: 'uint16', tag: '', embedded: false },
464 ],
465 zero: () => ({ id: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }, index: 0, count: 0 }),
466 });
467 $rt.types.registerType('smesh.lol/web/common/mls.proposal', {
468 id: 'smesh.lol/web/common/mls.proposal',
469 kind: 'struct',
470 methods: new Map(),
471 fields: [
472 { name: 'proposalType', type: 'smesh.lol/web/common/mls.proposalType', tag: '', embedded: false },
473 { name: 'add', type: '*smesh.lol/web/common/mls.add', tag: '', embedded: false },
474 { name: 'update', type: '*smesh.lol/web/common/mls.update', tag: '', embedded: false },
475 { name: 'remove', type: '*smesh.lol/web/common/mls.remove', tag: '', embedded: false },
476 { name: 'preSharedKey', type: '*smesh.lol/web/common/mls.preSharedKey', tag: '', embedded: false },
477 { name: 'reInit', type: '*smesh.lol/web/common/mls.reInit', tag: '', embedded: false },
478 { name: 'externalInit', type: '*smesh.lol/web/common/mls.externalInit', tag: '', embedded: false },
479 { name: 'groupContextExtensions', type: '*smesh.lol/web/common/mls.groupContextExtensions', tag: '', embedded: false },
480 ],
481 zero: () => ({ proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }),
482 });
483 $rt.types.registerType('smesh.lol/web/common/mls.add', {
484 id: 'smesh.lol/web/common/mls.add',
485 kind: 'struct',
486 methods: new Map(),
487 fields: [
488 { name: 'keyPackage', type: 'smesh.lol/web/common/mls.KeyPackage', tag: '', embedded: false },
489 ],
490 zero: () => ({ keyPackage: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null } }),
491 });
492 $rt.types.registerType('smesh.lol/web/common/mls.update', {
493 id: 'smesh.lol/web/common/mls.update',
494 kind: 'struct',
495 methods: new Map(),
496 fields: [
497 { name: 'leafNode', type: 'smesh.lol/web/common/mls.leafNode', tag: '', embedded: false },
498 ],
499 zero: () => ({ leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null } }),
500 });
501 $rt.types.registerType('smesh.lol/web/common/mls.remove', {
502 id: 'smesh.lol/web/common/mls.remove',
503 kind: 'struct',
504 methods: new Map(),
505 fields: [
506 { name: 'removed', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
507 ],
508 zero: () => ({ removed: 0 }),
509 });
510 $rt.types.registerType('smesh.lol/web/common/mls.preSharedKey', {
511 id: 'smesh.lol/web/common/mls.preSharedKey',
512 kind: 'struct',
513 methods: new Map(),
514 fields: [
515 { name: 'psk', type: 'smesh.lol/web/common/mls.preSharedKeyID', tag: '', embedded: false },
516 ],
517 zero: () => ({ psk: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null } }),
518 });
519 $rt.types.registerType('smesh.lol/web/common/mls.reInit', {
520 id: 'smesh.lol/web/common/mls.reInit',
521 kind: 'struct',
522 methods: new Map(),
523 fields: [
524 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
525 { name: 'version', type: 'smesh.lol/web/common/mls.protocolVersion', tag: '', embedded: false },
526 { name: 'cipherSuite', type: 'smesh.lol/web/common/mls.CipherSuite', tag: '', embedded: false },
527 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
528 ],
529 zero: () => ({ groupID: null, version: 0, cipherSuite: 0, extensions: null }),
530 });
531 $rt.types.registerType('smesh.lol/web/common/mls.externalInit', {
532 id: 'smesh.lol/web/common/mls.externalInit',
533 kind: 'struct',
534 methods: new Map(),
535 fields: [
536 { name: 'kemOutput', type: '[]byte', tag: '', embedded: false },
537 ],
538 zero: () => ({ kemOutput: null }),
539 });
540 $rt.types.registerType('smesh.lol/web/common/mls.groupContextExtensions', {
541 id: 'smesh.lol/web/common/mls.groupContextExtensions',
542 kind: 'struct',
543 methods: new Map(),
544 fields: [
545 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
546 ],
547 zero: () => ({ extensions: null }),
548 });
549 $rt.types.registerType('smesh.lol/web/common/mls.proposalOrRef', {
550 id: 'smesh.lol/web/common/mls.proposalOrRef',
551 kind: 'struct',
552 methods: new Map(),
553 fields: [
554 { name: 'typ', type: 'smesh.lol/web/common/mls.proposalOrRefType', tag: '', embedded: false },
555 { name: 'proposal', type: '*smesh.lol/web/common/mls.proposal', tag: '', embedded: false },
556 { name: 'reference', type: 'smesh.lol/web/common/mls.proposalRef', tag: '', embedded: false },
557 ],
558 zero: () => ({ typ: 0, proposal: null, reference: null }),
559 });
560 $rt.types.registerType('smesh.lol/web/common/mls.ratchetSecret', {
561 id: 'smesh.lol/web/common/mls.ratchetSecret',
562 kind: 'struct',
563 methods: new Map(),
564 fields: [
565 { name: 'secret', type: '[]byte', tag: '', embedded: false },
566 { name: 'generation', type: 'uint32', tag: '', embedded: false },
567 ],
568 zero: () => ({ secret: null, generation: 0 }),
569 });
570 $rt.types.registerType('smesh.lol/web/common/mls.ksEpoch', {
571 id: 'smesh.lol/web/common/mls.ksEpoch',
572 kind: 'struct',
573 methods: new Map(),
574 fields: [
575 { name: 'commitSecret', type: '[]byte', tag: '', embedded: false },
576 { name: 'treeHash', type: '[]byte', tag: '', embedded: false },
577 { name: 'confirmedTranscriptHash', type: '[]byte', tag: '', embedded: false },
578 { name: 'pskSecret', type: '[]byte', tag: '', embedded: false },
579 { name: 'groupContext', type: '[]byte', tag: '', embedded: false },
580 { name: 'joinerSecret', type: '[]byte', tag: '', embedded: false },
581 { name: 'welcomeSecret', type: '[]byte', tag: '', embedded: false },
582 { name: 'initSecret', type: '[]byte', tag: '', embedded: false },
583 { name: 'senderDataSecret', type: '[]byte', tag: '', embedded: false },
584 { name: 'encryptionSecret', type: '[]byte', tag: '', embedded: false },
585 { name: 'exporterSecret', type: '[]byte', tag: '', embedded: false },
586 { name: 'externalSecret', type: '[]byte', tag: '', embedded: false },
587 { name: 'confirmationKey', type: '[]byte', tag: '', embedded: false },
588 { name: 'membershipKey', type: '[]byte', tag: '', embedded: false },
589 { name: 'resumptionPSK', type: '[]byte', tag: '', embedded: false },
590 { name: 'epochAuthenticator', type: '[]byte', tag: '', embedded: false },
591 { name: 'externalPub', type: '[]byte', tag: '', embedded: false },
592 { name: 'exporterLabel', type: '[]byte', tag: '', embedded: false },
593 { name: 'exporterContext', type: '[]byte', tag: '', embedded: false },
594 { name: 'exporterLength', type: 'int', tag: '', embedded: false },
595 { name: 'exporterValue', type: '[]byte', tag: '', embedded: false },
596 ],
597 zero: () => ({ commitSecret: null, treeHash: null, confirmedTranscriptHash: null, pskSecret: null, groupContext: null, joinerSecret: null, welcomeSecret: null, initSecret: null, senderDataSecret: null, encryptionSecret: null, exporterSecret: null, externalSecret: null, confirmationKey: null, membershipKey: null, resumptionPSK: null, epochAuthenticator: null, externalPub: null, exporterLabel: null, exporterContext: null, exporterLength: 0, exporterValue: null }),
598 });
599 $rt.types.registerType('smesh.lol/web/common/mls.stGen', {
600 id: 'smesh.lol/web/common/mls.stGen',
601 kind: 'struct',
602 methods: new Map(),
603 fields: [
604 { name: 'generation', type: 'uint32', tag: '', embedded: false },
605 { name: 'appKey', type: '[]byte', tag: '', embedded: false },
606 { name: 'appNonce', type: '[]byte', tag: '', embedded: false },
607 { name: 'hsKey', type: '[]byte', tag: '', embedded: false },
608 { name: 'hsNonce', type: '[]byte', tag: '', embedded: false },
609 ],
610 zero: () => ({ generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }),
611 });
612 $rt.types.registerType('smesh.lol/web/common/mls.stLeaf', {
613 id: 'smesh.lol/web/common/mls.stLeaf',
614 kind: 'struct',
615 methods: new Map(),
616 fields: [
617 { name: 'gens', type: '[]smesh.lol/web/common/mls.stGen', tag: '', embedded: false },
618 ],
619 zero: () => ({ gens: null }),
620 });
621 $rt.types.registerType('smesh.lol/web/common/mls.stEntry', {
622 id: 'smesh.lol/web/common/mls.stEntry',
623 kind: 'struct',
624 methods: new Map(),
625 fields: [
626 { name: 'numLeaves', type: 'uint', tag: '', embedded: false },
627 { name: 'encryptionSecret', type: '[]byte', tag: '', embedded: false },
628 { name: 'sdSecret', type: '[]byte', tag: '', embedded: false },
629 { name: 'sdCiphertext', type: '[]byte', tag: '', embedded: false },
630 { name: 'sdKey', type: '[]byte', tag: '', embedded: false },
631 { name: 'sdNonce', type: '[]byte', tag: '', embedded: false },
632 { name: 'leaves', type: '[]smesh.lol/web/common/mls.stLeaf', tag: '', embedded: false },
633 ],
634 zero: () => ({ numLeaves: 0, encryptionSecret: null, sdSecret: null, sdCiphertext: null, sdKey: null, sdNonce: null, leaves: null }),
635 });
636 $rt.types.registerType('smesh.lol/web/common/mls.treeMathVector', {
637 id: 'smesh.lol/web/common/mls.treeMathVector',
638 kind: 'struct',
639 methods: new Map(),
640 fields: [
641 { name: 'nLeaves', type: 'uint', tag: '', embedded: false },
642 { name: 'nNodes', type: 'uint', tag: '', embedded: false },
643 { name: 'root', type: 'uint', tag: '', embedded: false },
644 { name: 'left', type: '[]int', tag: '', embedded: false },
645 { name: 'right', type: '[]int', tag: '', embedded: false },
646 { name: 'parent', type: '[]int', tag: '', embedded: false },
647 { name: 'sibling', type: '[]int', tag: '', embedded: false },
648 ],
649 zero: () => ({ nLeaves: 0, nNodes: 0, root: 0, left: null, right: null, parent: null, sibling: null }),
650 });
651 $rt.types.registerType('smesh.lol/web/common/mls.parentNode', {
652 id: 'smesh.lol/web/common/mls.parentNode',
653 kind: 'struct',
654 methods: new Map(),
655 fields: [
656 { name: 'encryptionKey', type: 'smesh.lol/web/common/mls.hpkePublicKey', tag: '', embedded: false },
657 { name: 'parentHash', type: '[]byte', tag: '', embedded: false },
658 { name: 'unmergedLeaves', type: '[]smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
659 ],
660 zero: () => ({ encryptionKey: null, parentHash: null, unmergedLeaves: null }),
661 });
662 $rt.types.registerType('smesh.lol/web/common/mls.capabilities', {
663 id: 'smesh.lol/web/common/mls.capabilities',
664 kind: 'struct',
665 methods: new Map(),
666 fields: [
667 { name: 'versions', type: '[]smesh.lol/web/common/mls.protocolVersion', tag: '', embedded: false },
668 { name: 'cipherSuites', type: '[]smesh.lol/web/common/mls.CipherSuite', tag: '', embedded: false },
669 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extensionType', tag: '', embedded: false },
670 { name: 'proposals', type: '[]smesh.lol/web/common/mls.proposalType', tag: '', embedded: false },
671 { name: 'credentials', type: '[]smesh.lol/web/common/mls.credentialType', tag: '', embedded: false },
672 ],
673 zero: () => ({ versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }),
674 });
675 $rt.types.registerType('smesh.lol/web/common/mls.lifetime', {
676 id: 'smesh.lol/web/common/mls.lifetime',
677 kind: 'struct',
678 methods: new Map(),
679 fields: [
680 { name: 'notBefore', type: 'uint64', tag: '', embedded: false },
681 { name: 'notAfter', type: 'uint64', tag: '', embedded: false },
682 ],
683 zero: () => ({ notBefore: 0n, notAfter: 0n }),
684 });
685 $rt.types.registerType('smesh.lol/web/common/mls.extension', {
686 id: 'smesh.lol/web/common/mls.extension',
687 kind: 'struct',
688 methods: new Map(),
689 fields: [
690 { name: 'extensionType', type: 'smesh.lol/web/common/mls.extensionType', tag: '', embedded: false },
691 { name: 'extensionData', type: '[]byte', tag: '', embedded: false },
692 ],
693 zero: () => ({ extensionType: 0, extensionData: null }),
694 });
695 $rt.types.registerType('smesh.lol/web/common/mls.leafNode', {
696 id: 'smesh.lol/web/common/mls.leafNode',
697 kind: 'struct',
698 methods: new Map(),
699 fields: [
700 { name: 'encryptionKey', type: 'smesh.lol/web/common/mls.hpkePublicKey', tag: '', embedded: false },
701 { name: 'signatureKey', type: 'smesh.lol/web/common/mls.signaturePublicKey', tag: '', embedded: false },
702 { name: 'credential', type: 'smesh.lol/web/common/mls.Credential', tag: '', embedded: false },
703 { name: 'capabilities', type: 'smesh.lol/web/common/mls.capabilities', tag: '', embedded: false },
704 { name: 'leafNodeSource', type: 'smesh.lol/web/common/mls.leafNodeSource', tag: '', embedded: false },
705 { name: 'lifetime', type: '*smesh.lol/web/common/mls.lifetime', tag: '', embedded: false },
706 { name: 'parentHash', type: '[]byte', tag: '', embedded: false },
707 { name: 'extensions', type: '[]smesh.lol/web/common/mls.extension', tag: '', embedded: false },
708 { name: 'signature', type: '[]byte', tag: '', embedded: false },
709 ],
710 zero: () => ({ encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }),
711 });
712 $rt.types.registerType('smesh.lol/web/common/mls.leafNodeTBS', {
713 id: 'smesh.lol/web/common/mls.leafNodeTBS',
714 kind: 'struct',
715 methods: new Map(),
716 fields: [
717 { name: 'node', type: '*smesh.lol/web/common/mls.leafNode', tag: '', embedded: false },
718 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
719 { name: 'leafIndex', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
720 ],
721 zero: () => ({ node: null, groupID: null, leafIndex: 0 }),
722 });
723 $rt.types.registerType('smesh.lol/web/common/mls.updatePathNode', {
724 id: 'smesh.lol/web/common/mls.updatePathNode',
725 kind: 'struct',
726 methods: new Map(),
727 fields: [
728 { name: 'encryptionKey', type: 'smesh.lol/web/common/mls.hpkePublicKey', tag: '', embedded: false },
729 { name: 'encryptedPathSecret', type: '[]smesh.lol/web/common/mls.hpkeCiphertext', tag: '', embedded: false },
730 ],
731 zero: () => ({ encryptionKey: null, encryptedPathSecret: null }),
732 });
733 $rt.types.registerType('smesh.lol/web/common/mls.updatePath', {
734 id: 'smesh.lol/web/common/mls.updatePath',
735 kind: 'struct',
736 methods: new Map(),
737 fields: [
738 { name: 'leafNode', type: 'smesh.lol/web/common/mls.leafNode', tag: '', embedded: false },
739 { name: 'nodes', type: '[]smesh.lol/web/common/mls.updatePathNode', tag: '', embedded: false },
740 ],
741 zero: () => ({ leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, nodes: null }),
742 });
743 $rt.types.registerType('smesh.lol/web/common/mls.node', {
744 id: 'smesh.lol/web/common/mls.node',
745 kind: 'struct',
746 methods: new Map(),
747 fields: [
748 { name: 'nodeType', type: 'smesh.lol/web/common/mls.nodeType', tag: '', embedded: false },
749 { name: 'leafNode', type: '*smesh.lol/web/common/mls.leafNode', tag: '', embedded: false },
750 { name: 'parentNode', type: '*smesh.lol/web/common/mls.parentNode', tag: '', embedded: false },
751 ],
752 zero: () => ({ nodeType: 0, leafNode: null, parentNode: null }),
753 });
754 $rt.types.registerType('smesh.lol/web/common/mls.leafNodeVerifyOptions', {
755 id: 'smesh.lol/web/common/mls.leafNodeVerifyOptions',
756 kind: 'struct',
757 methods: new Map(),
758 fields: [
759 { name: 'cipherSuite', type: 'smesh.lol/web/common/mls.CipherSuite', tag: '', embedded: false },
760 { name: 'groupID', type: 'smesh.lol/web/common/mls.GroupID', tag: '', embedded: false },
761 { name: 'leafIndex', type: 'smesh.lol/web/common/mls.leafIndex', tag: '', embedded: false },
762 { name: 'supportedCreds', type: 'map[smesh.lol/web/common/mls.credentialType]bool', tag: '', embedded: false },
763 { name: 'signatureKeys', type: 'map[string]bool', tag: '', embedded: false },
764 { name: 'encryptionKeys', type: 'map[string]bool', tag: '', embedded: false },
765 { name: 'nowUnix', type: 'int64', tag: '', embedded: false },
766 ],
767 zero: () => ({ cipherSuite: 0, groupID: null, leafIndex: 0, supportedCreds: null, signatureKeys: null, encryptionKeys: null, nowUnix: 0n }),
768 });
769 $rt.types.registerType('smesh.lol/web/common/mls.Credential', {
770 id: 'smesh.lol/web/common/mls.Credential',
771 kind: 'struct',
772 methods: new Map(),
773 fields: [
774 { name: 'credentialType', type: 'smesh.lol/web/common/mls.credentialType', tag: '', embedded: false },
775 { name: 'identity', type: '[]byte', tag: '', embedded: false },
776 { name: 'certificates', type: '[][]byte', tag: '', embedded: false },
777 ],
778 zero: () => ({ credentialType: 0, identity: null, certificates: null }),
779 });
780 $rt.types.registerType('smesh.lol/web/common/mls.hpkeCiphertext', {
781 id: 'smesh.lol/web/common/mls.hpkeCiphertext',
782 kind: 'struct',
783 methods: new Map(),
784 fields: [
785 { name: 'kemOutput', type: '[]byte', tag: '', embedded: false },
786 { name: 'ciphertext', type: '[]byte', tag: '', embedded: false },
787 ],
788 zero: () => ({ kemOutput: null, ciphertext: null }),
789 });
790 export function init() {
791 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197, $t197_198, $t198_199, $t199_200, $t200_201, $t201_202, $t202_203, $t203_204, $t204_205, $t205_206, $t206_207, $t207_208, $t208_209, $t209_210, $t210_211, $t211_212, $t212_213, $t213_214, $t214_215, $t215_216, $t216_217, $t217_218, $t218_219, $t219_220, $t220_221, $t221_222, $t222_223, $t223_224, $t224_225, $t225_226, $t226_227, $t227_228, $t228_229, $t229_230, $t230_231, $t231_232, $t232_233, $t233_234, $t234_235, $t235_236, $t236_237, $t237_238, $t238_239, $t239_240, $t240_241, $t241_242, $t242_243, $t243_244, $t244_245, $t245_246, $t246_247, $t247_248, $t248_249, $t249_250, $t250_251, $t251_252, $t252_253, $t253_254, $t254_255, $t255_256, $t256_257, $t257_258, $t258_259, $t259_260, $t260_261, $t261_262, $t262_263, $t263_264, $t264_265, $t265_266, $t266_267, $t267_268, $t268_269, $t269_270, $t270_271, $t271_272, $t272_273, $t273_274, $t274_275, $t275_276, $t276_277, $t277_278, $t278_279, $t279_280, $t280_281, $t281_282, $t282_283, $t283_284, $t284_285, $t285_286, $t286_287, $t287_288, $t288_289, $t289_290, $t290_291, $t291_292, $t292_293, $t293_294, $t294_295, $t295_296, $t296_297, $t297_298, $t298_299, $t299_300, $t300_301, $t301_302, $t302_303, $t303_304, $t304_305, $t305_306, $t306_307, $t307_308, $t308_309, $t309_310, $t310_311, $t311_312, $t312_313, $t313_314, $t314_315, $t315_316, $t316_317, $t317_318, $t318_319, $t319_320, $t320_321, $t321_322, $t322_323, $t323_324, $t324_325, $t325_326, $t326_327, $t327_328, $t328_329, $t329_330, $t330_331, $t331_332, $t332_333, $t333_334, $t334_335, $t335_336, $t336_337, $t337_338, $t338_339, $t339_340, $t340_341, $t341_342, $t342_343, $t343_344, $t344_345, $t345_346, $t346_347, $t347_348, $t348_349, $t349_350, $t350_351, $t351_352, $t352_353, $t353_354, $t354_355, $t355_356, $t356_357, $t357_358, $t358_359, $t359_360, $t360_361, $t361_362, $t362_363, $t363_364, $t364_365, $t365_366, $t366_367, $t367_368, $t368_369, $t369_370, $t370_371, $t371_372, $t372_373, $t373_374, $t374_375, $t375_376, $t376_377, $t377_378, $t378_379, $t379_380, $t380_381, $t381_382, $t382_383, $t383_384, $t384_385, $t385_386, $t386_387, $t387_388, $t388_389, $t389_390, $t390_391, $t391_392, $t392_393, $t393_394, $t394_395, $t395_396, $t396_397, $t397_398, $t398_399, $t399_400, $t400_401, $t401_402, $t402_403, $t403_404, $t404_405, $t405_406, $t406_407, $t407_408, $t408_409, $t409_410, $t410_411, $t411_412, $t412_413, $t413_414, $t414_415, $t415_416, $t416_417, $t417_418, $t418_419, $t419_420, $t420_421, $t421_422, $t422_423, $t423_424, $t424_425, $t425_426, $t426_427, $t427_428, $t428_429, $t429_430, $t430_431, $t431_432, $t432_433, $t433_434, $t434_435, $t435_436, $t436_437, $t437_438, $t438_439, $t439_440, $t440_441, $t441_442, $t442_443, $t443_444, $t444_445, $t445_446, $t446_447, $t447_448, $t448_449, $t449_450, $t450_451, $t451_452, $t452_453, $t453_454, $t454_455, $t455_456, $t456_457, $t457_458, $t458_459, $t459_460, $t460_461, $t461_462, $t462_463, $t463_464, $t464_465, $t465_466, $t466_467, $t467_468, $t468_469, $t469_470, $t470_471, $t471_472, $t472_473, $t473_474, $t474_475, $t475_476, $t476_477, $t477_478, $t478_479, $t479_480, $t480_481, $t481_482, $t482_483, $t483_484, $t484_485, $t485_486, $t486_487, $t487_488, $t488_489, $t489_490, $t490_491, $t491_492, $t492_493, $t493_494, $t494_495, $t495_496, $t496_497, $t497_498, $t498_499, $t499_500, $t500_501, $t501_502, $t502_503, $t503_504, $t504_505, $t505_506, $t506_507, $t507_508, $t508_509, $t509_510, $t510_511, $t511_512, $t512_513, $t513_514, $t514_515, $t515_516, $t516_517, $t517_518, $t518_519, $t519_520, $t520_521, $t521_522, $t522_523, $t523_524, $t524_525, $t525_526, $t526_527, $t527_528, $t528_529, $t529_530, $t530_531, $t531_532, $t532_533, $t533_534, $t534_535, $t535_536, $t536_537, $t537_538, $t538_539, $t539_540, $t540_541, $t541_542, $t542_543, $t543_544, $t544_545, $t545_546, $t546_547, $t547_548, $t548_549, $t549_550, $t550_551, $t551_552, $t552_553, $t553_554, $t554_555, $t555_556, $t556_557, $t557_558, $t558_559, $t559_560, $t560_561, $t561_562, $t562_563, $t563_564, $t564_565, $t565_566, $t566_567, $t567_568, $t568_569, $t569_570, $t570_571, $t571_572, $t572_573, $t573_574, $t574_575, $t575_576, $t576_577, $t577_578, $t578_579, $t579_580, $t580_581, $t581_582, $t582_583, $t583_584, $t584_585, $t585_586, $t586_587, $t587_588, $t588_589, $t589_590, $t590_591, $t591_592, $t592_593, $t593_594, $t594_595, $t595_596, $t596_597, $t597_598, $t598_599, $t599_600, $t600_601, $t601_602, $t602_603, $t603_604, $t604_605, $t605_606, $t606_607, $t607_608, $t608_609, $t609_610, $t610_611, $t611_612, $t612_613, $t613_614, $t614_615, $t615_616, $t616_617, $t617_618, $t618_619, $t619_620, $t620_621, $t621_622, $t622_623, $t623_624, $t624_625, $t625_626, $t626_627, $t627_628, $t628_629, $t629_630, $t630_631, $t631_632, $t632_633, $t633_634, $t634_635, $t635_636, $t636_637, $t637_638, $t638_639, $t639_640, $t640_641, $t641_642, $t642_643, $t643_644, $t644_645, $t645_646, $t646_647, $t647_648, $t648_649, $t649_650, $t650_651, $t651_652, $t652_653, $t653_654, $t654_655, $t655_656, $t656_657, $t657_658, $t658_659, $t659_660, $t660_661, $t661_662, $t662_663, $t663_664, $t664_665, $t665_666, $t666_667, $t667_668, $t668_669, $t669_670, $t670_671, $t671_672, $t672_673, $t673_674, $t674_675, $t675_676, $t676_677, $t677_678, $t678_679, $t679_680, $t680_681, $t681_682, $t682_683, $t683_684, $t684_685, $t685_686, $t686_687, $t687_688, $t688_689, $t689_690, $t690_691, $t691_692, $t692_693, $t693_694, $t694_695, $t695_696, $t696_697, $t697_698, $t698_699, $t699_700, $t700_701, $t701_702, $t702_703, $t703_704, $t704_705, $t705_706, $t706_707, $t707_708, $t708_709, $t709_710, $t710_711, $t711_712, $t712_713, $t713_714, $t714_715, $t715_716, $t716_717, $t717_718, $t718_719, $t719_720, $t720_721, $t721_722, $t722_723, $t723_724, $t724_725, $t725_726, $t726_727, $t727_728, $t728_729, $t729_730, $t730_731, $t731_732, $t732_733, $t733_734, $t734_735, $t735_736, $t736_737, $t737_738, $t738_739, $t739_740, $t740_741, $t741_742, $t742_743, $t743_744, $t744_745, $t745_746, $t746_747, $t747_748, $t748_749, $t749_750, $t750_751, $t751_752, $t752_753, $t753_754, $t754_755, $t755_756, $t756_757, $t757_758, $t758_759, $t759_760, $t760_761, $t761_762, $t762_763, $t763_764, $t764_765, $t765_766, $t766_767, $t767_768, $t768_769, $t769_770, $t770_771, $t771_772, $t772_773, $t773_774, $t774_775, $t775_776, $t776_777, $t777_778, $t778_779, $t779_780, $t780_781, $t781_782, $t782_783, $t783_784, $t784_785, $t785_786, $t786_787, $t787_788, $t788_789, $t789_790, $t790_791, $t791_792, $t792_793, $t793_794, $t794_795, $t795_796, $t796_797, $t797_798, $t798_799, $t799_800, $t800_801, $t801_802, $t802_803, $t803_804, $t804_805, $t805_806, $t806_807, $t807_808, $t808_809, $t809_810, $t810_811, $t811_812, $t812_813, $t813_814, $t814_815, $t815_816, $t816_817, $t817_818, $t818_819, $t819_820, $t820_821, $t821_822, $t822_823, $t823_824, $t824_825, $t825_826, $t826_827, $t827_828, $t828_829, $t829_830, $t830_831, $t831_832, $t832_833, $t833_834, $t834_835, $t835_836, $t836_837, $t837_838, $t838_839, $t839_840, $t840_841, $t841_842, $t842_843, $t843_844, $t844_845, $t845_846, $t846_847, $t847_848, $t848_849, $t849_850, $t850_851, $t851_852, $t852_853, $t853_854, $t854_855, $t855_856, $t856_857, $t857_858, $t858_859, $t859_860, $t860_861, $t861_862, $t862_863, $t863_864, $t864_865, $t865_866, $t866_867, $t867_868, $t868_869, $t869_870, $t870_871, $t871_872, $t872_873, $t873_874, $t874_875, $t875_876, $t876_877, $t877_878, $t878_879, $t879_880, $t880_881, $t881_882, $t882_883, $t883_884, $t884_885, $t885_886, $t886_887, $t887_888, $t888_889, $t889_890, $t890_891, $t891_892, $t892_893, $t893_894, $t894_895, $t895_896, $t896_897, $t897_898, $t898_899, $t899_900, $t900_901, $t901_902, $t902_903, $t903_904, $t904_905, $t905_906, $t906_907, $t907_908, $t908_909, $t909_910, $t910_911, $t911_912, $t912_913, $t913_914, $t914_915, $t915_916, $t916_917, $t917_918, $t918_919, $t919_920, $t920_921, $t921_922, $t922_923, $t923_924, $t924_925, $t925_926, $t926_927, $t927_928, $t928_929, $t929_930, $t930_931, $t931_932, $t932_933, $t933_934, $t934_935, $t935_936, $t936_937, $t937_938, $t938_939, $t939_940, $t940_941, $t941_942, $t942_943, $t943_944, $t944_945, $t945_946, $t946_947, $t947_948, $t948_949, $t949_950, $t950_951, $t951_952, $t952_953, $t953_954, $t954_955, $t955_956, $t956_957, $t957_958, $t958_959, $t959_960, $t960_961, $t961_962, $t962_963, $t963_964, $t964_965, $t965_966, $t966_967, $t967_968, $t968_969, $t969_970, $t970_971, $t971_972, $t972_973, $t973_974, $t974_975, $t975_976, $t976_977, $t977_978, $t978_979, $t979_980, $t980_981, $t981_982, $t982_983, $t983_984, $t984_985, $t985_986, $t986_987, $t987_988, $t988_989, $t989_990, $t990_991, $t991_992, $t992_993, $t993_994, $t994_995, $t995_996, $t996_997, $t997_998, $t998_999, $t999_1000, $t1000_1001, $t1001_1002, $t1002_1003, $t1003_1004, $t1004_1005, $t1005_1006, $t1006_1007, $t1007_1008, $t1008_1009, $t1009_1010, $t1010_1011, $t1011_1012, $t1012_1013, $t1013_1014, $t1014_1015, $t1015_1016, $t1016_1017, $t1017_1018, $t1018_1019, $t1019_1020, $t1020_1021, $t1021_1022, $t1022_1023, $t1023_1024, $t1024_1025, $t1025_1026, $t1026_1027, $t1027_1028, $t1028_1029, $t1029_1030, $t1030_1031, $t1031_1032, $t1032_1033, $t1033_1034, $t1034_1035, $t1035_1036, $t1036_1037, $t1037_1038, $t1038_1039, $t1039_1040, $t1040_1041, $t1041_1042, $t1042_1043, $t1043_1044, $t1044_1045, $t1045_1046, $t1046_1047, $t1047_1048, $t1048_1049, $t1049_1050, $t1050_1051, $t1051_1052, $t1052_1053, $t1053_1054, $t1054_1055, $t1055_1056, $t1056_1057, $t1057_1058, $t1058_1059, $t1059_1060, $t1060_1061, $t1061_1062, $t1062_1063, $t1063_1064, $t1064_1065, $t1065_1066, $t1066_1067, $t1067_1068, $t1068_1069, $t1069_1070, $t1070_1071, $t1071_1072, $t1072_1073, $t1073_1074, $t1074_1075, $t1075_1076, $t1076_1077, $t1077_1078, $t1078_1079, $t1079_1080, $t1080_1081, $t1081_1082, $t1082_1083, $t1083_1084, $t1084_1085, $t1085_1086, $t1086_1087, $t1087_1088, $t1088_1089, $t1089_1090, $t1090_1091, $t1091_1092, $t1092_1093, $t1093_1094, $t1094_1095, $t1095_1096, $t1096_1097, $t1097_1098, $t1098_1099, $t1099_1100, $t1100_1101, $t1101_1102, $t1102_1103, $t1103_1104, $t1104_1105, $t1105_1106, $t1106_1107, $t1107_1108, $t1108_1109, $t1109_1110, $t1110_1111, $t1111_1112, $t1112_1113, $t1113_1114, $t1114_1115, $t1115_1116, $t1116_1117, $t1117_1118, $t1118_1119, $t1119_1120, $t1120_1121, $t1121_1122, $t1122_1123, $t1123_1124, $t1124_1125, $t1125_1126, $t1126_1127, $t1127_1128, $t1128_1129, $t1129_1130, $t1130_1131, $t1131_1132, $t1132_1133, $t1133_1134, $t1134_1135, $t1135_1136, $t1136_1137, $t1137_1138, $t1138_1139, $t1139_1140, $t1140_1141, $t1141_1142, $t1142_1143, $t1143_1144, $t1144_1145, $t1145_1146, $t1146_1147, $t1147_1148, $t1148_1149, $t1149_1150, $t1150_1151, $t1151_1152, $t1152_1153, $t1153_1154, $t1154_1155, $t1155_1156, $t1156_1157, $t1157_1158, $t1158_1159, $t1159_1160, $t1160_1161, $t1161_1162, $t1162_1163, $t1163_1164, $t1164_1165, $t1165_1166, $t1166_1167, $t1167_1168, $t1168_1169, $t1169_1170, $t1170_1171, $t1171_1172, $t1172_1173, $t1173_1174, $t1174_1175, $t1175_1176, $t1176_1177, $t1177_1178, $t1178_1179, $t1179_1180, $t1180_1181, $t1181_1182, $t1182_1183, $t1183_1184, $t1184_1185, $t1185_1186, $t1186_1187, $t1187_1188, $t1188_1189, $t1189_1190, $t1190_1191, $t1191_1192, $t1192_1193, $t1193_1194, $t1194_1195, $t1195_1196, $t1196_1197, $t1197_1198, $t1198_1199, $t1199_1200, $t1200_1201, $t1201_1202, $t1202_1203, $t1203_1204, $t1204_1205, $t1205_1206, $t1206_1207, $t1207_1208, $t1208_1209, $t1209_1210, $t1210_1211, $t1211_1212, $t1212_1213, $t1213_1214, $t1214_1215, $t1215_1216, $t1216_1217, $t1217_1218, $t1218_1219, $t1219_1220, $t1220_1221, $t1221_1222, $t1222_1223, $t1223_1224, $t1224_1225, $t1225_1226, $t1226_1227, $t1227_1228, $t1228_1229, $t1229_1230, $t1230_1231, $t1231_1232, $t1232_1233, $t1233_1234, $t1234_1235, $t1235_1236, $t1236_1237, $t1237_1238, $t1238_1239, $t1239_1240, $t1240_1241, $t1241_1242, $t1242_1243, $t1243_1244, $t1244_1245, $t1245_1246, $t1246_1247, $t1247_1248, $t1248_1249, $t1249_1250, $t1250_1251, $t1251_1252, $t1252_1253, $t1253_1254, $t1254_1255, $t1255_1256, $t1256_1257, $t1257_1258, $t1258_1259, $t1259_1260, $t1260_1261, $t1261_1262, $t1262_1263, $t1263_1264, $t1264_1265, $t1265_1266, $t1266_1267, $t1267_1268, $t1268_1269, $t1269_1270, $t1270_1271, $t1271_1272, $t1272_1273, $t1273_1274, $t1274_1275, $t1275_1276, $t1276_1277, $t1277_1278, $t1278_1279, $t1279_1280, $t1280_1281, $t1281_1282, $t1282_1283, $t1283_1284, $t1284_1285, $t1285_1286, $t1286_1287, $t1287_1288, $t1288_1289, $t1289_1290, $t1290_1291, $t1291_1292, $t1292_1293, $t1293_1294, $t1294_1295, $t1295_1296, $t1296_1297, $t1297_1298, $t1298_1299, $t1299_1300, $t1300_1301, $t1301_1302, $t1302_1303, $t1303_1304, $t1304_1305, $t1305_1306, $t1306_1307, $t1307_1308, $t1308_1309, $t1309_1310, $t1310_1311, $t1311_1312, $t1312_1313, $t1313_1314, $t1314_1315, $t1315_1316, $t1316_1317, $t1317_1318, $t1318_1319, $t1319_1320, $t1320_1321, $t1321_1322, $t1322_1323, $t1323_1324, $t1324_1325, $t1325_1326, $t1326_1327, $t1327_1328, $t1328_1329, $t1329_1330, $t1330_1331, $t1331_1332, $t1332_1333, $t1333_1334, $t1334_1335, $t1335_1336, $t1336_1337, $t1337_1338, $t1338_1339, $t1339_1340, $t1340_1341, $t1341_1342, $t1342_1343, $t1343_1344, $t1344_1345, $t1345_1346, $t1346_1347, $t1347_1348, $t1348_1349, $t1349_1350, $t1350_1351, $t1351_1352, $t1352_1353, $t1353_1354, $t1354_1355, $t1355_1356, $t1356_1357, $t1357_1358, $t1358_1359, $t1359_1360, $t1360_1361, $t1361_1362, $t1362_1363, $t1363_1364, $t1364_1365, $t1365_1366, $t1366_1367, $t1367_1368, $t1368_1369, $t1369_1370, $t1370_1371, $t1371_1372, $t1372_1373, $t1373_1374, $t1374_1375, $t1375_1376, $t1376_1377, $t1377_1378, $t1378_1379, $t1379_1380, $t1380_1381, $t1381_1382, $t1382_1383, $t1383_1384, $t1384_1385, $t1385_1386, $t1386_1387, $t1387_1388, $t1388_1389, $t1389_1390, $t1390_1391, $t1391_1392, $t1392_1393, $t1393_1394, $t1394_1395, $t1395_1396, $t1396_1397, $t1397_1398, $t1398_1399, $t1399_1400, $t1400_1401, $t1401_1402, $t1402_1403, $t1403_1404, $t1404_1405, $t1405_1406, $t1406_1407, $t1407_1408, $t1408_1409, $t1409_1410, $t1410_1411, $t1411_1412, $t1412_1413, $t1413_1414, $t1414_1415, $t1415_1416, $t1416_1417, $t1417_1418, $t1418_1419, $t1419_1420, $t1420_1421, $t1421_1422, $t1422_1423, $t1423_1424, $t1424_1425, $t1425_1426, $t1426_1427, $t1427_1428, $t1428_1429, $t1429_1430, $t1430_1431, $t1431_1432, $t1432_1433, $t1433_1434, $t1434_1435, $t1435_1436, $t1436_1437, $t1437_1438, $t1438_1439, $t1439_1440, $t1440_1441, $t1441_1442, $t1442_1443, $t1443_1444, $t1444_1445, $t1445_1446;
792 $t0_1 = errors.New('mls: invalid key size');
793 errInvalidKeySize.$set($t0_1);
794 $t1_2 = errors.New('mls: AEAD open failed');
795 errAEADOpenFailed.$set($t1_2);
796 $t2_3 = errors.New('mls: HPKE decryption failed');
797 errHPKEDecryptFailed.$set($t2_3);
798 kemSuiteID.$set('KEM\0 ');
799 hpkeSuiteID.$set('HPKE\0 \0\x01\0\x03');
800 $t3_4 = errors.New('mls: unexpected EOF');
801 errUnexpectedEOF.$set($t3_4);
802 $t4_5 = errors.New('mls: varint exceeds 30 bits');
803 errVarintOverflow.$set($t4_5);
804 $t5_6 = errors.New('mls: excess bytes after unmarshal');
805 errExcessBytes.$set($t5_6);
806 $t6_7 = errors.New('mls: invalid content type');
807 errInvalidContentType.$set($t6_7);
808 $t7_8 = errors.New('mls: invalid sender type');
809 errInvalidSenderType.$set($t7_8);
810 $t8_9 = errors.New('mls: invalid wire format');
811 errInvalidWireFormat.$set($t8_9);
812 $t9_10 = errors.New('mls: invalid protocol version');
813 errInvalidVersion.$set($t9_10);
814 $t10_11 = errors.New('mls: padding contains non-zero bytes');
815 errNonZeroPadding.$set($t10_11);
816 $t11_12 = errors.New('mls: group secrets not found for key package ref');
817 errGroupSecretsNotFound.$set($t11_12);
818 $t12_13 = errors.New('mls: key package version mismatch');
819 errKeyPackageVersionMismatch.$set($t12_13);
820 $t13_14 = errors.New('mls: key package cipher suite mismatch');
821 errKeyPackageSuiteMismatch.$set($t13_14);
822 $t14_15 = errors.New('mls: key package leaf node invalid source');
823 errKeyPackageBadSource.$set($t14_15);
824 $t15_16 = errors.New('mls: invalid key package signature');
825 errKeyPackageBadSignature.$set($t15_16);
826 $t16_17 = errors.New('mls: key package init key equals encryption key');
827 errKeyPackageKeysMatch.$set($t16_17);
828 $t17_18 = errors.New('mls: invalid PSK type');
829 errInvalidPSKType.$set($t17_18);
830 $t18_19 = errors.New('mls: invalid resumption PSK usage');
831 errInvalidPSKUsage.$set($t18_19);
832 $t19_20 = errors.New('mls: invalid proposal or ref type');
833 errInvalidProposalOrRefType.$set($t19_20);
834 secretLabelInit.$set('init');
835 secretLabelSenderData.$set('sender data');
836 secretLabelEncryption.$set('encryption');
837 secretLabelExporter.$set('exporter');
838 secretLabelExternal.$set('external');
839 secretLabelConfirm.$set('confirm');
840 secretLabelMembership.$set('membership');
841 secretLabelResumption.$set('resumption');
842 secretLabelAuthentication.$set('authentication');
843 $t20_21 = errors.New('mls: invalid proposal type');
844 errInvalidProposalType.$set($t20_21);
845 $t21_22 = errors.New('mls: duplicate add proposal signature key');
846 errDupAddKey.$set($t21_22);
847 $t22_23 = errors.New('mls: update proposal from committer');
848 errUpdateByCommitter.$set($t22_23);
849 $t23_24 = errors.New('mls: duplicate update/remove on same leaf');
850 errDupUpdateOrRemove.$set($t23_24);
851 $t24_25 = errors.New('mls: remove proposal targets committer');
852 errRemoveCommitter.$set($t24_25);
853 $t25_26 = errors.New('mls: duplicate PSK proposal');
854 errDupPSK.$set($t25_26);
855 $t26_27 = errors.New('mls: duplicate group context extensions proposal');
856 errDupGroupContextExts.$set($t26_27);
857 $t27_28 = errors.New('mls: reinit with other proposals');
858 errReinitWithOther.$set($t27_28);
859 $t28_29 = errors.New('mls: external init not allowed');
860 errExternalInitNotAllowed.$set($t28_29);
861 ratchetLabelHandshake.$set('handshake');
862 ratchetLabelApplication.$set('application');
863 $t29_30 = { $value: $rt.builtin.makeSlice(5, 5, { commitSecret: null, treeHash: null, confirmedTranscriptHash: null, pskSecret: null, groupContext: null, joinerSecret: null, welcomeSecret: null, initSecret: null, senderDataSecret: null, encryptionSecret: null, exporterSecret: null, externalSecret: null, confirmationKey: null, membershipKey: null, resumptionPSK: null, epochAuthenticator: null, externalPub: null, exporterLabel: null, exporterContext: null, exporterLength: 0, exporterValue: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
864 $t30_31 = $t29_30.$get().addr(0);
865 $t31_32 = { $get() { return $t30_31.$get().commitSecret; }, $set(v) { const obj = $t30_31.$get(); obj.commitSecret = v; $t30_31.$set(obj); } };
866 $t32_33 = hexb('a22606222e350fd7f0937168fe7548fb06626ab143cba7611d641693b1447509');
867 $t33_34 = { $get() { return $t30_31.$get().treeHash; }, $set(v) { const obj = $t30_31.$get(); obj.treeHash = v; $t30_31.$set(obj); } };
868 $t34_35 = hexb('9769e302a99c457350a8e636009b12a2fee068664004606d6318eb3a1977d818');
869 $t35_36 = { $get() { return $t30_31.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t30_31.$get(); obj.confirmedTranscriptHash = v; $t30_31.$set(obj); } };
870 $t36_37 = hexb('5e57c9364dc71f0f71b19ffe561ab77257c490708a47e29f8f73f2b318201d2f');
871 $t37_38 = { $get() { return $t30_31.$get().pskSecret; }, $set(v) { const obj = $t30_31.$get(); obj.pskSecret = v; $t30_31.$set(obj); } };
872 $t38_39 = hexb('e871b247379522395689182736cb3d1e7b108d6ae934b802223975de8dc3f80b');
873 $t39_40 = { $get() { return $t30_31.$get().groupContext; }, $set(v) { const obj = $t30_31.$get(); obj.groupContext = v; $t30_31.$set(obj); } };
874 $t40_41 = hexb('0001000320a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e0000000000000000209769e302a99c457350a8e636009b12a2fee068664004606d6318eb3a1977d818205e57c9364dc71f0f71b19ffe561ab77257c490708a47e29f8f73f2b318201d2f00');
875 $t41_42 = { $get() { return $t30_31.$get().joinerSecret; }, $set(v) { const obj = $t30_31.$get(); obj.joinerSecret = v; $t30_31.$set(obj); } };
876 $t42_43 = hexb('3e28da76edc09fb9ad59fae258839c7dc46e3c092a125499959c7413a60250b2');
877 $t43_44 = { $get() { return $t30_31.$get().welcomeSecret; }, $set(v) { const obj = $t30_31.$get(); obj.welcomeSecret = v; $t30_31.$set(obj); } };
878 $t44_45 = hexb('b0defbdd2232224b0c0427e8efa80f011f7813291dca783433f2da1431620bbc');
879 $t45_46 = { $get() { return $t30_31.$get().initSecret; }, $set(v) { const obj = $t30_31.$get(); obj.initSecret = v; $t30_31.$set(obj); } };
880 $t46_47 = hexb('418b197eafd925ebbf4bfd94d650aa83b1a11d6d02f33c2cc81631c6734f69d9');
881 $t47_48 = { $get() { return $t30_31.$get().senderDataSecret; }, $set(v) { const obj = $t30_31.$get(); obj.senderDataSecret = v; $t30_31.$set(obj); } };
882 $t48_49 = hexb('de1df3a74bbcfc7fcc631213a20c1b1842860eab8e6f0c864dcfb541cd42cf24');
883 $t49_50 = { $get() { return $t30_31.$get().encryptionSecret; }, $set(v) { const obj = $t30_31.$get(); obj.encryptionSecret = v; $t30_31.$set(obj); } };
884 $t50_51 = hexb('ffcc3d4a757224eaf62c124f8e7def12c0db74740cf494c9f56fa7dd07214947');
885 $t51_52 = { $get() { return $t30_31.$get().exporterSecret; }, $set(v) { const obj = $t30_31.$get(); obj.exporterSecret = v; $t30_31.$set(obj); } };
886 $t52_53 = hexb('27518b380b39834affecb08780ee9709627859d5f6f37994e8783791004485cb');
887 $t53_54 = { $get() { return $t30_31.$get().externalSecret; }, $set(v) { const obj = $t30_31.$get(); obj.externalSecret = v; $t30_31.$set(obj); } };
888 $t54_55 = hexb('46f51f54ce4c3457ee5681925b9d1a282de166f04e28a4a316404bd14dda3138');
889 $t55_56 = { $get() { return $t30_31.$get().confirmationKey; }, $set(v) { const obj = $t30_31.$get(); obj.confirmationKey = v; $t30_31.$set(obj); } };
890 $t56_57 = hexb('e8bdff522e2675c7e0582321fbeb7e61763b1f88e7ded3c57ea78c691e1d0b93');
891 $t57_58 = { $get() { return $t30_31.$get().membershipKey; }, $set(v) { const obj = $t30_31.$get(); obj.membershipKey = v; $t30_31.$set(obj); } };
892 $t58_59 = hexb('6839abba79aaeb82385397612fb90cbea3bf8d427806cb3f0bfe5793c1a42fc9');
893 $t59_60 = { $get() { return $t30_31.$get().resumptionPSK; }, $set(v) { const obj = $t30_31.$get(); obj.resumptionPSK = v; $t30_31.$set(obj); } };
894 $t60_61 = hexb('244b05004ced1a7d1dc3da6a7541e9b180b6ffe41cc6e24d63c5c9c0742b4870');
895 $t61_62 = { $get() { return $t30_31.$get().epochAuthenticator; }, $set(v) { const obj = $t30_31.$get(); obj.epochAuthenticator = v; $t30_31.$set(obj); } };
896 $t62_63 = hexb('f68f6735aeeb97331d674ef4f580e11352beff543b3b6688a01a1bab97d42f26');
897 $t63_64 = { $get() { return $t30_31.$get().externalPub; }, $set(v) { const obj = $t30_31.$get(); obj.externalPub = v; $t30_31.$set(obj); } };
898 $t64_65 = hexb('8206ea1eb4d8d5730a2737f7470718b9d00c2276d24a98ac4e6d7ef52cba0631');
899 $t65_66 = { $get() { return $t30_31.$get().exporterLabel; }, $set(v) { const obj = $t30_31.$get(); obj.exporterLabel = v; $t30_31.$set(obj); } };
900 $t66_67 = hexb('9ba13d54ecdec7cbefcb47b4268d7b1990fabc6d6e67681e167959389d84e4e4');
901 $t67_68 = { $get() { return $t30_31.$get().exporterContext; }, $set(v) { const obj = $t30_31.$get(); obj.exporterContext = v; $t30_31.$set(obj); } };
902 $t68_69 = hexb('884f1af892ab002f5be4c5d5081ade9e0e6418c6ea7a9a92e90534f19dcef785');
903 $t69_70 = { $get() { return $t30_31.$get().exporterLength; }, $set(v) { const obj = $t30_31.$get(); obj.exporterLength = v; $t30_31.$set(obj); } };
904 $t70_71 = { $get() { return $t30_31.$get().exporterValue; }, $set(v) { const obj = $t30_31.$get(); obj.exporterValue = v; $t30_31.$set(obj); } };
905 $t71_72 = hexb('623c858acd2728c5b860a77ae0cde77fa8aef14e9ac124464cab06bbc3cf3635');
906 $t31_32.$set($t32_33);
907 $t33_34.$set($t34_35);
908 $t35_36.$set($t36_37);
909 $t37_38.$set($t38_39);
910 $t39_40.$set($t40_41);
911 $t41_42.$set($t42_43);
912 $t43_44.$set($t44_45);
913 $t45_46.$set($t46_47);
914 $t47_48.$set($t48_49);
915 $t49_50.$set($t50_51);
916 $t51_52.$set($t52_53);
917 $t53_54.$set($t54_55);
918 $t55_56.$set($t56_57);
919 $t57_58.$set($t58_59);
920 $t59_60.$set($t60_61);
921 $t61_62.$set($t62_63);
922 $t63_64.$set($t64_65);
923 $t65_66.$set($t66_67);
924 $t67_68.$set($t68_69);
925 $t69_70.$set(32);
926 $t70_71.$set($t71_72);
927 $t72_73 = $t29_30.$get().addr(1);
928 $t73_74 = { $get() { return $t72_73.$get().commitSecret; }, $set(v) { const obj = $t72_73.$get(); obj.commitSecret = v; $t72_73.$set(obj); } };
929 $t74_75 = hexb('7b3027aa5d2224aab7e2a18660bbf57930e2e21d95e02b849c704d970e3e28c5');
930 $t75_76 = { $get() { return $t72_73.$get().treeHash; }, $set(v) { const obj = $t72_73.$get(); obj.treeHash = v; $t72_73.$set(obj); } };
931 $t76_77 = hexb('826a4d3b0956277ce5e272e4d18fdca023ffb63ea4cea636e34cc837ae7c5c5d');
932 $t77_78 = { $get() { return $t72_73.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t72_73.$get(); obj.confirmedTranscriptHash = v; $t72_73.$set(obj); } };
933 $t78_79 = hexb('14a2985ea47db0685924a74d47ac8a08ec241f843b536dd1348e3ffb2d78184e');
934 $t79_80 = { $get() { return $t72_73.$get().pskSecret; }, $set(v) { const obj = $t72_73.$get(); obj.pskSecret = v; $t72_73.$set(obj); } };
935 $t80_81 = hexb('ca7a68f2a8a52147d70f1eb7195de968d2e182b93596bc5a61393861e91180e4');
936 $t81_82 = { $get() { return $t72_73.$get().groupContext; }, $set(v) { const obj = $t72_73.$get(); obj.groupContext = v; $t72_73.$set(obj); } };
937 $t82_83 = hexb('0001000320a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e000000000000000120826a4d3b0956277ce5e272e4d18fdca023ffb63ea4cea636e34cc837ae7c5c5d2014a2985ea47db0685924a74d47ac8a08ec241f843b536dd1348e3ffb2d78184e00');
938 $t83_84 = { $get() { return $t72_73.$get().joinerSecret; }, $set(v) { const obj = $t72_73.$get(); obj.joinerSecret = v; $t72_73.$set(obj); } };
939 $t84_85 = hexb('f589c7bc9de6fac35e546bbf4ac89632980158e40336cdf89165b526a482f228');
940 $t85_86 = { $get() { return $t72_73.$get().welcomeSecret; }, $set(v) { const obj = $t72_73.$get(); obj.welcomeSecret = v; $t72_73.$set(obj); } };
941 $t86_87 = hexb('f577c28c938b9f57224e5f208ee8a64f65a4fb734bf8f74f44f0020f55e22a20');
942 $t87_88 = { $get() { return $t72_73.$get().initSecret; }, $set(v) { const obj = $t72_73.$get(); obj.initSecret = v; $t72_73.$set(obj); } };
943 $t88_89 = hexb('6947180097f92f021d5d0739568d9e41647ebe26d754f679f0a883013165b6c9');
944 $t89_90 = { $get() { return $t72_73.$get().senderDataSecret; }, $set(v) { const obj = $t72_73.$get(); obj.senderDataSecret = v; $t72_73.$set(obj); } };
945 $t90_91 = hexb('c6b20eeb67246447456fe4d4dd9ee8e6e88e710cf766f862440e9a7b4789be81');
946 $t91_92 = { $get() { return $t72_73.$get().encryptionSecret; }, $set(v) { const obj = $t72_73.$get(); obj.encryptionSecret = v; $t72_73.$set(obj); } };
947 $t92_93 = hexb('bd364a14dbe3e9d14f6573d2df1ee014cb0bfcadd948f257d35091fba8735d3a');
948 $t93_94 = { $get() { return $t72_73.$get().exporterSecret; }, $set(v) { const obj = $t72_73.$get(); obj.exporterSecret = v; $t72_73.$set(obj); } };
949 $t94_95 = hexb('eac27705796cb8ff5867d5883f111f8a9990de3e69befc5d69bf2d02f539b863');
950 $t95_96 = { $get() { return $t72_73.$get().externalSecret; }, $set(v) { const obj = $t72_73.$get(); obj.externalSecret = v; $t72_73.$set(obj); } };
951 $t96_97 = hexb('e7b78eda3dc2d13c3aee74426a6aa6e8a90fb95992be66b5eeb8cdc0b08c6f1a');
952 $t97_98 = { $get() { return $t72_73.$get().confirmationKey; }, $set(v) { const obj = $t72_73.$get(); obj.confirmationKey = v; $t72_73.$set(obj); } };
953 $t98_99 = hexb('839d6621c61a40a14d30a5042aa9a530e267f825734d485ac9e415f19e35d9dd');
954 $t99_100 = { $get() { return $t72_73.$get().membershipKey; }, $set(v) { const obj = $t72_73.$get(); obj.membershipKey = v; $t72_73.$set(obj); } };
955 $t100_101 = hexb('d835002d8367b0c81e7d0159527b12a24870dbb8efc8fb299ad16b72b2199a6c');
956 $t101_102 = { $get() { return $t72_73.$get().resumptionPSK; }, $set(v) { const obj = $t72_73.$get(); obj.resumptionPSK = v; $t72_73.$set(obj); } };
957 $t102_103 = hexb('e2cc0c5444b77af2d15a8d5adf2ce9fd051429758ab80bd247d80f6c44982a64');
958 $t103_104 = { $get() { return $t72_73.$get().epochAuthenticator; }, $set(v) { const obj = $t72_73.$get(); obj.epochAuthenticator = v; $t72_73.$set(obj); } };
959 $t104_105 = hexb('acd66baee8206cca6b60a71c9db4f1ae97718db857e267c352d495f29ff0776b');
960 $t105_106 = { $get() { return $t72_73.$get().externalPub; }, $set(v) { const obj = $t72_73.$get(); obj.externalPub = v; $t72_73.$set(obj); } };
961 $t106_107 = hexb('e2daac515f8378d164bf51746f4143b54d7a8d574f4ae1081b5d1d0ba88fe615');
962 $t107_108 = { $get() { return $t72_73.$get().exporterLabel; }, $set(v) { const obj = $t72_73.$get(); obj.exporterLabel = v; $t72_73.$set(obj); } };
963 $t108_109 = hexb('ed66d7f1da52171ac9448f0f902edcfefa4ebbda843a43bd3d173cb7c5b4331e');
964 $t109_110 = { $get() { return $t72_73.$get().exporterContext; }, $set(v) { const obj = $t72_73.$get(); obj.exporterContext = v; $t72_73.$set(obj); } };
965 $t110_111 = hexb('02dc18fc5bc4d9093cf41fa0053521653775b123784d40ac7d46cc5a72ef4d46');
966 $t111_112 = { $get() { return $t72_73.$get().exporterLength; }, $set(v) { const obj = $t72_73.$get(); obj.exporterLength = v; $t72_73.$set(obj); } };
967 $t112_113 = { $get() { return $t72_73.$get().exporterValue; }, $set(v) { const obj = $t72_73.$get(); obj.exporterValue = v; $t72_73.$set(obj); } };
968 $t113_114 = hexb('f6ae0abce67ed43e7cda3c04774278930c96bb1abfa77707cb7ac3351a9ded5f');
969 $t73_74.$set($t74_75);
970 $t75_76.$set($t76_77);
971 $t77_78.$set($t78_79);
972 $t79_80.$set($t80_81);
973 $t81_82.$set($t82_83);
974 $t83_84.$set($t84_85);
975 $t85_86.$set($t86_87);
976 $t87_88.$set($t88_89);
977 $t89_90.$set($t90_91);
978 $t91_92.$set($t92_93);
979 $t93_94.$set($t94_95);
980 $t95_96.$set($t96_97);
981 $t97_98.$set($t98_99);
982 $t99_100.$set($t100_101);
983 $t101_102.$set($t102_103);
984 $t103_104.$set($t104_105);
985 $t105_106.$set($t106_107);
986 $t107_108.$set($t108_109);
987 $t109_110.$set($t110_111);
988 $t111_112.$set(32);
989 $t112_113.$set($t113_114);
990 $t114_115 = $t29_30.$get().addr(2);
991 $t115_116 = { $get() { return $t114_115.$get().commitSecret; }, $set(v) { const obj = $t114_115.$get(); obj.commitSecret = v; $t114_115.$set(obj); } };
992 $t116_117 = hexb('d2825785628f1ea7404d6761f27272af5f99416ea28cc9d335df47ed2b0097d4');
993 $t117_118 = { $get() { return $t114_115.$get().treeHash; }, $set(v) { const obj = $t114_115.$get(); obj.treeHash = v; $t114_115.$set(obj); } };
994 $t118_119 = hexb('661ce3bd9ebec8608fa97bf5413a4588f50a8f9face225ec67a6d29c862b2516');
995 $t119_120 = { $get() { return $t114_115.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t114_115.$get(); obj.confirmedTranscriptHash = v; $t114_115.$set(obj); } };
996 $t120_121 = hexb('b5d7ec8c9d8b6a28c9467fe4918844be6acc08e98c1e10c71122e95f9a5e78c5');
997 $t121_122 = { $get() { return $t114_115.$get().pskSecret; }, $set(v) { const obj = $t114_115.$get(); obj.pskSecret = v; $t114_115.$set(obj); } };
998 $t122_123 = hexb('599aa672406270914c60d30b7a31d2f2e217c3b5298b279b79e34c65a60e5f24');
999 $t123_124 = { $get() { return $t114_115.$get().groupContext; }, $set(v) { const obj = $t114_115.$get(); obj.groupContext = v; $t114_115.$set(obj); } };
1000 $t124_125 = hexb('0001000320a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e000000000000000220661ce3bd9ebec8608fa97bf5413a4588f50a8f9face225ec67a6d29c862b251620b5d7ec8c9d8b6a28c9467fe4918844be6acc08e98c1e10c71122e95f9a5e78c500');
1001 $t125_126 = { $get() { return $t114_115.$get().joinerSecret; }, $set(v) { const obj = $t114_115.$get(); obj.joinerSecret = v; $t114_115.$set(obj); } };
1002 $t126_127 = hexb('2895d244e83e8f29025bc990bedff61ce114281e4ff22362c4ddd1646e0fd052');
1003 $t127_128 = { $get() { return $t114_115.$get().welcomeSecret; }, $set(v) { const obj = $t114_115.$get(); obj.welcomeSecret = v; $t114_115.$set(obj); } };
1004 $t128_129 = hexb('58a7d5da2ab6a8cbebb89c34741c52ce3f4aab1b0ca3fe53f47c25f77de9576c');
1005 $t129_130 = { $get() { return $t114_115.$get().initSecret; }, $set(v) { const obj = $t114_115.$get(); obj.initSecret = v; $t114_115.$set(obj); } };
1006 $t130_131 = hexb('300b71ecfff9459934b4ede696bc0ee9858aa70a89c0e934fadad97383347e4c');
1007 $t131_132 = { $get() { return $t114_115.$get().senderDataSecret; }, $set(v) { const obj = $t114_115.$get(); obj.senderDataSecret = v; $t114_115.$set(obj); } };
1008 $t132_133 = hexb('498d6f93ac48b8a8d3ba1321b4baf760fe59d486be53208ad0c2f57a34ce6263');
1009 $t133_134 = { $get() { return $t114_115.$get().encryptionSecret; }, $set(v) { const obj = $t114_115.$get(); obj.encryptionSecret = v; $t114_115.$set(obj); } };
1010 $t134_135 = hexb('a61b4a90c66febc563f95e7af4417e1be5e33181605b2b9f8725ea30b184928e');
1011 $t135_136 = { $get() { return $t114_115.$get().exporterSecret; }, $set(v) { const obj = $t114_115.$get(); obj.exporterSecret = v; $t114_115.$set(obj); } };
1012 $t136_137 = hexb('fdac6dcb3929509f612106168550370afd92beeaf838bc09bad0a4db09c03b4e');
1013 $t137_138 = { $get() { return $t114_115.$get().externalSecret; }, $set(v) { const obj = $t114_115.$get(); obj.externalSecret = v; $t114_115.$set(obj); } };
1014 $t138_139 = hexb('072b9f6d87abb70c908e0808fb4f60e0680426d12c64d4aa8389bf6c423b6cc3');
1015 $t139_140 = { $get() { return $t114_115.$get().confirmationKey; }, $set(v) { const obj = $t114_115.$get(); obj.confirmationKey = v; $t114_115.$set(obj); } };
1016 $t140_141 = hexb('3cdd1841fe689fad3c4afca9d78e20506cbc377c34e67245721448d944e63ace');
1017 $t141_142 = { $get() { return $t114_115.$get().membershipKey; }, $set(v) { const obj = $t114_115.$get(); obj.membershipKey = v; $t114_115.$set(obj); } };
1018 $t142_143 = hexb('08caa1215ef79aab5fb229c286b82c2a5702932aeb68190496b18cf537c86e5c');
1019 $t143_144 = { $get() { return $t114_115.$get().resumptionPSK; }, $set(v) { const obj = $t114_115.$get(); obj.resumptionPSK = v; $t114_115.$set(obj); } };
1020 $t144_145 = hexb('887ca27b1d9f00bb88d60a6ecb86df34bf500bf0f755e7d02b6fd14457fff9d9');
1021 $t145_146 = { $get() { return $t114_115.$get().epochAuthenticator; }, $set(v) { const obj = $t114_115.$get(); obj.epochAuthenticator = v; $t114_115.$set(obj); } };
1022 $t146_147 = hexb('1b9bbd13d92e2b4d600af772e340c8130b5704ad81cf17766ff5649603d058b3');
1023 $t147_148 = { $get() { return $t114_115.$get().externalPub; }, $set(v) { const obj = $t114_115.$get(); obj.externalPub = v; $t114_115.$set(obj); } };
1024 $t148_149 = hexb('c32e86b676cdcf9daf07823faad7bf0d650ea5b1593bf816573236a0bc744571');
1025 $t149_150 = { $get() { return $t114_115.$get().exporterLabel; }, $set(v) { const obj = $t114_115.$get(); obj.exporterLabel = v; $t114_115.$set(obj); } };
1026 $t150_151 = hexb('06f549e9bf966d7b7135b6ef6d4e3032a1c720adf0281c3ef1c0beac0da88621');
1027 $t151_152 = { $get() { return $t114_115.$get().exporterContext; }, $set(v) { const obj = $t114_115.$get(); obj.exporterContext = v; $t114_115.$set(obj); } };
1028 $t152_153 = hexb('b0fa7e3f0f2199278a55267d551d43946bbfc6d847632867dd86abd1217982a5');
1029 $t153_154 = { $get() { return $t114_115.$get().exporterLength; }, $set(v) { const obj = $t114_115.$get(); obj.exporterLength = v; $t114_115.$set(obj); } };
1030 $t154_155 = { $get() { return $t114_115.$get().exporterValue; }, $set(v) { const obj = $t114_115.$get(); obj.exporterValue = v; $t114_115.$set(obj); } };
1031 $t155_156 = hexb('58560324e8b45296b31c44f250df77194b977cd4f9b1c0fd55b15cd260a3d582');
1032 $t115_116.$set($t116_117);
1033 $t117_118.$set($t118_119);
1034 $t119_120.$set($t120_121);
1035 $t121_122.$set($t122_123);
1036 $t123_124.$set($t124_125);
1037 $t125_126.$set($t126_127);
1038 $t127_128.$set($t128_129);
1039 $t129_130.$set($t130_131);
1040 $t131_132.$set($t132_133);
1041 $t133_134.$set($t134_135);
1042 $t135_136.$set($t136_137);
1043 $t137_138.$set($t138_139);
1044 $t139_140.$set($t140_141);
1045 $t141_142.$set($t142_143);
1046 $t143_144.$set($t144_145);
1047 $t145_146.$set($t146_147);
1048 $t147_148.$set($t148_149);
1049 $t149_150.$set($t150_151);
1050 $t151_152.$set($t152_153);
1051 $t153_154.$set(32);
1052 $t154_155.$set($t155_156);
1053 $t156_157 = $t29_30.$get().addr(3);
1054 $t157_158 = { $get() { return $t156_157.$get().commitSecret; }, $set(v) { const obj = $t156_157.$get(); obj.commitSecret = v; $t156_157.$set(obj); } };
1055 $t158_159 = hexb('f652baa9151c9719ecb2716240a2a5ed9aeede1df19de0de862ded166a724783');
1056 $t159_160 = { $get() { return $t156_157.$get().treeHash; }, $set(v) { const obj = $t156_157.$get(); obj.treeHash = v; $t156_157.$set(obj); } };
1057 $t160_161 = hexb('08225ed7f3b0b8aa9f03b24395ed8ee7002d38209fddd7d941dd8ac629ac8a62');
1058 $t161_162 = { $get() { return $t156_157.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t156_157.$get(); obj.confirmedTranscriptHash = v; $t156_157.$set(obj); } };
1059 $t162_163 = hexb('dab8c2f8ec97a0e5a137c55a5b9ac1ccdf5ae8329810e98e0bc3930aae0b4be1');
1060 $t163_164 = { $get() { return $t156_157.$get().pskSecret; }, $set(v) { const obj = $t156_157.$get(); obj.pskSecret = v; $t156_157.$set(obj); } };
1061 $t164_165 = hexb('4106e07ffe8f0bfdbfd317d92e37a1fc6c4d1fba53ee054b7acf8587013d533b');
1062 $t165_166 = { $get() { return $t156_157.$get().groupContext; }, $set(v) { const obj = $t156_157.$get(); obj.groupContext = v; $t156_157.$set(obj); } };
1063 $t166_167 = hexb('0001000320a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e00000000000000032008225ed7f3b0b8aa9f03b24395ed8ee7002d38209fddd7d941dd8ac629ac8a6220dab8c2f8ec97a0e5a137c55a5b9ac1ccdf5ae8329810e98e0bc3930aae0b4be100');
1064 $t167_168 = { $get() { return $t156_157.$get().joinerSecret; }, $set(v) { const obj = $t156_157.$get(); obj.joinerSecret = v; $t156_157.$set(obj); } };
1065 $t168_169 = hexb('02a17a6d0995432062b8825fa071fabefb0aecadbe9864d229e82ea73abaf71d');
1066 $t169_170 = { $get() { return $t156_157.$get().welcomeSecret; }, $set(v) { const obj = $t156_157.$get(); obj.welcomeSecret = v; $t156_157.$set(obj); } };
1067 $t170_171 = hexb('c935f0face4e94e6f7e886a9df715bfcdcdc3d3a546601fc4ffa7f46b10904f6');
1068 $t171_172 = { $get() { return $t156_157.$get().initSecret; }, $set(v) { const obj = $t156_157.$get(); obj.initSecret = v; $t156_157.$set(obj); } };
1069 $t172_173 = hexb('561d5fe3f86642d8b9782d6227bb4b0dae805e6930432ed1b45334e14ff5225a');
1070 $t173_174 = { $get() { return $t156_157.$get().senderDataSecret; }, $set(v) { const obj = $t156_157.$get(); obj.senderDataSecret = v; $t156_157.$set(obj); } };
1071 $t174_175 = hexb('785fd9a3bbe87178b2b26aa494851d0528a1f39430c1b787c4d48ccacb1012ce');
1072 $t175_176 = { $get() { return $t156_157.$get().encryptionSecret; }, $set(v) { const obj = $t156_157.$get(); obj.encryptionSecret = v; $t156_157.$set(obj); } };
1073 $t176_177 = hexb('72842779a3f83949693f20efb2a64c60a43a8e5b12981d92b43660508869d9d9');
1074 $t177_178 = { $get() { return $t156_157.$get().exporterSecret; }, $set(v) { const obj = $t156_157.$get(); obj.exporterSecret = v; $t156_157.$set(obj); } };
1075 $t178_179 = hexb('db2749738091f49e479a570001f2daa7dc4aeeca2e1cfbb60f7d983b3dfd427c');
1076 $t179_180 = { $get() { return $t156_157.$get().externalSecret; }, $set(v) { const obj = $t156_157.$get(); obj.externalSecret = v; $t156_157.$set(obj); } };
1077 $t180_181 = hexb('75edc2d917753b5238d08a8549150672d8730731fddcd1aac9ac4dcdffab1fe6');
1078 $t181_182 = { $get() { return $t156_157.$get().confirmationKey; }, $set(v) { const obj = $t156_157.$get(); obj.confirmationKey = v; $t156_157.$set(obj); } };
1079 $t182_183 = hexb('b531f478b39a21ff975491f292bd971764b1c99ec5bec5ba5e12f2922fa13c9d');
1080 $t183_184 = { $get() { return $t156_157.$get().membershipKey; }, $set(v) { const obj = $t156_157.$get(); obj.membershipKey = v; $t156_157.$set(obj); } };
1081 $t184_185 = hexb('d68c57291ad3a57f20ace9386e52187581a3de9820938bd0424696287df64622');
1082 $t185_186 = { $get() { return $t156_157.$get().resumptionPSK; }, $set(v) { const obj = $t156_157.$get(); obj.resumptionPSK = v; $t156_157.$set(obj); } };
1083 $t186_187 = hexb('89b4a85bf900b6ba890a89eae531bb58c5b3b48f406918846a2d7195088edf04');
1084 $t187_188 = { $get() { return $t156_157.$get().epochAuthenticator; }, $set(v) { const obj = $t156_157.$get(); obj.epochAuthenticator = v; $t156_157.$set(obj); } };
1085 $t188_189 = hexb('5c811e1b167d6ccbbd1ddafe4df66f833e418cadd562e23e6ff7d8c8103f8ca3');
1086 $t189_190 = { $get() { return $t156_157.$get().externalPub; }, $set(v) { const obj = $t156_157.$get(); obj.externalPub = v; $t156_157.$set(obj); } };
1087 $t190_191 = hexb('1e8f03db3e2f5d6fa885455904f726f426354a441c5317a271417360ef7b9d2e');
1088 $t191_192 = { $get() { return $t156_157.$get().exporterLabel; }, $set(v) { const obj = $t156_157.$get(); obj.exporterLabel = v; $t156_157.$set(obj); } };
1089 $t192_193 = hexb('b76193af29eadc6e16c66493e2a4ef8219aad79986b6d4911493741ec1e666cc');
1090 $t193_194 = { $get() { return $t156_157.$get().exporterContext; }, $set(v) { const obj = $t156_157.$get(); obj.exporterContext = v; $t156_157.$set(obj); } };
1091 $t194_195 = hexb('941db06073e76050679d33cf1f0ec33de3e5a2cd00cb738b54c0dd90de251cdd');
1092 $t195_196 = { $get() { return $t156_157.$get().exporterLength; }, $set(v) { const obj = $t156_157.$get(); obj.exporterLength = v; $t156_157.$set(obj); } };
1093 $t196_197 = { $get() { return $t156_157.$get().exporterValue; }, $set(v) { const obj = $t156_157.$get(); obj.exporterValue = v; $t156_157.$set(obj); } };
1094 $t197_198 = hexb('4e2dd79d84c728b7503cee9acbe1e057523d0ff973d81e011905b5b581d2adb3');
1095 $t157_158.$set($t158_159);
1096 $t159_160.$set($t160_161);
1097 $t161_162.$set($t162_163);
1098 $t163_164.$set($t164_165);
1099 $t165_166.$set($t166_167);
1100 $t167_168.$set($t168_169);
1101 $t169_170.$set($t170_171);
1102 $t171_172.$set($t172_173);
1103 $t173_174.$set($t174_175);
1104 $t175_176.$set($t176_177);
1105 $t177_178.$set($t178_179);
1106 $t179_180.$set($t180_181);
1107 $t181_182.$set($t182_183);
1108 $t183_184.$set($t184_185);
1109 $t185_186.$set($t186_187);
1110 $t187_188.$set($t188_189);
1111 $t189_190.$set($t190_191);
1112 $t191_192.$set($t192_193);
1113 $t193_194.$set($t194_195);
1114 $t195_196.$set(32);
1115 $t196_197.$set($t197_198);
1116 $t198_199 = $t29_30.$get().addr(4);
1117 $t199_200 = { $get() { return $t198_199.$get().commitSecret; }, $set(v) { const obj = $t198_199.$get(); obj.commitSecret = v; $t198_199.$set(obj); } };
1118 $t200_201 = hexb('50fb68cdd31ff76b8d86b88b80124534d845cf2a835411b002b40b7b08d28278');
1119 $t201_202 = { $get() { return $t198_199.$get().treeHash; }, $set(v) { const obj = $t198_199.$get(); obj.treeHash = v; $t198_199.$set(obj); } };
1120 $t202_203 = hexb('918e07d9bfd965f880f860830b24427d9200fcac485e973b4943e67d322c1682');
1121 $t203_204 = { $get() { return $t198_199.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t198_199.$get(); obj.confirmedTranscriptHash = v; $t198_199.$set(obj); } };
1122 $t204_205 = hexb('5e88437e7e8e91582bc440a375e93280417c94c5e38db8537963dd3750dd3e16');
1123 $t205_206 = { $get() { return $t198_199.$get().pskSecret; }, $set(v) { const obj = $t198_199.$get(); obj.pskSecret = v; $t198_199.$set(obj); } };
1124 $t206_207 = hexb('c7e0f52b886962b1edde9e75b9ecafa0d8efeffb474732a3da298c470f1d1445');
1125 $t207_208 = { $get() { return $t198_199.$get().groupContext; }, $set(v) { const obj = $t198_199.$get(); obj.groupContext = v; $t198_199.$set(obj); } };
1126 $t208_209 = hexb('0001000320a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e000000000000000420918e07d9bfd965f880f860830b24427d9200fcac485e973b4943e67d322c1682205e88437e7e8e91582bc440a375e93280417c94c5e38db8537963dd3750dd3e1600');
1127 $t209_210 = { $get() { return $t198_199.$get().joinerSecret; }, $set(v) { const obj = $t198_199.$get(); obj.joinerSecret = v; $t198_199.$set(obj); } };
1128 $t210_211 = hexb('e3e8700db2c43917c6e36dae28732b21c285f9af371f66a5a9f5f9a70c65e1b2');
1129 $t211_212 = { $get() { return $t198_199.$get().welcomeSecret; }, $set(v) { const obj = $t198_199.$get(); obj.welcomeSecret = v; $t198_199.$set(obj); } };
1130 $t212_213 = hexb('6f6494718441537ce4cea94ad29fb66d3048c711e61f7f8aefccf4f6d61fcd86');
1131 $t213_214 = { $get() { return $t198_199.$get().initSecret; }, $set(v) { const obj = $t198_199.$get(); obj.initSecret = v; $t198_199.$set(obj); } };
1132 $t214_215 = hexb('20315bc816babd2c11b78bbcac01baa787136a26baf80adc0753d163c9b09d89');
1133 $t215_216 = { $get() { return $t198_199.$get().senderDataSecret; }, $set(v) { const obj = $t198_199.$get(); obj.senderDataSecret = v; $t198_199.$set(obj); } };
1134 $t216_217 = hexb('1535616e267425ab17e48a8607d9edc196601579303592885db62c71efbbdcbf');
1135 $t217_218 = { $get() { return $t198_199.$get().encryptionSecret; }, $set(v) { const obj = $t198_199.$get(); obj.encryptionSecret = v; $t198_199.$set(obj); } };
1136 $t218_219 = hexb('7e893a0ef9b0b4b1708213996b2ae8c8382a50fbce6caa4496e07093c36de351');
1137 $t219_220 = { $get() { return $t198_199.$get().exporterSecret; }, $set(v) { const obj = $t198_199.$get(); obj.exporterSecret = v; $t198_199.$set(obj); } };
1138 $t220_221 = hexb('7cd91ce426cada365fc15f9fb060c360ad81bc350096b404bc3d66a7d64a00cc');
1139 $t221_222 = { $get() { return $t198_199.$get().externalSecret; }, $set(v) { const obj = $t198_199.$get(); obj.externalSecret = v; $t198_199.$set(obj); } };
1140 $t222_223 = hexb('b3f67ce4547ae1e886e2275aa3760146d55cc9a1746bd36b0291c127368c7c38');
1141 $t223_224 = { $get() { return $t198_199.$get().confirmationKey; }, $set(v) { const obj = $t198_199.$get(); obj.confirmationKey = v; $t198_199.$set(obj); } };
1142 $t224_225 = hexb('9a34f258b8c3a3733d734a3c84ebf3683f34fa67760eeabf1e9a9b329a733d56');
1143 $t225_226 = { $get() { return $t198_199.$get().membershipKey; }, $set(v) { const obj = $t198_199.$get(); obj.membershipKey = v; $t198_199.$set(obj); } };
1144 $t226_227 = hexb('3dadf8dbb09c5c1e25c565dc7cffc494055e517b0129e0bc83fcbb7280e9ae7f');
1145 $t227_228 = { $get() { return $t198_199.$get().resumptionPSK; }, $set(v) { const obj = $t198_199.$get(); obj.resumptionPSK = v; $t198_199.$set(obj); } };
1146 $t228_229 = hexb('e914d45c8c1b06670b926ae56a7908c93d2721cc562f82778044e9888dc9e2d1');
1147 $t229_230 = { $get() { return $t198_199.$get().epochAuthenticator; }, $set(v) { const obj = $t198_199.$get(); obj.epochAuthenticator = v; $t198_199.$set(obj); } };
1148 $t230_231 = hexb('d59f86014e0c306be049bd9f2dbae06a3d225486e74042dba30238e4d72ab89e');
1149 $t231_232 = { $get() { return $t198_199.$get().externalPub; }, $set(v) { const obj = $t198_199.$get(); obj.externalPub = v; $t198_199.$set(obj); } };
1150 $t232_233 = hexb('8236c9f14f1d5bc27635be4da2795b5367660879f5afe3951b7f1eb7b69fd769');
1151 $t233_234 = { $get() { return $t198_199.$get().exporterLabel; }, $set(v) { const obj = $t198_199.$get(); obj.exporterLabel = v; $t198_199.$set(obj); } };
1152 $t234_235 = hexb('cc9c4b25b0bd69250b6e4f9908d1b170bf62fe8cc11ad36d33e602324ac0662a');
1153 $t235_236 = { $get() { return $t198_199.$get().exporterContext; }, $set(v) { const obj = $t198_199.$get(); obj.exporterContext = v; $t198_199.$set(obj); } };
1154 $t236_237 = hexb('a0f762fc82d5e421d8fdf8a317b2fd463008c625bf19db7fbfa4ac778b5106a2');
1155 $t237_238 = { $get() { return $t198_199.$get().exporterLength; }, $set(v) { const obj = $t198_199.$get(); obj.exporterLength = v; $t198_199.$set(obj); } };
1156 $t238_239 = { $get() { return $t198_199.$get().exporterValue; }, $set(v) { const obj = $t198_199.$get(); obj.exporterValue = v; $t198_199.$set(obj); } };
1157 $t239_240 = hexb('b07890e33ce8c281d07c7228c186c48f882a70967f30958a1cc0d9d3f547d551');
1158 $t199_200.$set($t200_201);
1159 $t201_202.$set($t202_203);
1160 $t203_204.$set($t204_205);
1161 $t205_206.$set($t206_207);
1162 $t207_208.$set($t208_209);
1163 $t209_210.$set($t210_211);
1164 $t211_212.$set($t212_213);
1165 $t213_214.$set($t214_215);
1166 $t215_216.$set($t216_217);
1167 $t217_218.$set($t218_219);
1168 $t219_220.$set($t220_221);
1169 $t221_222.$set($t222_223);
1170 $t223_224.$set($t224_225);
1171 $t225_226.$set($t226_227);
1172 $t227_228.$set($t228_229);
1173 $t229_230.$set($t230_231);
1174 $t231_232.$set($t232_233);
1175 $t233_234.$set($t234_235);
1176 $t235_236.$set($t236_237);
1177 $t237_238.$set(32);
1178 $t238_239.$set($t239_240);
1179 $t240_241 = $rt.builtin.sliceSlice($t29_30.$get(), undefined, undefined, undefined);
1180 ksEpochs.$set($t240_241);
1181 $t241_242 = { $value: $rt.builtin.makeSlice(3, 3, { numLeaves: 0, encryptionSecret: null, sdSecret: null, sdCiphertext: null, sdKey: null, sdNonce: null, leaves: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1182 $t242_243 = $t241_242.$get().addr(0);
1183 $t243_244 = { $get() { return $t242_243.$get().numLeaves; }, $set(v) { const obj = $t242_243.$get(); obj.numLeaves = v; $t242_243.$set(obj); } };
1184 $t244_245 = { $get() { return $t242_243.$get().encryptionSecret; }, $set(v) { const obj = $t242_243.$get(); obj.encryptionSecret = v; $t242_243.$set(obj); } };
1185 $t245_246 = hexb('59227ed552e4a6db0779d43aea694fd1b2c2540e605a099b95cf852b41e8ea66');
1186 $t246_247 = { $get() { return $t242_243.$get().sdSecret; }, $set(v) { const obj = $t242_243.$get(); obj.sdSecret = v; $t242_243.$set(obj); } };
1187 $t247_248 = hexb('d61204c27f29de53d30ff54a6ebb53e9908d044f55b9e726fa5736d4246b7b36');
1188 $t248_249 = { $get() { return $t242_243.$get().sdCiphertext; }, $set(v) { const obj = $t242_243.$get(); obj.sdCiphertext = v; $t242_243.$set(obj); } };
1189 $t249_250 = hexb('d0f75d5b691dbff35cafe226adad83aa5076c85035fef7d7fac489ad63f10828266b44ea366961509e8c9c24474abb6066c5a350aeb2b05415facb7ac2aa1b1efcf75a0c700bfdc93c705e352c');
1190 $t250_251 = { $get() { return $t242_243.$get().sdKey; }, $set(v) { const obj = $t242_243.$get(); obj.sdKey = v; $t242_243.$set(obj); } };
1191 $t251_252 = hexb('674a0c3e1500d068aae5d50f57a14648a63de2c246f8178382a150df8031f4cf');
1192 $t252_253 = { $get() { return $t242_243.$get().sdNonce; }, $set(v) { const obj = $t242_243.$get(); obj.sdNonce = v; $t242_243.$set(obj); } };
1193 $t253_254 = hexb('56b73cca00eac6cc5080be8d');
1194 $t254_255 = { $get() { return $t242_243.$get().leaves; }, $set(v) { const obj = $t242_243.$get(); obj.leaves = v; $t242_243.$set(obj); } };
1195 $t255_256 = { $value: $rt.builtin.makeSlice(1, 1, { gens: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1196 $t256_257 = $t255_256.$get().addr(0);
1197 $t257_258 = { $get() { return $t256_257.$get().gens; }, $set(v) { const obj = $t256_257.$get(); obj.gens = v; $t256_257.$set(obj); } };
1198 $t258_259 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1199 $t259_260 = $t258_259.$get().addr(0);
1200 $t260_261 = { $get() { return $t259_260.$get().generation; }, $set(v) { const obj = $t259_260.$get(); obj.generation = v; $t259_260.$set(obj); } };
1201 $t261_262 = { $get() { return $t259_260.$get().appKey; }, $set(v) { const obj = $t259_260.$get(); obj.appKey = v; $t259_260.$set(obj); } };
1202 $t262_263 = hexb('3f57aae38cbe6eaf31e4c05bd4a6aeba50c6878fa6fc2443bb8f3e57870fe712');
1203 $t263_264 = { $get() { return $t259_260.$get().appNonce; }, $set(v) { const obj = $t259_260.$get(); obj.appNonce = v; $t259_260.$set(obj); } };
1204 $t264_265 = hexb('4b2599c99b38c18775c85008');
1205 $t265_266 = { $get() { return $t259_260.$get().hsKey; }, $set(v) { const obj = $t259_260.$get(); obj.hsKey = v; $t259_260.$set(obj); } };
1206 $t266_267 = hexb('2ef3c21ad150b59cc78b21bd96e5dc0bd2579e19c7a46b7581fb1969103389d2');
1207 $t267_268 = { $get() { return $t259_260.$get().hsNonce; }, $set(v) { const obj = $t259_260.$get(); obj.hsNonce = v; $t259_260.$set(obj); } };
1208 $t268_269 = hexb('5794013a45e0563de4d35ce0');
1209 $t260_261.$set(0);
1210 $t261_262.$set($t262_263);
1211 $t263_264.$set($t264_265);
1212 $t265_266.$set($t266_267);
1213 $t267_268.$set($t268_269);
1214 $t269_270 = $t258_259.$get().addr(1);
1215 $t270_271 = { $get() { return $t269_270.$get().generation; }, $set(v) { const obj = $t269_270.$get(); obj.generation = v; $t269_270.$set(obj); } };
1216 $t271_272 = { $get() { return $t269_270.$get().appKey; }, $set(v) { const obj = $t269_270.$get(); obj.appKey = v; $t269_270.$set(obj); } };
1217 $t272_273 = hexb('bd44b39e16d4d59750469719cd330e4a52ecf5a1c9060254fac3e8ef73f4cf9b');
1218 $t273_274 = { $get() { return $t269_270.$get().appNonce; }, $set(v) { const obj = $t269_270.$get(); obj.appNonce = v; $t269_270.$set(obj); } };
1219 $t274_275 = hexb('82f8881240b93d1611b34e8c');
1220 $t275_276 = { $get() { return $t269_270.$get().hsKey; }, $set(v) { const obj = $t269_270.$get(); obj.hsKey = v; $t269_270.$set(obj); } };
1221 $t276_277 = hexb('488400e9d1a4a1d48e94da89dbc6c306d6479004e26aaade4101dd2fd86f2c21');
1222 $t277_278 = { $get() { return $t269_270.$get().hsNonce; }, $set(v) { const obj = $t269_270.$get(); obj.hsNonce = v; $t269_270.$set(obj); } };
1223 $t278_279 = hexb('424c2809d87242ecbb1da91f');
1224 $t270_271.$set(15);
1225 $t271_272.$set($t272_273);
1226 $t273_274.$set($t274_275);
1227 $t275_276.$set($t276_277);
1228 $t277_278.$set($t278_279);
1229 $t279_280 = $rt.builtin.sliceSlice($t258_259.$get(), undefined, undefined, undefined);
1230 $t257_258.$set($t279_280);
1231 $t280_281 = $rt.builtin.sliceSlice($t255_256.$get(), undefined, undefined, undefined);
1232 $t243_244.$set(1);
1233 $t244_245.$set($t245_246);
1234 $t246_247.$set($t247_248);
1235 $t248_249.$set($t249_250);
1236 $t250_251.$set($t251_252);
1237 $t252_253.$set($t253_254);
1238 $t254_255.$set($t280_281);
1239 $t281_282 = $t241_242.$get().addr(1);
1240 $t282_283 = { $get() { return $t281_282.$get().numLeaves; }, $set(v) { const obj = $t281_282.$get(); obj.numLeaves = v; $t281_282.$set(obj); } };
1241 $t283_284 = { $get() { return $t281_282.$get().encryptionSecret; }, $set(v) { const obj = $t281_282.$get(); obj.encryptionSecret = v; $t281_282.$set(obj); } };
1242 $t284_285 = hexb('d57a3e97f5db1387fd29e6111fd12cd15f55082164438e983f588e490d4be3c9');
1243 $t285_286 = { $get() { return $t281_282.$get().sdSecret; }, $set(v) { const obj = $t281_282.$get(); obj.sdSecret = v; $t281_282.$set(obj); } };
1244 $t286_287 = hexb('3c61a6ebf1f32a9f20dc375039459ba7afa95600ee0736bd91fbd7cd6f0f324e');
1245 $t287_288 = { $get() { return $t281_282.$get().sdCiphertext; }, $set(v) { const obj = $t281_282.$get(); obj.sdCiphertext = v; $t281_282.$set(obj); } };
1246 $t288_289 = hexb('e80d2f8e7283ce19fc07afe30277b9b5f5684fa8b3b858d51b3bc04e3d0cca2bec15d67d58063206b4df0b88a8a31e8bdfc1e4a1aacdf7d0b2df2cfb43fc85c9d53da8c05a3ced7c056e6f147f');
1247 $t289_290 = { $get() { return $t281_282.$get().sdKey; }, $set(v) { const obj = $t281_282.$get(); obj.sdKey = v; $t281_282.$set(obj); } };
1248 $t290_291 = hexb('989649a440be9cffdc2d4afeef55e15b667d2f0b145c406a5aae11405f4cc6d3');
1249 $t291_292 = { $get() { return $t281_282.$get().sdNonce; }, $set(v) { const obj = $t281_282.$get(); obj.sdNonce = v; $t281_282.$set(obj); } };
1250 $t292_293 = hexb('b111bc5303860211b9d1b95d');
1251 $t293_294 = { $get() { return $t281_282.$get().leaves; }, $set(v) { const obj = $t281_282.$get(); obj.leaves = v; $t281_282.$set(obj); } };
1252 $t294_295 = { $value: $rt.builtin.makeSlice(8, 8, { gens: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1253 $t295_296 = $t294_295.$get().addr(0);
1254 $t296_297 = { $get() { return $t295_296.$get().gens; }, $set(v) { const obj = $t295_296.$get(); obj.gens = v; $t295_296.$set(obj); } };
1255 $t297_298 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1256 $t298_299 = $t297_298.$get().addr(0);
1257 $t299_300 = { $get() { return $t298_299.$get().generation; }, $set(v) { const obj = $t298_299.$get(); obj.generation = v; $t298_299.$set(obj); } };
1258 $t300_301 = { $get() { return $t298_299.$get().appKey; }, $set(v) { const obj = $t298_299.$get(); obj.appKey = v; $t298_299.$set(obj); } };
1259 $t301_302 = hexb('79032092cdead1eb02385b174abec5722b474486c299636cf3c18b0cafa49267');
1260 $t302_303 = { $get() { return $t298_299.$get().appNonce; }, $set(v) { const obj = $t298_299.$get(); obj.appNonce = v; $t298_299.$set(obj); } };
1261 $t303_304 = hexb('ef49061a0037b0f1eb6cfdb1');
1262 $t304_305 = { $get() { return $t298_299.$get().hsKey; }, $set(v) { const obj = $t298_299.$get(); obj.hsKey = v; $t298_299.$set(obj); } };
1263 $t305_306 = hexb('55c0916e2c0d115e3ab35c70b2f16ded3051c79399fcffc2859e699f938e75c9');
1264 $t306_307 = { $get() { return $t298_299.$get().hsNonce; }, $set(v) { const obj = $t298_299.$get(); obj.hsNonce = v; $t298_299.$set(obj); } };
1265 $t307_308 = hexb('1d96560be0297c2a7df1988d');
1266 $t299_300.$set(0);
1267 $t300_301.$set($t301_302);
1268 $t302_303.$set($t303_304);
1269 $t304_305.$set($t305_306);
1270 $t306_307.$set($t307_308);
1271 $t308_309 = $t297_298.$get().addr(1);
1272 $t309_310 = { $get() { return $t308_309.$get().generation; }, $set(v) { const obj = $t308_309.$get(); obj.generation = v; $t308_309.$set(obj); } };
1273 $t310_311 = { $get() { return $t308_309.$get().appKey; }, $set(v) { const obj = $t308_309.$get(); obj.appKey = v; $t308_309.$set(obj); } };
1274 $t311_312 = hexb('d3660e4b2e2014fb6eba6db191cb41912bdbf75f48dc1cbc284a8dd26d05715b');
1275 $t312_313 = { $get() { return $t308_309.$get().appNonce; }, $set(v) { const obj = $t308_309.$get(); obj.appNonce = v; $t308_309.$set(obj); } };
1276 $t313_314 = hexb('eb69d4f656abaffa736363cc');
1277 $t314_315 = { $get() { return $t308_309.$get().hsKey; }, $set(v) { const obj = $t308_309.$get(); obj.hsKey = v; $t308_309.$set(obj); } };
1278 $t315_316 = hexb('f0037a7de2797df1ff036009dc6750d8cc7901c434d19561c42b8e9adc83acf0');
1279 $t316_317 = { $get() { return $t308_309.$get().hsNonce; }, $set(v) { const obj = $t308_309.$get(); obj.hsNonce = v; $t308_309.$set(obj); } };
1280 $t317_318 = hexb('c3b1dab20c6d1cf996c22471');
1281 $t309_310.$set(15);
1282 $t310_311.$set($t311_312);
1283 $t312_313.$set($t313_314);
1284 $t314_315.$set($t315_316);
1285 $t316_317.$set($t317_318);
1286 $t318_319 = $rt.builtin.sliceSlice($t297_298.$get(), undefined, undefined, undefined);
1287 $t296_297.$set($t318_319);
1288 $t319_320 = $t294_295.$get().addr(1);
1289 $t320_321 = { $get() { return $t319_320.$get().gens; }, $set(v) { const obj = $t319_320.$get(); obj.gens = v; $t319_320.$set(obj); } };
1290 $t321_322 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1291 $t322_323 = $t321_322.$get().addr(0);
1292 $t323_324 = { $get() { return $t322_323.$get().generation; }, $set(v) { const obj = $t322_323.$get(); obj.generation = v; $t322_323.$set(obj); } };
1293 $t324_325 = { $get() { return $t322_323.$get().appKey; }, $set(v) { const obj = $t322_323.$get(); obj.appKey = v; $t322_323.$set(obj); } };
1294 $t325_326 = hexb('f3a3e0bc8954deb8888974325a604347c8a37cac40a0ff973ba6c269d8c300ee');
1295 $t326_327 = { $get() { return $t322_323.$get().appNonce; }, $set(v) { const obj = $t322_323.$get(); obj.appNonce = v; $t322_323.$set(obj); } };
1296 $t327_328 = hexb('dfdf7c21ece020b34591c7e6');
1297 $t328_329 = { $get() { return $t322_323.$get().hsKey; }, $set(v) { const obj = $t322_323.$get(); obj.hsKey = v; $t322_323.$set(obj); } };
1298 $t329_330 = hexb('2da73ee4f45f6993330be8bd345d55e2e20e0676fddc1cfe4905ffc96e12e850');
1299 $t330_331 = { $get() { return $t322_323.$get().hsNonce; }, $set(v) { const obj = $t322_323.$get(); obj.hsNonce = v; $t322_323.$set(obj); } };
1300 $t331_332 = hexb('da15885d28be5a9992acbdda');
1301 $t323_324.$set(0);
1302 $t324_325.$set($t325_326);
1303 $t326_327.$set($t327_328);
1304 $t328_329.$set($t329_330);
1305 $t330_331.$set($t331_332);
1306 $t332_333 = $t321_322.$get().addr(1);
1307 $t333_334 = { $get() { return $t332_333.$get().generation; }, $set(v) { const obj = $t332_333.$get(); obj.generation = v; $t332_333.$set(obj); } };
1308 $t334_335 = { $get() { return $t332_333.$get().appKey; }, $set(v) { const obj = $t332_333.$get(); obj.appKey = v; $t332_333.$set(obj); } };
1309 $t335_336 = hexb('5f0ee220bbd25c3333c1d03fced661972e00249503d47a43e6023f6f77c69f6d');
1310 $t336_337 = { $get() { return $t332_333.$get().appNonce; }, $set(v) { const obj = $t332_333.$get(); obj.appNonce = v; $t332_333.$set(obj); } };
1311 $t337_338 = hexb('ec3b8f23a06e5949e2561ae4');
1312 $t338_339 = { $get() { return $t332_333.$get().hsKey; }, $set(v) { const obj = $t332_333.$get(); obj.hsKey = v; $t332_333.$set(obj); } };
1313 $t339_340 = hexb('1b3b385763a2192c4f5166376719c78e7b32cc218d5ed83194d90e97f90865de');
1314 $t340_341 = { $get() { return $t332_333.$get().hsNonce; }, $set(v) { const obj = $t332_333.$get(); obj.hsNonce = v; $t332_333.$set(obj); } };
1315 $t341_342 = hexb('2af2483f73b8da6a5d59dfd3');
1316 $t333_334.$set(15);
1317 $t334_335.$set($t335_336);
1318 $t336_337.$set($t337_338);
1319 $t338_339.$set($t339_340);
1320 $t340_341.$set($t341_342);
1321 $t342_343 = $rt.builtin.sliceSlice($t321_322.$get(), undefined, undefined, undefined);
1322 $t320_321.$set($t342_343);
1323 $t343_344 = $t294_295.$get().addr(2);
1324 $t344_345 = { $get() { return $t343_344.$get().gens; }, $set(v) { const obj = $t343_344.$get(); obj.gens = v; $t343_344.$set(obj); } };
1325 $t345_346 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1326 $t346_347 = $t345_346.$get().addr(0);
1327 $t347_348 = { $get() { return $t346_347.$get().generation; }, $set(v) { const obj = $t346_347.$get(); obj.generation = v; $t346_347.$set(obj); } };
1328 $t348_349 = { $get() { return $t346_347.$get().appKey; }, $set(v) { const obj = $t346_347.$get(); obj.appKey = v; $t346_347.$set(obj); } };
1329 $t349_350 = hexb('50702c3e200b9292b7c26b5f906ce9abf57044767523f06bb40eea5ab56403a3');
1330 $t350_351 = { $get() { return $t346_347.$get().appNonce; }, $set(v) { const obj = $t346_347.$get(); obj.appNonce = v; $t346_347.$set(obj); } };
1331 $t351_352 = hexb('2027bed41530e08aa53f6fb3');
1332 $t352_353 = { $get() { return $t346_347.$get().hsKey; }, $set(v) { const obj = $t346_347.$get(); obj.hsKey = v; $t346_347.$set(obj); } };
1333 $t353_354 = hexb('32fd4ccd71b9495e7faae476bc6030de01ab18d7468c360d3fc3b63dc90012a8');
1334 $t354_355 = { $get() { return $t346_347.$get().hsNonce; }, $set(v) { const obj = $t346_347.$get(); obj.hsNonce = v; $t346_347.$set(obj); } };
1335 $t355_356 = hexb('ebcd40f83950051a4a46270c');
1336 $t347_348.$set(0);
1337 $t348_349.$set($t349_350);
1338 $t350_351.$set($t351_352);
1339 $t352_353.$set($t353_354);
1340 $t354_355.$set($t355_356);
1341 $t356_357 = $t345_346.$get().addr(1);
1342 $t357_358 = { $get() { return $t356_357.$get().generation; }, $set(v) { const obj = $t356_357.$get(); obj.generation = v; $t356_357.$set(obj); } };
1343 $t358_359 = { $get() { return $t356_357.$get().appKey; }, $set(v) { const obj = $t356_357.$get(); obj.appKey = v; $t356_357.$set(obj); } };
1344 $t359_360 = hexb('e68fb3a6802a0723db3438f477c48a902458b1c0490838f2eda0fbd8b7b195fa');
1345 $t360_361 = { $get() { return $t356_357.$get().appNonce; }, $set(v) { const obj = $t356_357.$get(); obj.appNonce = v; $t356_357.$set(obj); } };
1346 $t361_362 = hexb('ee63416b0de9f578a8097a42');
1347 $t362_363 = { $get() { return $t356_357.$get().hsKey; }, $set(v) { const obj = $t356_357.$get(); obj.hsKey = v; $t356_357.$set(obj); } };
1348 $t363_364 = hexb('0b5e1e68ae79e61b53f629ba9515e564f829cc06c544283940344bcb86aec193');
1349 $t364_365 = { $get() { return $t356_357.$get().hsNonce; }, $set(v) { const obj = $t356_357.$get(); obj.hsNonce = v; $t356_357.$set(obj); } };
1350 $t365_366 = hexb('b8c72c1921a44dfdc85710bb');
1351 $t357_358.$set(15);
1352 $t358_359.$set($t359_360);
1353 $t360_361.$set($t361_362);
1354 $t362_363.$set($t363_364);
1355 $t364_365.$set($t365_366);
1356 $t366_367 = $rt.builtin.sliceSlice($t345_346.$get(), undefined, undefined, undefined);
1357 $t344_345.$set($t366_367);
1358 $t367_368 = $t294_295.$get().addr(3);
1359 $t368_369 = { $get() { return $t367_368.$get().gens; }, $set(v) { const obj = $t367_368.$get(); obj.gens = v; $t367_368.$set(obj); } };
1360 $t369_370 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1361 $t370_371 = $t369_370.$get().addr(0);
1362 $t371_372 = { $get() { return $t370_371.$get().generation; }, $set(v) { const obj = $t370_371.$get(); obj.generation = v; $t370_371.$set(obj); } };
1363 $t372_373 = { $get() { return $t370_371.$get().appKey; }, $set(v) { const obj = $t370_371.$get(); obj.appKey = v; $t370_371.$set(obj); } };
1364 $t373_374 = hexb('a598c5fed9cb918b29d000403e7c5bfae6119cacf0ec5ea17084b4ef4607f380');
1365 $t374_375 = { $get() { return $t370_371.$get().appNonce; }, $set(v) { const obj = $t370_371.$get(); obj.appNonce = v; $t370_371.$set(obj); } };
1366 $t375_376 = hexb('25e1db42bbf3f6faa70ce0a6');
1367 $t376_377 = { $get() { return $t370_371.$get().hsKey; }, $set(v) { const obj = $t370_371.$get(); obj.hsKey = v; $t370_371.$set(obj); } };
1368 $t377_378 = hexb('71918cd048f1e1a69429bed587c9828223634a4e35f019a9a640265841803593');
1369 $t378_379 = { $get() { return $t370_371.$get().hsNonce; }, $set(v) { const obj = $t370_371.$get(); obj.hsNonce = v; $t370_371.$set(obj); } };
1370 $t379_380 = hexb('a082534ae9126a732050acf7');
1371 $t371_372.$set(0);
1372 $t372_373.$set($t373_374);
1373 $t374_375.$set($t375_376);
1374 $t376_377.$set($t377_378);
1375 $t378_379.$set($t379_380);
1376 $t380_381 = $t369_370.$get().addr(1);
1377 $t381_382 = { $get() { return $t380_381.$get().generation; }, $set(v) { const obj = $t380_381.$get(); obj.generation = v; $t380_381.$set(obj); } };
1378 $t382_383 = { $get() { return $t380_381.$get().appKey; }, $set(v) { const obj = $t380_381.$get(); obj.appKey = v; $t380_381.$set(obj); } };
1379 $t383_384 = hexb('2d68bf10fcb74f21e98cb537bb51e49bfad9633c8f158e8295c80a20bba5f564');
1380 $t384_385 = { $get() { return $t380_381.$get().appNonce; }, $set(v) { const obj = $t380_381.$get(); obj.appNonce = v; $t380_381.$set(obj); } };
1381 $t385_386 = hexb('4000c00939f8e48a8626c94f');
1382 $t386_387 = { $get() { return $t380_381.$get().hsKey; }, $set(v) { const obj = $t380_381.$get(); obj.hsKey = v; $t380_381.$set(obj); } };
1383 $t387_388 = hexb('3b65ca68be982ced788ead218df556acd5fb7be76589f2cdc06bd5ca76f84e24');
1384 $t388_389 = { $get() { return $t380_381.$get().hsNonce; }, $set(v) { const obj = $t380_381.$get(); obj.hsNonce = v; $t380_381.$set(obj); } };
1385 $t389_390 = hexb('d06444a6079a25b6363e1e2e');
1386 $t381_382.$set(15);
1387 $t382_383.$set($t383_384);
1388 $t384_385.$set($t385_386);
1389 $t386_387.$set($t387_388);
1390 $t388_389.$set($t389_390);
1391 $t390_391 = $rt.builtin.sliceSlice($t369_370.$get(), undefined, undefined, undefined);
1392 $t368_369.$set($t390_391);
1393 $t391_392 = $t294_295.$get().addr(4);
1394 $t392_393 = { $get() { return $t391_392.$get().gens; }, $set(v) { const obj = $t391_392.$get(); obj.gens = v; $t391_392.$set(obj); } };
1395 $t393_394 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1396 $t394_395 = $t393_394.$get().addr(0);
1397 $t395_396 = { $get() { return $t394_395.$get().generation; }, $set(v) { const obj = $t394_395.$get(); obj.generation = v; $t394_395.$set(obj); } };
1398 $t396_397 = { $get() { return $t394_395.$get().appKey; }, $set(v) { const obj = $t394_395.$get(); obj.appKey = v; $t394_395.$set(obj); } };
1399 $t397_398 = hexb('dcef1450bf62d0b2204b8e517824d03c21e7e13049854cdc3600becf356de422');
1400 $t398_399 = { $get() { return $t394_395.$get().appNonce; }, $set(v) { const obj = $t394_395.$get(); obj.appNonce = v; $t394_395.$set(obj); } };
1401 $t399_400 = hexb('cb474c0a5c28821f0c567b0d');
1402 $t400_401 = { $get() { return $t394_395.$get().hsKey; }, $set(v) { const obj = $t394_395.$get(); obj.hsKey = v; $t394_395.$set(obj); } };
1403 $t401_402 = hexb('dc32974d57f431297470cc8af57533d113e9db7b52fd850f6af2f61940ff2473');
1404 $t402_403 = { $get() { return $t394_395.$get().hsNonce; }, $set(v) { const obj = $t394_395.$get(); obj.hsNonce = v; $t394_395.$set(obj); } };
1405 $t403_404 = hexb('a4c9cc6b474e902de86ba656');
1406 $t395_396.$set(0);
1407 $t396_397.$set($t397_398);
1408 $t398_399.$set($t399_400);
1409 $t400_401.$set($t401_402);
1410 $t402_403.$set($t403_404);
1411 $t404_405 = $t393_394.$get().addr(1);
1412 $t405_406 = { $get() { return $t404_405.$get().generation; }, $set(v) { const obj = $t404_405.$get(); obj.generation = v; $t404_405.$set(obj); } };
1413 $t406_407 = { $get() { return $t404_405.$get().appKey; }, $set(v) { const obj = $t404_405.$get(); obj.appKey = v; $t404_405.$set(obj); } };
1414 $t407_408 = hexb('389c94af36aa817a380fd4fdda932385579ba9f2d3a72349fe704efd2901396e');
1415 $t408_409 = { $get() { return $t404_405.$get().appNonce; }, $set(v) { const obj = $t404_405.$get(); obj.appNonce = v; $t404_405.$set(obj); } };
1416 $t409_410 = hexb('a047a51fd99c36e1aaa86695');
1417 $t410_411 = { $get() { return $t404_405.$get().hsKey; }, $set(v) { const obj = $t404_405.$get(); obj.hsKey = v; $t404_405.$set(obj); } };
1418 $t411_412 = hexb('3212a4167a024bdb4d72dbfe1c02984698e70a0dcb215165c8a576fa88ef3c0b');
1419 $t412_413 = { $get() { return $t404_405.$get().hsNonce; }, $set(v) { const obj = $t404_405.$get(); obj.hsNonce = v; $t404_405.$set(obj); } };
1420 $t413_414 = hexb('8bc3825e05162cc3220bf787');
1421 $t405_406.$set(15);
1422 $t406_407.$set($t407_408);
1423 $t408_409.$set($t409_410);
1424 $t410_411.$set($t411_412);
1425 $t412_413.$set($t413_414);
1426 $t414_415 = $rt.builtin.sliceSlice($t393_394.$get(), undefined, undefined, undefined);
1427 $t392_393.$set($t414_415);
1428 $t415_416 = $t294_295.$get().addr(5);
1429 $t416_417 = { $get() { return $t415_416.$get().gens; }, $set(v) { const obj = $t415_416.$get(); obj.gens = v; $t415_416.$set(obj); } };
1430 $t417_418 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1431 $t418_419 = $t417_418.$get().addr(0);
1432 $t419_420 = { $get() { return $t418_419.$get().generation; }, $set(v) { const obj = $t418_419.$get(); obj.generation = v; $t418_419.$set(obj); } };
1433 $t420_421 = { $get() { return $t418_419.$get().appKey; }, $set(v) { const obj = $t418_419.$get(); obj.appKey = v; $t418_419.$set(obj); } };
1434 $t421_422 = hexb('5cbc6e9b705e19032afe6e22f44eaaa0b488c57cd441e37c7bb1224be1026f38');
1435 $t422_423 = { $get() { return $t418_419.$get().appNonce; }, $set(v) { const obj = $t418_419.$get(); obj.appNonce = v; $t418_419.$set(obj); } };
1436 $t423_424 = hexb('ee50d01dd78de80239309c5d');
1437 $t424_425 = { $get() { return $t418_419.$get().hsKey; }, $set(v) { const obj = $t418_419.$get(); obj.hsKey = v; $t418_419.$set(obj); } };
1438 $t425_426 = hexb('0a6538d0472fbdd15c912bf67b84de562c9d27afd44a69cb5d28026bb6e93851');
1439 $t426_427 = { $get() { return $t418_419.$get().hsNonce; }, $set(v) { const obj = $t418_419.$get(); obj.hsNonce = v; $t418_419.$set(obj); } };
1440 $t427_428 = hexb('59376149e274000b31ffff72');
1441 $t419_420.$set(0);
1442 $t420_421.$set($t421_422);
1443 $t422_423.$set($t423_424);
1444 $t424_425.$set($t425_426);
1445 $t426_427.$set($t427_428);
1446 $t428_429 = $t417_418.$get().addr(1);
1447 $t429_430 = { $get() { return $t428_429.$get().generation; }, $set(v) { const obj = $t428_429.$get(); obj.generation = v; $t428_429.$set(obj); } };
1448 $t430_431 = { $get() { return $t428_429.$get().appKey; }, $set(v) { const obj = $t428_429.$get(); obj.appKey = v; $t428_429.$set(obj); } };
1449 $t431_432 = hexb('5fef1992203713ffb91bc67965402b6345f691bcc4c656e4cffd0853a4ac6474');
1450 $t432_433 = { $get() { return $t428_429.$get().appNonce; }, $set(v) { const obj = $t428_429.$get(); obj.appNonce = v; $t428_429.$set(obj); } };
1451 $t433_434 = hexb('c9862f345543c351e0b81412');
1452 $t434_435 = { $get() { return $t428_429.$get().hsKey; }, $set(v) { const obj = $t428_429.$get(); obj.hsKey = v; $t428_429.$set(obj); } };
1453 $t435_436 = hexb('0ae63f1aefef7deec797082de74d07020b4fc491012da9a297a7f85f8f3313d7');
1454 $t436_437 = { $get() { return $t428_429.$get().hsNonce; }, $set(v) { const obj = $t428_429.$get(); obj.hsNonce = v; $t428_429.$set(obj); } };
1455 $t437_438 = hexb('138293ae1dd09af823dc600b');
1456 $t429_430.$set(15);
1457 $t430_431.$set($t431_432);
1458 $t432_433.$set($t433_434);
1459 $t434_435.$set($t435_436);
1460 $t436_437.$set($t437_438);
1461 $t438_439 = $rt.builtin.sliceSlice($t417_418.$get(), undefined, undefined, undefined);
1462 $t416_417.$set($t438_439);
1463 $t439_440 = $t294_295.$get().addr(6);
1464 $t440_441 = { $get() { return $t439_440.$get().gens; }, $set(v) { const obj = $t439_440.$get(); obj.gens = v; $t439_440.$set(obj); } };
1465 $t441_442 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1466 $t442_443 = $t441_442.$get().addr(0);
1467 $t443_444 = { $get() { return $t442_443.$get().generation; }, $set(v) { const obj = $t442_443.$get(); obj.generation = v; $t442_443.$set(obj); } };
1468 $t444_445 = { $get() { return $t442_443.$get().appKey; }, $set(v) { const obj = $t442_443.$get(); obj.appKey = v; $t442_443.$set(obj); } };
1469 $t445_446 = hexb('8a88a31e26cbdf93485abb16c14f552d40d15021c4a37c56e3b35b8c1cfe6c0b');
1470 $t446_447 = { $get() { return $t442_443.$get().appNonce; }, $set(v) { const obj = $t442_443.$get(); obj.appNonce = v; $t442_443.$set(obj); } };
1471 $t447_448 = hexb('8fac76e85c7195e73d06858a');
1472 $t448_449 = { $get() { return $t442_443.$get().hsKey; }, $set(v) { const obj = $t442_443.$get(); obj.hsKey = v; $t442_443.$set(obj); } };
1473 $t449_450 = hexb('52b795f243c6812f0e8921473463c76d581e15aef8602df2747bd06f6de1d592');
1474 $t450_451 = { $get() { return $t442_443.$get().hsNonce; }, $set(v) { const obj = $t442_443.$get(); obj.hsNonce = v; $t442_443.$set(obj); } };
1475 $t451_452 = hexb('fb677efc646c93883452211b');
1476 $t443_444.$set(0);
1477 $t444_445.$set($t445_446);
1478 $t446_447.$set($t447_448);
1479 $t448_449.$set($t449_450);
1480 $t450_451.$set($t451_452);
1481 $t452_453 = $t441_442.$get().addr(1);
1482 $t453_454 = { $get() { return $t452_453.$get().generation; }, $set(v) { const obj = $t452_453.$get(); obj.generation = v; $t452_453.$set(obj); } };
1483 $t454_455 = { $get() { return $t452_453.$get().appKey; }, $set(v) { const obj = $t452_453.$get(); obj.appKey = v; $t452_453.$set(obj); } };
1484 $t455_456 = hexb('75092d7b88678ae5f14073fea16d6328465b009f6d45b72068e55976d1e65d48');
1485 $t456_457 = { $get() { return $t452_453.$get().appNonce; }, $set(v) { const obj = $t452_453.$get(); obj.appNonce = v; $t452_453.$set(obj); } };
1486 $t457_458 = hexb('29c9fbcbff4baeeca874a5ff');
1487 $t458_459 = { $get() { return $t452_453.$get().hsKey; }, $set(v) { const obj = $t452_453.$get(); obj.hsKey = v; $t452_453.$set(obj); } };
1488 $t459_460 = hexb('95d7c164d4f9f93aa52c830f5b578cee3fdaf1d90aaf173ccb59c56a598ed4ae');
1489 $t460_461 = { $get() { return $t452_453.$get().hsNonce; }, $set(v) { const obj = $t452_453.$get(); obj.hsNonce = v; $t452_453.$set(obj); } };
1490 $t461_462 = hexb('1d59d4a38b0ad2321b2949f0');
1491 $t453_454.$set(15);
1492 $t454_455.$set($t455_456);
1493 $t456_457.$set($t457_458);
1494 $t458_459.$set($t459_460);
1495 $t460_461.$set($t461_462);
1496 $t462_463 = $rt.builtin.sliceSlice($t441_442.$get(), undefined, undefined, undefined);
1497 $t440_441.$set($t462_463);
1498 $t463_464 = $t294_295.$get().addr(7);
1499 $t464_465 = { $get() { return $t463_464.$get().gens; }, $set(v) { const obj = $t463_464.$get(); obj.gens = v; $t463_464.$set(obj); } };
1500 $t465_466 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1501 $t466_467 = $t465_466.$get().addr(0);
1502 $t467_468 = { $get() { return $t466_467.$get().generation; }, $set(v) { const obj = $t466_467.$get(); obj.generation = v; $t466_467.$set(obj); } };
1503 $t468_469 = { $get() { return $t466_467.$get().appKey; }, $set(v) { const obj = $t466_467.$get(); obj.appKey = v; $t466_467.$set(obj); } };
1504 $t469_470 = hexb('39d155f1b517eb74ea4dd217faf3c8a0d5ee225c3a09a9e0260766405c1a30d1');
1505 $t470_471 = { $get() { return $t466_467.$get().appNonce; }, $set(v) { const obj = $t466_467.$get(); obj.appNonce = v; $t466_467.$set(obj); } };
1506 $t471_472 = hexb('e7d1e967163d2eee48bbcd2f');
1507 $t472_473 = { $get() { return $t466_467.$get().hsKey; }, $set(v) { const obj = $t466_467.$get(); obj.hsKey = v; $t466_467.$set(obj); } };
1508 $t473_474 = hexb('28c09a2d5275cba5e14787f61f8ba210b77e0f790bb1eea19ee6208055d5311c');
1509 $t474_475 = { $get() { return $t466_467.$get().hsNonce; }, $set(v) { const obj = $t466_467.$get(); obj.hsNonce = v; $t466_467.$set(obj); } };
1510 $t475_476 = hexb('c5312900774af942a8499e4f');
1511 $t467_468.$set(0);
1512 $t468_469.$set($t469_470);
1513 $t470_471.$set($t471_472);
1514 $t472_473.$set($t473_474);
1515 $t474_475.$set($t475_476);
1516 $t476_477 = $t465_466.$get().addr(1);
1517 $t477_478 = { $get() { return $t476_477.$get().generation; }, $set(v) { const obj = $t476_477.$get(); obj.generation = v; $t476_477.$set(obj); } };
1518 $t478_479 = { $get() { return $t476_477.$get().appKey; }, $set(v) { const obj = $t476_477.$get(); obj.appKey = v; $t476_477.$set(obj); } };
1519 $t479_480 = hexb('acf22181714e05aa45f0c9e179d0319cd4693b94c0aacfd60d33da3eee44cc64');
1520 $t480_481 = { $get() { return $t476_477.$get().appNonce; }, $set(v) { const obj = $t476_477.$get(); obj.appNonce = v; $t476_477.$set(obj); } };
1521 $t481_482 = hexb('343807a851dc834515f0eff0');
1522 $t482_483 = { $get() { return $t476_477.$get().hsKey; }, $set(v) { const obj = $t476_477.$get(); obj.hsKey = v; $t476_477.$set(obj); } };
1523 $t483_484 = hexb('ebb1df28bf07a18cd4a1aa216ff96d8fc61afa7b2d98cb4b37a6a3a791813e37');
1524 $t484_485 = { $get() { return $t476_477.$get().hsNonce; }, $set(v) { const obj = $t476_477.$get(); obj.hsNonce = v; $t476_477.$set(obj); } };
1525 $t485_486 = hexb('73b9a10947dd9dfadb6d7995');
1526 $t477_478.$set(15);
1527 $t478_479.$set($t479_480);
1528 $t480_481.$set($t481_482);
1529 $t482_483.$set($t483_484);
1530 $t484_485.$set($t485_486);
1531 $t486_487 = $rt.builtin.sliceSlice($t465_466.$get(), undefined, undefined, undefined);
1532 $t464_465.$set($t486_487);
1533 $t487_488 = $rt.builtin.sliceSlice($t294_295.$get(), undefined, undefined, undefined);
1534 $t282_283.$set(8);
1535 $t283_284.$set($t284_285);
1536 $t285_286.$set($t286_287);
1537 $t287_288.$set($t288_289);
1538 $t289_290.$set($t290_291);
1539 $t291_292.$set($t292_293);
1540 $t293_294.$set($t487_488);
1541 $t488_489 = $t241_242.$get().addr(2);
1542 $t489_490 = { $get() { return $t488_489.$get().numLeaves; }, $set(v) { const obj = $t488_489.$get(); obj.numLeaves = v; $t488_489.$set(obj); } };
1543 $t490_491 = { $get() { return $t488_489.$get().encryptionSecret; }, $set(v) { const obj = $t488_489.$get(); obj.encryptionSecret = v; $t488_489.$set(obj); } };
1544 $t491_492 = hexb('49859949b3e26371713cfb1f753ae543ce1b7632710242628571b798953187c6');
1545 $t492_493 = { $get() { return $t488_489.$get().sdSecret; }, $set(v) { const obj = $t488_489.$get(); obj.sdSecret = v; $t488_489.$set(obj); } };
1546 $t493_494 = hexb('09c466b58b772325fc28959b4adc2c8af8ec2e094e0d1a3d5f40dd8a6e0d59cc');
1547 $t494_495 = { $get() { return $t488_489.$get().sdCiphertext; }, $set(v) { const obj = $t488_489.$get(); obj.sdCiphertext = v; $t488_489.$set(obj); } };
1548 $t495_496 = hexb('aaff203bc0df0c63f4b0db2ebcec25379cac0d185753d2dc19de67dff0b5d11559789edc102488d4fd7b602871079095b78ea8799ac2d22055076424ffc9925a837cbbe859c05bc407af0946ca');
1549 $t496_497 = { $get() { return $t488_489.$get().sdKey; }, $set(v) { const obj = $t488_489.$get(); obj.sdKey = v; $t488_489.$set(obj); } };
1550 $t497_498 = hexb('49f35b2ce57617cc7e57cc1e0d10891a6d8de533c1a732d12896a895335fcb01');
1551 $t498_499 = { $get() { return $t488_489.$get().sdNonce; }, $set(v) { const obj = $t488_489.$get(); obj.sdNonce = v; $t488_489.$set(obj); } };
1552 $t499_500 = hexb('ece5b65f163e2e2df0e94f9f');
1553 $t500_501 = { $get() { return $t488_489.$get().leaves; }, $set(v) { const obj = $t488_489.$get(); obj.leaves = v; $t488_489.$set(obj); } };
1554 $t501_502 = { $value: $rt.builtin.makeSlice(32, 32, { gens: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1555 $t502_503 = $t501_502.$get().addr(0);
1556 $t503_504 = { $get() { return $t502_503.$get().gens; }, $set(v) { const obj = $t502_503.$get(); obj.gens = v; $t502_503.$set(obj); } };
1557 $t504_505 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1558 $t505_506 = $t504_505.$get().addr(0);
1559 $t506_507 = { $get() { return $t505_506.$get().generation; }, $set(v) { const obj = $t505_506.$get(); obj.generation = v; $t505_506.$set(obj); } };
1560 $t507_508 = { $get() { return $t505_506.$get().appKey; }, $set(v) { const obj = $t505_506.$get(); obj.appKey = v; $t505_506.$set(obj); } };
1561 $t508_509 = hexb('0a24d577a06af2fa3ab9b6d5144046267b63ce0b19dfa454bc35a4d0f52b2e69');
1562 $t509_510 = { $get() { return $t505_506.$get().appNonce; }, $set(v) { const obj = $t505_506.$get(); obj.appNonce = v; $t505_506.$set(obj); } };
1563 $t510_511 = hexb('58f972b0bb12404226e643e5');
1564 $t511_512 = { $get() { return $t505_506.$get().hsKey; }, $set(v) { const obj = $t505_506.$get(); obj.hsKey = v; $t505_506.$set(obj); } };
1565 $t512_513 = hexb('5102b1705ef5a1f9390bd52a1e648a480e8bc806e9380899f8ce55ae8bd713bf');
1566 $t513_514 = { $get() { return $t505_506.$get().hsNonce; }, $set(v) { const obj = $t505_506.$get(); obj.hsNonce = v; $t505_506.$set(obj); } };
1567 $t514_515 = hexb('7aa4342c298b754aa3c4523c');
1568 $t506_507.$set(0);
1569 $t507_508.$set($t508_509);
1570 $t509_510.$set($t510_511);
1571 $t511_512.$set($t512_513);
1572 $t513_514.$set($t514_515);
1573 $t515_516 = $t504_505.$get().addr(1);
1574 $t516_517 = { $get() { return $t515_516.$get().generation; }, $set(v) { const obj = $t515_516.$get(); obj.generation = v; $t515_516.$set(obj); } };
1575 $t517_518 = { $get() { return $t515_516.$get().appKey; }, $set(v) { const obj = $t515_516.$get(); obj.appKey = v; $t515_516.$set(obj); } };
1576 $t518_519 = hexb('87c441cacbc46d63ef710d8f5d9dc6d7219c75af004f0672beec69ac757b94ed');
1577 $t519_520 = { $get() { return $t515_516.$get().appNonce; }, $set(v) { const obj = $t515_516.$get(); obj.appNonce = v; $t515_516.$set(obj); } };
1578 $t520_521 = hexb('49afcd1b5644251d1559714b');
1579 $t521_522 = { $get() { return $t515_516.$get().hsKey; }, $set(v) { const obj = $t515_516.$get(); obj.hsKey = v; $t515_516.$set(obj); } };
1580 $t522_523 = hexb('513d91cb32642de7eac35e6ec7102483bfc37a9470b34931c0f90c1a354032a4');
1581 $t523_524 = { $get() { return $t515_516.$get().hsNonce; }, $set(v) { const obj = $t515_516.$get(); obj.hsNonce = v; $t515_516.$set(obj); } };
1582 $t524_525 = hexb('c1c2b869ca47b5705b242673');
1583 $t516_517.$set(15);
1584 $t517_518.$set($t518_519);
1585 $t519_520.$set($t520_521);
1586 $t521_522.$set($t522_523);
1587 $t523_524.$set($t524_525);
1588 $t525_526 = $rt.builtin.sliceSlice($t504_505.$get(), undefined, undefined, undefined);
1589 $t503_504.$set($t525_526);
1590 $t526_527 = $t501_502.$get().addr(1);
1591 $t527_528 = { $get() { return $t526_527.$get().gens; }, $set(v) { const obj = $t526_527.$get(); obj.gens = v; $t526_527.$set(obj); } };
1592 $t528_529 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1593 $t529_530 = $t528_529.$get().addr(0);
1594 $t530_531 = { $get() { return $t529_530.$get().generation; }, $set(v) { const obj = $t529_530.$get(); obj.generation = v; $t529_530.$set(obj); } };
1595 $t531_532 = { $get() { return $t529_530.$get().appKey; }, $set(v) { const obj = $t529_530.$get(); obj.appKey = v; $t529_530.$set(obj); } };
1596 $t532_533 = hexb('836c1e8982cd314c836ae8ad791428f653087760ba1c8ed78d7ccc5c5ce07673');
1597 $t533_534 = { $get() { return $t529_530.$get().appNonce; }, $set(v) { const obj = $t529_530.$get(); obj.appNonce = v; $t529_530.$set(obj); } };
1598 $t534_535 = hexb('89cb851cd3eb80da3af04775');
1599 $t535_536 = { $get() { return $t529_530.$get().hsKey; }, $set(v) { const obj = $t529_530.$get(); obj.hsKey = v; $t529_530.$set(obj); } };
1600 $t536_537 = hexb('2d04368cd82e130ce4a1fe5c5fdb7c793e87c6c038e0731fb2c2b1d9e81fcf5d');
1601 $t537_538 = { $get() { return $t529_530.$get().hsNonce; }, $set(v) { const obj = $t529_530.$get(); obj.hsNonce = v; $t529_530.$set(obj); } };
1602 $t538_539 = hexb('a9bc5a0ad7f41f04e4f87698');
1603 $t530_531.$set(0);
1604 $t531_532.$set($t532_533);
1605 $t533_534.$set($t534_535);
1606 $t535_536.$set($t536_537);
1607 $t537_538.$set($t538_539);
1608 $t539_540 = $t528_529.$get().addr(1);
1609 $t540_541 = { $get() { return $t539_540.$get().generation; }, $set(v) { const obj = $t539_540.$get(); obj.generation = v; $t539_540.$set(obj); } };
1610 $t541_542 = { $get() { return $t539_540.$get().appKey; }, $set(v) { const obj = $t539_540.$get(); obj.appKey = v; $t539_540.$set(obj); } };
1611 $t542_543 = hexb('43a0dc853e4d7e3893c6bde5e34aa2001e1a4601380514f944c2c1615cfa8794');
1612 $t543_544 = { $get() { return $t539_540.$get().appNonce; }, $set(v) { const obj = $t539_540.$get(); obj.appNonce = v; $t539_540.$set(obj); } };
1613 $t544_545 = hexb('8fca3ba94f338b88dbdc21db');
1614 $t545_546 = { $get() { return $t539_540.$get().hsKey; }, $set(v) { const obj = $t539_540.$get(); obj.hsKey = v; $t539_540.$set(obj); } };
1615 $t546_547 = hexb('81c5b2a8e535ea5b9f47c168fe7b04ad9b61a576a3bf8742c89f1f7303d245d2');
1616 $t547_548 = { $get() { return $t539_540.$get().hsNonce; }, $set(v) { const obj = $t539_540.$get(); obj.hsNonce = v; $t539_540.$set(obj); } };
1617 $t548_549 = hexb('a3f00fc9758f339947659296');
1618 $t540_541.$set(15);
1619 $t541_542.$set($t542_543);
1620 $t543_544.$set($t544_545);
1621 $t545_546.$set($t546_547);
1622 $t547_548.$set($t548_549);
1623 $t549_550 = $rt.builtin.sliceSlice($t528_529.$get(), undefined, undefined, undefined);
1624 $t527_528.$set($t549_550);
1625 $t550_551 = $t501_502.$get().addr(2);
1626 $t551_552 = { $get() { return $t550_551.$get().gens; }, $set(v) { const obj = $t550_551.$get(); obj.gens = v; $t550_551.$set(obj); } };
1627 $t552_553 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1628 $t553_554 = $t552_553.$get().addr(0);
1629 $t554_555 = { $get() { return $t553_554.$get().generation; }, $set(v) { const obj = $t553_554.$get(); obj.generation = v; $t553_554.$set(obj); } };
1630 $t555_556 = { $get() { return $t553_554.$get().appKey; }, $set(v) { const obj = $t553_554.$get(); obj.appKey = v; $t553_554.$set(obj); } };
1631 $t556_557 = hexb('b6dfcc1b4833389bfe986779337003c15c7e392c31c6f58023647760de5acfd4');
1632 $t557_558 = { $get() { return $t553_554.$get().appNonce; }, $set(v) { const obj = $t553_554.$get(); obj.appNonce = v; $t553_554.$set(obj); } };
1633 $t558_559 = hexb('80bffc48f52d0859b0c45e0b');
1634 $t559_560 = { $get() { return $t553_554.$get().hsKey; }, $set(v) { const obj = $t553_554.$get(); obj.hsKey = v; $t553_554.$set(obj); } };
1635 $t560_561 = hexb('cb16363a4ece4ecc568d8eefda4baa0d13f10e72cf61e940d34cddf877c7990c');
1636 $t561_562 = { $get() { return $t553_554.$get().hsNonce; }, $set(v) { const obj = $t553_554.$get(); obj.hsNonce = v; $t553_554.$set(obj); } };
1637 $t562_563 = hexb('3d37209aeab33188767fa07f');
1638 $t554_555.$set(0);
1639 $t555_556.$set($t556_557);
1640 $t557_558.$set($t558_559);
1641 $t559_560.$set($t560_561);
1642 $t561_562.$set($t562_563);
1643 $t563_564 = $t552_553.$get().addr(1);
1644 $t564_565 = { $get() { return $t563_564.$get().generation; }, $set(v) { const obj = $t563_564.$get(); obj.generation = v; $t563_564.$set(obj); } };
1645 $t565_566 = { $get() { return $t563_564.$get().appKey; }, $set(v) { const obj = $t563_564.$get(); obj.appKey = v; $t563_564.$set(obj); } };
1646 $t566_567 = hexb('9d2031b0e6ea40222c6e4772334a0cb16b7a70e04590ee0318490d370eed6a21');
1647 $t567_568 = { $get() { return $t563_564.$get().appNonce; }, $set(v) { const obj = $t563_564.$get(); obj.appNonce = v; $t563_564.$set(obj); } };
1648 $t568_569 = hexb('e0f61964a025620ec2a3cc22');
1649 $t569_570 = { $get() { return $t563_564.$get().hsKey; }, $set(v) { const obj = $t563_564.$get(); obj.hsKey = v; $t563_564.$set(obj); } };
1650 $t570_571 = hexb('060a338a48885f3699474ed88c24c60748eb2654db313b703b3dc508561ea13a');
1651 $t571_572 = { $get() { return $t563_564.$get().hsNonce; }, $set(v) { const obj = $t563_564.$get(); obj.hsNonce = v; $t563_564.$set(obj); } };
1652 $t572_573 = hexb('be3600be0c4b6dc2d64df06d');
1653 $t564_565.$set(15);
1654 $t565_566.$set($t566_567);
1655 $t567_568.$set($t568_569);
1656 $t569_570.$set($t570_571);
1657 $t571_572.$set($t572_573);
1658 $t573_574 = $rt.builtin.sliceSlice($t552_553.$get(), undefined, undefined, undefined);
1659 $t551_552.$set($t573_574);
1660 $t574_575 = $t501_502.$get().addr(3);
1661 $t575_576 = { $get() { return $t574_575.$get().gens; }, $set(v) { const obj = $t574_575.$get(); obj.gens = v; $t574_575.$set(obj); } };
1662 $t576_577 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1663 $t577_578 = $t576_577.$get().addr(0);
1664 $t578_579 = { $get() { return $t577_578.$get().generation; }, $set(v) { const obj = $t577_578.$get(); obj.generation = v; $t577_578.$set(obj); } };
1665 $t579_580 = { $get() { return $t577_578.$get().appKey; }, $set(v) { const obj = $t577_578.$get(); obj.appKey = v; $t577_578.$set(obj); } };
1666 $t580_581 = hexb('37dac5153a4902b794641e7897b66908ec192d90d18919e2c793a76a165491e8');
1667 $t581_582 = { $get() { return $t577_578.$get().appNonce; }, $set(v) { const obj = $t577_578.$get(); obj.appNonce = v; $t577_578.$set(obj); } };
1668 $t582_583 = hexb('360e27a3a4a64005750c501f');
1669 $t583_584 = { $get() { return $t577_578.$get().hsKey; }, $set(v) { const obj = $t577_578.$get(); obj.hsKey = v; $t577_578.$set(obj); } };
1670 $t584_585 = hexb('cefdbc6e3b85e3a53783e4967a3ba5a9a1a6b8c486145936bce6b2afce014b0e');
1671 $t585_586 = { $get() { return $t577_578.$get().hsNonce; }, $set(v) { const obj = $t577_578.$get(); obj.hsNonce = v; $t577_578.$set(obj); } };
1672 $t586_587 = hexb('68a9de9fdee52f149b01657d');
1673 $t578_579.$set(0);
1674 $t579_580.$set($t580_581);
1675 $t581_582.$set($t582_583);
1676 $t583_584.$set($t584_585);
1677 $t585_586.$set($t586_587);
1678 $t587_588 = $t576_577.$get().addr(1);
1679 $t588_589 = { $get() { return $t587_588.$get().generation; }, $set(v) { const obj = $t587_588.$get(); obj.generation = v; $t587_588.$set(obj); } };
1680 $t589_590 = { $get() { return $t587_588.$get().appKey; }, $set(v) { const obj = $t587_588.$get(); obj.appKey = v; $t587_588.$set(obj); } };
1681 $t590_591 = hexb('36de04038c0e394ab0913f7a7dc37b3a6551ebeb7ce82b095854b9dd1eab7fca');
1682 $t591_592 = { $get() { return $t587_588.$get().appNonce; }, $set(v) { const obj = $t587_588.$get(); obj.appNonce = v; $t587_588.$set(obj); } };
1683 $t592_593 = hexb('adc247314fcae51d97992a4b');
1684 $t593_594 = { $get() { return $t587_588.$get().hsKey; }, $set(v) { const obj = $t587_588.$get(); obj.hsKey = v; $t587_588.$set(obj); } };
1685 $t594_595 = hexb('5d7615bba20dc520562a302d7588ec7ff070a5e8a4f8d0e2f1bed78984c12b98');
1686 $t595_596 = { $get() { return $t587_588.$get().hsNonce; }, $set(v) { const obj = $t587_588.$get(); obj.hsNonce = v; $t587_588.$set(obj); } };
1687 $t596_597 = hexb('b3cc4d3cb96e14ccadb941dd');
1688 $t588_589.$set(15);
1689 $t589_590.$set($t590_591);
1690 $t591_592.$set($t592_593);
1691 $t593_594.$set($t594_595);
1692 $t595_596.$set($t596_597);
1693 $t597_598 = $rt.builtin.sliceSlice($t576_577.$get(), undefined, undefined, undefined);
1694 $t575_576.$set($t597_598);
1695 $t598_599 = $t501_502.$get().addr(4);
1696 $t599_600 = { $get() { return $t598_599.$get().gens; }, $set(v) { const obj = $t598_599.$get(); obj.gens = v; $t598_599.$set(obj); } };
1697 $t600_601 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1698 $t601_602 = $t600_601.$get().addr(0);
1699 $t602_603 = { $get() { return $t601_602.$get().generation; }, $set(v) { const obj = $t601_602.$get(); obj.generation = v; $t601_602.$set(obj); } };
1700 $t603_604 = { $get() { return $t601_602.$get().appKey; }, $set(v) { const obj = $t601_602.$get(); obj.appKey = v; $t601_602.$set(obj); } };
1701 $t604_605 = hexb('21e99db9b0556a32143eb02acbf93e5d3532a4a385e397b40781ce19fb27f045');
1702 $t605_606 = { $get() { return $t601_602.$get().appNonce; }, $set(v) { const obj = $t601_602.$get(); obj.appNonce = v; $t601_602.$set(obj); } };
1703 $t606_607 = hexb('4ddc53e79de147f1c0b62d56');
1704 $t607_608 = { $get() { return $t601_602.$get().hsKey; }, $set(v) { const obj = $t601_602.$get(); obj.hsKey = v; $t601_602.$set(obj); } };
1705 $t608_609 = hexb('a5c7a6fce1c71b466f29b0e503e96bb92203f850286b3ff3f1bf92f821cd9e1e');
1706 $t609_610 = { $get() { return $t601_602.$get().hsNonce; }, $set(v) { const obj = $t601_602.$get(); obj.hsNonce = v; $t601_602.$set(obj); } };
1707 $t610_611 = hexb('2fbd7adab80304636dbee443');
1708 $t602_603.$set(0);
1709 $t603_604.$set($t604_605);
1710 $t605_606.$set($t606_607);
1711 $t607_608.$set($t608_609);
1712 $t609_610.$set($t610_611);
1713 $t611_612 = $t600_601.$get().addr(1);
1714 $t612_613 = { $get() { return $t611_612.$get().generation; }, $set(v) { const obj = $t611_612.$get(); obj.generation = v; $t611_612.$set(obj); } };
1715 $t613_614 = { $get() { return $t611_612.$get().appKey; }, $set(v) { const obj = $t611_612.$get(); obj.appKey = v; $t611_612.$set(obj); } };
1716 $t614_615 = hexb('48d959f383a77af5722a0d464f1777c205b0af41c5433459b4b0c53476f3481b');
1717 $t615_616 = { $get() { return $t611_612.$get().appNonce; }, $set(v) { const obj = $t611_612.$get(); obj.appNonce = v; $t611_612.$set(obj); } };
1718 $t616_617 = hexb('6d849dfd50e660589f4b913b');
1719 $t617_618 = { $get() { return $t611_612.$get().hsKey; }, $set(v) { const obj = $t611_612.$get(); obj.hsKey = v; $t611_612.$set(obj); } };
1720 $t618_619 = hexb('4f294af9f7f65aa7c552043b9db99f444a5a4cb7782589237126e975bf417993');
1721 $t619_620 = { $get() { return $t611_612.$get().hsNonce; }, $set(v) { const obj = $t611_612.$get(); obj.hsNonce = v; $t611_612.$set(obj); } };
1722 $t620_621 = hexb('52f4aa7cc59d39d579824722');
1723 $t612_613.$set(15);
1724 $t613_614.$set($t614_615);
1725 $t615_616.$set($t616_617);
1726 $t617_618.$set($t618_619);
1727 $t619_620.$set($t620_621);
1728 $t621_622 = $rt.builtin.sliceSlice($t600_601.$get(), undefined, undefined, undefined);
1729 $t599_600.$set($t621_622);
1730 $t622_623 = $t501_502.$get().addr(5);
1731 $t623_624 = { $get() { return $t622_623.$get().gens; }, $set(v) { const obj = $t622_623.$get(); obj.gens = v; $t622_623.$set(obj); } };
1732 $t624_625 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1733 $t625_626 = $t624_625.$get().addr(0);
1734 $t626_627 = { $get() { return $t625_626.$get().generation; }, $set(v) { const obj = $t625_626.$get(); obj.generation = v; $t625_626.$set(obj); } };
1735 $t627_628 = { $get() { return $t625_626.$get().appKey; }, $set(v) { const obj = $t625_626.$get(); obj.appKey = v; $t625_626.$set(obj); } };
1736 $t628_629 = hexb('d6aa79436fb4f0cc3e968289865d23ace504fbe69d55a7a204e58a7fc9cbf470');
1737 $t629_630 = { $get() { return $t625_626.$get().appNonce; }, $set(v) { const obj = $t625_626.$get(); obj.appNonce = v; $t625_626.$set(obj); } };
1738 $t630_631 = hexb('2378e12cab1aa0f0758d4c49');
1739 $t631_632 = { $get() { return $t625_626.$get().hsKey; }, $set(v) { const obj = $t625_626.$get(); obj.hsKey = v; $t625_626.$set(obj); } };
1740 $t632_633 = hexb('e1d6282b67e64d6d4c7ba17215396b5c44ccec55911f303e091dcd28636a70c8');
1741 $t633_634 = { $get() { return $t625_626.$get().hsNonce; }, $set(v) { const obj = $t625_626.$get(); obj.hsNonce = v; $t625_626.$set(obj); } };
1742 $t634_635 = hexb('effa5afe7ebe9ab8eca40c98');
1743 $t626_627.$set(0);
1744 $t627_628.$set($t628_629);
1745 $t629_630.$set($t630_631);
1746 $t631_632.$set($t632_633);
1747 $t633_634.$set($t634_635);
1748 $t635_636 = $t624_625.$get().addr(1);
1749 $t636_637 = { $get() { return $t635_636.$get().generation; }, $set(v) { const obj = $t635_636.$get(); obj.generation = v; $t635_636.$set(obj); } };
1750 $t637_638 = { $get() { return $t635_636.$get().appKey; }, $set(v) { const obj = $t635_636.$get(); obj.appKey = v; $t635_636.$set(obj); } };
1751 $t638_639 = hexb('536b48f86ebc7dc6ea1bbf26a99e56c805b91e9a215f6be366929e65ffb3beed');
1752 $t639_640 = { $get() { return $t635_636.$get().appNonce; }, $set(v) { const obj = $t635_636.$get(); obj.appNonce = v; $t635_636.$set(obj); } };
1753 $t640_641 = hexb('30914fe30e299c1a2aa0cb19');
1754 $t641_642 = { $get() { return $t635_636.$get().hsKey; }, $set(v) { const obj = $t635_636.$get(); obj.hsKey = v; $t635_636.$set(obj); } };
1755 $t642_643 = hexb('4452bf9ac965e4b3058285d258251884a49d461f2c21f6b3525f81cfdee4fd7d');
1756 $t643_644 = { $get() { return $t635_636.$get().hsNonce; }, $set(v) { const obj = $t635_636.$get(); obj.hsNonce = v; $t635_636.$set(obj); } };
1757 $t644_645 = hexb('615096dcc80673c6c6344ee3');
1758 $t636_637.$set(15);
1759 $t637_638.$set($t638_639);
1760 $t639_640.$set($t640_641);
1761 $t641_642.$set($t642_643);
1762 $t643_644.$set($t644_645);
1763 $t645_646 = $rt.builtin.sliceSlice($t624_625.$get(), undefined, undefined, undefined);
1764 $t623_624.$set($t645_646);
1765 $t646_647 = $t501_502.$get().addr(6);
1766 $t647_648 = { $get() { return $t646_647.$get().gens; }, $set(v) { const obj = $t646_647.$get(); obj.gens = v; $t646_647.$set(obj); } };
1767 $t648_649 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1768 $t649_650 = $t648_649.$get().addr(0);
1769 $t650_651 = { $get() { return $t649_650.$get().generation; }, $set(v) { const obj = $t649_650.$get(); obj.generation = v; $t649_650.$set(obj); } };
1770 $t651_652 = { $get() { return $t649_650.$get().appKey; }, $set(v) { const obj = $t649_650.$get(); obj.appKey = v; $t649_650.$set(obj); } };
1771 $t652_653 = hexb('3bda8030d665dd7ae2a509e9c8e7eb868b23a641b0cd00abb5281bdc5fbca1d0');
1772 $t653_654 = { $get() { return $t649_650.$get().appNonce; }, $set(v) { const obj = $t649_650.$get(); obj.appNonce = v; $t649_650.$set(obj); } };
1773 $t654_655 = hexb('77d821c894eb259ff5504630');
1774 $t655_656 = { $get() { return $t649_650.$get().hsKey; }, $set(v) { const obj = $t649_650.$get(); obj.hsKey = v; $t649_650.$set(obj); } };
1775 $t656_657 = hexb('578e75d1ba2a9e05b887b068404c0baf4b5d2fcf4e15560c7b383c7a5833b3a2');
1776 $t657_658 = { $get() { return $t649_650.$get().hsNonce; }, $set(v) { const obj = $t649_650.$get(); obj.hsNonce = v; $t649_650.$set(obj); } };
1777 $t658_659 = hexb('3373345bc67ed124c5974235');
1778 $t650_651.$set(0);
1779 $t651_652.$set($t652_653);
1780 $t653_654.$set($t654_655);
1781 $t655_656.$set($t656_657);
1782 $t657_658.$set($t658_659);
1783 $t659_660 = $t648_649.$get().addr(1);
1784 $t660_661 = { $get() { return $t659_660.$get().generation; }, $set(v) { const obj = $t659_660.$get(); obj.generation = v; $t659_660.$set(obj); } };
1785 $t661_662 = { $get() { return $t659_660.$get().appKey; }, $set(v) { const obj = $t659_660.$get(); obj.appKey = v; $t659_660.$set(obj); } };
1786 $t662_663 = hexb('b83b50610f9aae7ba7115d04b014808f51e08ef3350a565679190489f5f76864');
1787 $t663_664 = { $get() { return $t659_660.$get().appNonce; }, $set(v) { const obj = $t659_660.$get(); obj.appNonce = v; $t659_660.$set(obj); } };
1788 $t664_665 = hexb('26c768228f22a3c189e84774');
1789 $t665_666 = { $get() { return $t659_660.$get().hsKey; }, $set(v) { const obj = $t659_660.$get(); obj.hsKey = v; $t659_660.$set(obj); } };
1790 $t666_667 = hexb('1110a03ea8909d3ebf25bd2d49ee9d1ff86b61f30531ce557982e664777a9e64');
1791 $t667_668 = { $get() { return $t659_660.$get().hsNonce; }, $set(v) { const obj = $t659_660.$get(); obj.hsNonce = v; $t659_660.$set(obj); } };
1792 $t668_669 = hexb('73f11cdfd2675be09cefbf6a');
1793 $t660_661.$set(15);
1794 $t661_662.$set($t662_663);
1795 $t663_664.$set($t664_665);
1796 $t665_666.$set($t666_667);
1797 $t667_668.$set($t668_669);
1798 $t669_670 = $rt.builtin.sliceSlice($t648_649.$get(), undefined, undefined, undefined);
1799 $t647_648.$set($t669_670);
1800 $t670_671 = $t501_502.$get().addr(7);
1801 $t671_672 = { $get() { return $t670_671.$get().gens; }, $set(v) { const obj = $t670_671.$get(); obj.gens = v; $t670_671.$set(obj); } };
1802 $t672_673 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1803 $t673_674 = $t672_673.$get().addr(0);
1804 $t674_675 = { $get() { return $t673_674.$get().generation; }, $set(v) { const obj = $t673_674.$get(); obj.generation = v; $t673_674.$set(obj); } };
1805 $t675_676 = { $get() { return $t673_674.$get().appKey; }, $set(v) { const obj = $t673_674.$get(); obj.appKey = v; $t673_674.$set(obj); } };
1806 $t676_677 = hexb('2aa73eaa7fa9b4b0a2321ac80841e59f5763daee345673e55094cd391c397656');
1807 $t677_678 = { $get() { return $t673_674.$get().appNonce; }, $set(v) { const obj = $t673_674.$get(); obj.appNonce = v; $t673_674.$set(obj); } };
1808 $t678_679 = hexb('49a648a61488633518a1e63e');
1809 $t679_680 = { $get() { return $t673_674.$get().hsKey; }, $set(v) { const obj = $t673_674.$get(); obj.hsKey = v; $t673_674.$set(obj); } };
1810 $t680_681 = hexb('9ef95b2adfc9d7fae9094e85a83f0d38c6748176428e1260c183ef632a7de5f5');
1811 $t681_682 = { $get() { return $t673_674.$get().hsNonce; }, $set(v) { const obj = $t673_674.$get(); obj.hsNonce = v; $t673_674.$set(obj); } };
1812 $t682_683 = hexb('c5e95e061432035490718fcc');
1813 $t674_675.$set(0);
1814 $t675_676.$set($t676_677);
1815 $t677_678.$set($t678_679);
1816 $t679_680.$set($t680_681);
1817 $t681_682.$set($t682_683);
1818 $t683_684 = $t672_673.$get().addr(1);
1819 $t684_685 = { $get() { return $t683_684.$get().generation; }, $set(v) { const obj = $t683_684.$get(); obj.generation = v; $t683_684.$set(obj); } };
1820 $t685_686 = { $get() { return $t683_684.$get().appKey; }, $set(v) { const obj = $t683_684.$get(); obj.appKey = v; $t683_684.$set(obj); } };
1821 $t686_687 = hexb('bab2d149eeabf591918edc284b4b40f8e69bcfb2655e279dcc14604b497706dd');
1822 $t687_688 = { $get() { return $t683_684.$get().appNonce; }, $set(v) { const obj = $t683_684.$get(); obj.appNonce = v; $t683_684.$set(obj); } };
1823 $t688_689 = hexb('e0a5161e008e874cc080748e');
1824 $t689_690 = { $get() { return $t683_684.$get().hsKey; }, $set(v) { const obj = $t683_684.$get(); obj.hsKey = v; $t683_684.$set(obj); } };
1825 $t690_691 = hexb('e3ba556729a0eff06b05b2cee1de9e2e72234fe0cabb9f99ee30e988ac29c2fd');
1826 $t691_692 = { $get() { return $t683_684.$get().hsNonce; }, $set(v) { const obj = $t683_684.$get(); obj.hsNonce = v; $t683_684.$set(obj); } };
1827 $t692_693 = hexb('1af51b8fb2b3c8c332fc2857');
1828 $t684_685.$set(15);
1829 $t685_686.$set($t686_687);
1830 $t687_688.$set($t688_689);
1831 $t689_690.$set($t690_691);
1832 $t691_692.$set($t692_693);
1833 $t693_694 = $rt.builtin.sliceSlice($t672_673.$get(), undefined, undefined, undefined);
1834 $t671_672.$set($t693_694);
1835 $t694_695 = $t501_502.$get().addr(8);
1836 $t695_696 = { $get() { return $t694_695.$get().gens; }, $set(v) { const obj = $t694_695.$get(); obj.gens = v; $t694_695.$set(obj); } };
1837 $t696_697 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1838 $t697_698 = $t696_697.$get().addr(0);
1839 $t698_699 = { $get() { return $t697_698.$get().generation; }, $set(v) { const obj = $t697_698.$get(); obj.generation = v; $t697_698.$set(obj); } };
1840 $t699_700 = { $get() { return $t697_698.$get().appKey; }, $set(v) { const obj = $t697_698.$get(); obj.appKey = v; $t697_698.$set(obj); } };
1841 $t700_701 = hexb('7d98494f3a1b0b0332b6a829eb6ce68fa8309ebad0807683235af6abcb028006');
1842 $t701_702 = { $get() { return $t697_698.$get().appNonce; }, $set(v) { const obj = $t697_698.$get(); obj.appNonce = v; $t697_698.$set(obj); } };
1843 $t702_703 = hexb('d6cb542191f84d060a30af3a');
1844 $t703_704 = { $get() { return $t697_698.$get().hsKey; }, $set(v) { const obj = $t697_698.$get(); obj.hsKey = v; $t697_698.$set(obj); } };
1845 $t704_705 = hexb('7c1be24e6240b358ad2f4b3c6ac7394c5d9d3778f95669bdc615a27406a21f9f');
1846 $t705_706 = { $get() { return $t697_698.$get().hsNonce; }, $set(v) { const obj = $t697_698.$get(); obj.hsNonce = v; $t697_698.$set(obj); } };
1847 $t706_707 = hexb('0ab1fed43992665b209fb29a');
1848 $t698_699.$set(0);
1849 $t699_700.$set($t700_701);
1850 $t701_702.$set($t702_703);
1851 $t703_704.$set($t704_705);
1852 $t705_706.$set($t706_707);
1853 $t707_708 = $t696_697.$get().addr(1);
1854 $t708_709 = { $get() { return $t707_708.$get().generation; }, $set(v) { const obj = $t707_708.$get(); obj.generation = v; $t707_708.$set(obj); } };
1855 $t709_710 = { $get() { return $t707_708.$get().appKey; }, $set(v) { const obj = $t707_708.$get(); obj.appKey = v; $t707_708.$set(obj); } };
1856 $t710_711 = hexb('a42a21f9acbf8312d329d1df121473d21f47b481017d252b81f18f79ba799152');
1857 $t711_712 = { $get() { return $t707_708.$get().appNonce; }, $set(v) { const obj = $t707_708.$get(); obj.appNonce = v; $t707_708.$set(obj); } };
1858 $t712_713 = hexb('ecd82ba6f4b2e2e9de7bb646');
1859 $t713_714 = { $get() { return $t707_708.$get().hsKey; }, $set(v) { const obj = $t707_708.$get(); obj.hsKey = v; $t707_708.$set(obj); } };
1860 $t714_715 = hexb('ff79265cc9cd1bdc84dbdb45b376ac69c94aec066b61cee086b0e7d69ea0aa56');
1861 $t715_716 = { $get() { return $t707_708.$get().hsNonce; }, $set(v) { const obj = $t707_708.$get(); obj.hsNonce = v; $t707_708.$set(obj); } };
1862 $t716_717 = hexb('8f78668bade3f8f7e2ad2ffa');
1863 $t708_709.$set(15);
1864 $t709_710.$set($t710_711);
1865 $t711_712.$set($t712_713);
1866 $t713_714.$set($t714_715);
1867 $t715_716.$set($t716_717);
1868 $t717_718 = $rt.builtin.sliceSlice($t696_697.$get(), undefined, undefined, undefined);
1869 $t695_696.$set($t717_718);
1870 $t718_719 = $t501_502.$get().addr(9);
1871 $t719_720 = { $get() { return $t718_719.$get().gens; }, $set(v) { const obj = $t718_719.$get(); obj.gens = v; $t718_719.$set(obj); } };
1872 $t720_721 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1873 $t721_722 = $t720_721.$get().addr(0);
1874 $t722_723 = { $get() { return $t721_722.$get().generation; }, $set(v) { const obj = $t721_722.$get(); obj.generation = v; $t721_722.$set(obj); } };
1875 $t723_724 = { $get() { return $t721_722.$get().appKey; }, $set(v) { const obj = $t721_722.$get(); obj.appKey = v; $t721_722.$set(obj); } };
1876 $t724_725 = hexb('f9866e6c9d9541a94fd3d5c61a872cb036819760b33693909fc4c3067afb883b');
1877 $t725_726 = { $get() { return $t721_722.$get().appNonce; }, $set(v) { const obj = $t721_722.$get(); obj.appNonce = v; $t721_722.$set(obj); } };
1878 $t726_727 = hexb('b64a5df86df749e32f623623');
1879 $t727_728 = { $get() { return $t721_722.$get().hsKey; }, $set(v) { const obj = $t721_722.$get(); obj.hsKey = v; $t721_722.$set(obj); } };
1880 $t728_729 = hexb('1ee4f9fdbf5339898bf5a333d24610abe701d0da886e9a65932d0cd9ee0f7248');
1881 $t729_730 = { $get() { return $t721_722.$get().hsNonce; }, $set(v) { const obj = $t721_722.$get(); obj.hsNonce = v; $t721_722.$set(obj); } };
1882 $t730_731 = hexb('5812b568f82270a5c60b3f5d');
1883 $t722_723.$set(0);
1884 $t723_724.$set($t724_725);
1885 $t725_726.$set($t726_727);
1886 $t727_728.$set($t728_729);
1887 $t729_730.$set($t730_731);
1888 $t731_732 = $t720_721.$get().addr(1);
1889 $t732_733 = { $get() { return $t731_732.$get().generation; }, $set(v) { const obj = $t731_732.$get(); obj.generation = v; $t731_732.$set(obj); } };
1890 $t733_734 = { $get() { return $t731_732.$get().appKey; }, $set(v) { const obj = $t731_732.$get(); obj.appKey = v; $t731_732.$set(obj); } };
1891 $t734_735 = hexb('77b45129def7153bc547ad435f8311fd509cdbec3cce2a5ca3d6855311c8b56a');
1892 $t735_736 = { $get() { return $t731_732.$get().appNonce; }, $set(v) { const obj = $t731_732.$get(); obj.appNonce = v; $t731_732.$set(obj); } };
1893 $t736_737 = hexb('6b0af3b1fabd8e9339b1d975');
1894 $t737_738 = { $get() { return $t731_732.$get().hsKey; }, $set(v) { const obj = $t731_732.$get(); obj.hsKey = v; $t731_732.$set(obj); } };
1895 $t738_739 = hexb('a8e268e0f3da0d4f64f91c1107c8a5b5c8fb0ccb7dfdb88ff50d4e5eca5ac62e');
1896 $t739_740 = { $get() { return $t731_732.$get().hsNonce; }, $set(v) { const obj = $t731_732.$get(); obj.hsNonce = v; $t731_732.$set(obj); } };
1897 $t740_741 = hexb('e02d504d5c77524b3bf33395');
1898 $t732_733.$set(15);
1899 $t733_734.$set($t734_735);
1900 $t735_736.$set($t736_737);
1901 $t737_738.$set($t738_739);
1902 $t739_740.$set($t740_741);
1903 $t741_742 = $rt.builtin.sliceSlice($t720_721.$get(), undefined, undefined, undefined);
1904 $t719_720.$set($t741_742);
1905 $t742_743 = $t501_502.$get().addr(10);
1906 $t743_744 = { $get() { return $t742_743.$get().gens; }, $set(v) { const obj = $t742_743.$get(); obj.gens = v; $t742_743.$set(obj); } };
1907 $t744_745 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1908 $t745_746 = $t744_745.$get().addr(0);
1909 $t746_747 = { $get() { return $t745_746.$get().generation; }, $set(v) { const obj = $t745_746.$get(); obj.generation = v; $t745_746.$set(obj); } };
1910 $t747_748 = { $get() { return $t745_746.$get().appKey; }, $set(v) { const obj = $t745_746.$get(); obj.appKey = v; $t745_746.$set(obj); } };
1911 $t748_749 = hexb('2ad3059620a000ee5f2503765f94785c84c5cc25c742f39224ee0e2d4b395ac0');
1912 $t749_750 = { $get() { return $t745_746.$get().appNonce; }, $set(v) { const obj = $t745_746.$get(); obj.appNonce = v; $t745_746.$set(obj); } };
1913 $t750_751 = hexb('27654be31f596fa3ec5be8bd');
1914 $t751_752 = { $get() { return $t745_746.$get().hsKey; }, $set(v) { const obj = $t745_746.$get(); obj.hsKey = v; $t745_746.$set(obj); } };
1915 $t752_753 = hexb('bbebc7ddecc105f337ab2ef600e80ddd7b21874a74c1866a63c2844b76217cf6');
1916 $t753_754 = { $get() { return $t745_746.$get().hsNonce; }, $set(v) { const obj = $t745_746.$get(); obj.hsNonce = v; $t745_746.$set(obj); } };
1917 $t754_755 = hexb('ba43d3cfba9f4d270e8ac184');
1918 $t746_747.$set(0);
1919 $t747_748.$set($t748_749);
1920 $t749_750.$set($t750_751);
1921 $t751_752.$set($t752_753);
1922 $t753_754.$set($t754_755);
1923 $t755_756 = $t744_745.$get().addr(1);
1924 $t756_757 = { $get() { return $t755_756.$get().generation; }, $set(v) { const obj = $t755_756.$get(); obj.generation = v; $t755_756.$set(obj); } };
1925 $t757_758 = { $get() { return $t755_756.$get().appKey; }, $set(v) { const obj = $t755_756.$get(); obj.appKey = v; $t755_756.$set(obj); } };
1926 $t758_759 = hexb('a6384de54114b6e5da9df6ed5e183f4cc4073f9d1599ed1987c4079a68e889a8');
1927 $t759_760 = { $get() { return $t755_756.$get().appNonce; }, $set(v) { const obj = $t755_756.$get(); obj.appNonce = v; $t755_756.$set(obj); } };
1928 $t760_761 = hexb('2f52e1c1f9adda1be687ee59');
1929 $t761_762 = { $get() { return $t755_756.$get().hsKey; }, $set(v) { const obj = $t755_756.$get(); obj.hsKey = v; $t755_756.$set(obj); } };
1930 $t762_763 = hexb('b7c3dd23db7b1eb7a160efbfa39ed9aceb783dc6998998f3cb8e7f8875134e46');
1931 $t763_764 = { $get() { return $t755_756.$get().hsNonce; }, $set(v) { const obj = $t755_756.$get(); obj.hsNonce = v; $t755_756.$set(obj); } };
1932 $t764_765 = hexb('68fc5a37e990d6da66440f10');
1933 $t756_757.$set(15);
1934 $t757_758.$set($t758_759);
1935 $t759_760.$set($t760_761);
1936 $t761_762.$set($t762_763);
1937 $t763_764.$set($t764_765);
1938 $t765_766 = $rt.builtin.sliceSlice($t744_745.$get(), undefined, undefined, undefined);
1939 $t743_744.$set($t765_766);
1940 $t766_767 = $t501_502.$get().addr(11);
1941 $t767_768 = { $get() { return $t766_767.$get().gens; }, $set(v) { const obj = $t766_767.$get(); obj.gens = v; $t766_767.$set(obj); } };
1942 $t768_769 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1943 $t769_770 = $t768_769.$get().addr(0);
1944 $t770_771 = { $get() { return $t769_770.$get().generation; }, $set(v) { const obj = $t769_770.$get(); obj.generation = v; $t769_770.$set(obj); } };
1945 $t771_772 = { $get() { return $t769_770.$get().appKey; }, $set(v) { const obj = $t769_770.$get(); obj.appKey = v; $t769_770.$set(obj); } };
1946 $t772_773 = hexb('6bce419b8b2d4ea687b7f51511a61301b5de925547827b3155cf09a7659e9cee');
1947 $t773_774 = { $get() { return $t769_770.$get().appNonce; }, $set(v) { const obj = $t769_770.$get(); obj.appNonce = v; $t769_770.$set(obj); } };
1948 $t774_775 = hexb('8584190731a81e3b9a9a7fce');
1949 $t775_776 = { $get() { return $t769_770.$get().hsKey; }, $set(v) { const obj = $t769_770.$get(); obj.hsKey = v; $t769_770.$set(obj); } };
1950 $t776_777 = hexb('1f5a75c691636a498f19e691e4b845b347a439546a08c33d7b35e3debffccb47');
1951 $t777_778 = { $get() { return $t769_770.$get().hsNonce; }, $set(v) { const obj = $t769_770.$get(); obj.hsNonce = v; $t769_770.$set(obj); } };
1952 $t778_779 = hexb('5ea407637ecf27faa5f9e3a6');
1953 $t770_771.$set(0);
1954 $t771_772.$set($t772_773);
1955 $t773_774.$set($t774_775);
1956 $t775_776.$set($t776_777);
1957 $t777_778.$set($t778_779);
1958 $t779_780 = $t768_769.$get().addr(1);
1959 $t780_781 = { $get() { return $t779_780.$get().generation; }, $set(v) { const obj = $t779_780.$get(); obj.generation = v; $t779_780.$set(obj); } };
1960 $t781_782 = { $get() { return $t779_780.$get().appKey; }, $set(v) { const obj = $t779_780.$get(); obj.appKey = v; $t779_780.$set(obj); } };
1961 $t782_783 = hexb('9fd5ea50dceb64aadd20a1b32a962f73ebce9db54b6e92a84569538bc09b5806');
1962 $t783_784 = { $get() { return $t779_780.$get().appNonce; }, $set(v) { const obj = $t779_780.$get(); obj.appNonce = v; $t779_780.$set(obj); } };
1963 $t784_785 = hexb('72249adce1cdf3ef8a476799');
1964 $t785_786 = { $get() { return $t779_780.$get().hsKey; }, $set(v) { const obj = $t779_780.$get(); obj.hsKey = v; $t779_780.$set(obj); } };
1965 $t786_787 = hexb('c4b9544ebcb58d2d5a242d2329b5d8e7c2ec1ae7032fe3929c07621f26890330');
1966 $t787_788 = { $get() { return $t779_780.$get().hsNonce; }, $set(v) { const obj = $t779_780.$get(); obj.hsNonce = v; $t779_780.$set(obj); } };
1967 $t788_789 = hexb('11659686215a9f10704aa473');
1968 $t780_781.$set(15);
1969 $t781_782.$set($t782_783);
1970 $t783_784.$set($t784_785);
1971 $t785_786.$set($t786_787);
1972 $t787_788.$set($t788_789);
1973 $t789_790 = $rt.builtin.sliceSlice($t768_769.$get(), undefined, undefined, undefined);
1974 $t767_768.$set($t789_790);
1975 $t790_791 = $t501_502.$get().addr(12);
1976 $t791_792 = { $get() { return $t790_791.$get().gens; }, $set(v) { const obj = $t790_791.$get(); obj.gens = v; $t790_791.$set(obj); } };
1977 $t792_793 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1978 $t793_794 = $t792_793.$get().addr(0);
1979 $t794_795 = { $get() { return $t793_794.$get().generation; }, $set(v) { const obj = $t793_794.$get(); obj.generation = v; $t793_794.$set(obj); } };
1980 $t795_796 = { $get() { return $t793_794.$get().appKey; }, $set(v) { const obj = $t793_794.$get(); obj.appKey = v; $t793_794.$set(obj); } };
1981 $t796_797 = hexb('a7b54230d99f73ef078ef9b50e31d63e6a209dbb687e2dc995fff5a08012f0b6');
1982 $t797_798 = { $get() { return $t793_794.$get().appNonce; }, $set(v) { const obj = $t793_794.$get(); obj.appNonce = v; $t793_794.$set(obj); } };
1983 $t798_799 = hexb('4cd735cbd9e3ca2a63d07b0a');
1984 $t799_800 = { $get() { return $t793_794.$get().hsKey; }, $set(v) { const obj = $t793_794.$get(); obj.hsKey = v; $t793_794.$set(obj); } };
1985 $t800_801 = hexb('68471caf1594b04a6937ccd9c8f9a844609c122556d893beec5d0e5abb1b9abb');
1986 $t801_802 = { $get() { return $t793_794.$get().hsNonce; }, $set(v) { const obj = $t793_794.$get(); obj.hsNonce = v; $t793_794.$set(obj); } };
1987 $t802_803 = hexb('385566a667bd877048adc1f8');
1988 $t794_795.$set(0);
1989 $t795_796.$set($t796_797);
1990 $t797_798.$set($t798_799);
1991 $t799_800.$set($t800_801);
1992 $t801_802.$set($t802_803);
1993 $t803_804 = $t792_793.$get().addr(1);
1994 $t804_805 = { $get() { return $t803_804.$get().generation; }, $set(v) { const obj = $t803_804.$get(); obj.generation = v; $t803_804.$set(obj); } };
1995 $t805_806 = { $get() { return $t803_804.$get().appKey; }, $set(v) { const obj = $t803_804.$get(); obj.appKey = v; $t803_804.$set(obj); } };
1996 $t806_807 = hexb('08c12fe31dc56d47cd474e0bec58dd2f2e5d94afa9f09e08d5b1899fbc319b4c');
1997 $t807_808 = { $get() { return $t803_804.$get().appNonce; }, $set(v) { const obj = $t803_804.$get(); obj.appNonce = v; $t803_804.$set(obj); } };
1998 $t808_809 = hexb('9e4f30439151f2267b983d24');
1999 $t809_810 = { $get() { return $t803_804.$get().hsKey; }, $set(v) { const obj = $t803_804.$get(); obj.hsKey = v; $t803_804.$set(obj); } };
2000 $t810_811 = hexb('f9402caf45f66ee9e43692ea66251092756863890f3a81bba26950e95d6f62c0');
2001 $t811_812 = { $get() { return $t803_804.$get().hsNonce; }, $set(v) { const obj = $t803_804.$get(); obj.hsNonce = v; $t803_804.$set(obj); } };
2002 $t812_813 = hexb('4533bf845b1c527c7e15593f');
2003 $t804_805.$set(15);
2004 $t805_806.$set($t806_807);
2005 $t807_808.$set($t808_809);
2006 $t809_810.$set($t810_811);
2007 $t811_812.$set($t812_813);
2008 $t813_814 = $rt.builtin.sliceSlice($t792_793.$get(), undefined, undefined, undefined);
2009 $t791_792.$set($t813_814);
2010 $t814_815 = $t501_502.$get().addr(13);
2011 $t815_816 = { $get() { return $t814_815.$get().gens; }, $set(v) { const obj = $t814_815.$get(); obj.gens = v; $t814_815.$set(obj); } };
2012 $t816_817 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2013 $t817_818 = $t816_817.$get().addr(0);
2014 $t818_819 = { $get() { return $t817_818.$get().generation; }, $set(v) { const obj = $t817_818.$get(); obj.generation = v; $t817_818.$set(obj); } };
2015 $t819_820 = { $get() { return $t817_818.$get().appKey; }, $set(v) { const obj = $t817_818.$get(); obj.appKey = v; $t817_818.$set(obj); } };
2016 $t820_821 = hexb('bc4787428fdee2fa793cb81b0088720e4bd48434476e741f4fa49498b9c40b87');
2017 $t821_822 = { $get() { return $t817_818.$get().appNonce; }, $set(v) { const obj = $t817_818.$get(); obj.appNonce = v; $t817_818.$set(obj); } };
2018 $t822_823 = hexb('e45d3c38e4b2f1a346ee6bb0');
2019 $t823_824 = { $get() { return $t817_818.$get().hsKey; }, $set(v) { const obj = $t817_818.$get(); obj.hsKey = v; $t817_818.$set(obj); } };
2020 $t824_825 = hexb('0ead0f9dd582e03f253fd4231500f6243898b188dc5c14270651e4bd907f544a');
2021 $t825_826 = { $get() { return $t817_818.$get().hsNonce; }, $set(v) { const obj = $t817_818.$get(); obj.hsNonce = v; $t817_818.$set(obj); } };
2022 $t826_827 = hexb('7777ffe6f1b631e945455d86');
2023 $t818_819.$set(0);
2024 $t819_820.$set($t820_821);
2025 $t821_822.$set($t822_823);
2026 $t823_824.$set($t824_825);
2027 $t825_826.$set($t826_827);
2028 $t827_828 = $t816_817.$get().addr(1);
2029 $t828_829 = { $get() { return $t827_828.$get().generation; }, $set(v) { const obj = $t827_828.$get(); obj.generation = v; $t827_828.$set(obj); } };
2030 $t829_830 = { $get() { return $t827_828.$get().appKey; }, $set(v) { const obj = $t827_828.$get(); obj.appKey = v; $t827_828.$set(obj); } };
2031 $t830_831 = hexb('ed63da82b94971fc087138fdc24d300fc04184b7fd1faa9476509247dc4360b5');
2032 $t831_832 = { $get() { return $t827_828.$get().appNonce; }, $set(v) { const obj = $t827_828.$get(); obj.appNonce = v; $t827_828.$set(obj); } };
2033 $t832_833 = hexb('670c5d609ecdcd179024be88');
2034 $t833_834 = { $get() { return $t827_828.$get().hsKey; }, $set(v) { const obj = $t827_828.$get(); obj.hsKey = v; $t827_828.$set(obj); } };
2035 $t834_835 = hexb('5b9df9f343f947e1c2d19917e5e4eb38b3230fb13037753fc70ba185699d887b');
2036 $t835_836 = { $get() { return $t827_828.$get().hsNonce; }, $set(v) { const obj = $t827_828.$get(); obj.hsNonce = v; $t827_828.$set(obj); } };
2037 $t836_837 = hexb('1b66a9653db0e7e1263159e2');
2038 $t828_829.$set(15);
2039 $t829_830.$set($t830_831);
2040 $t831_832.$set($t832_833);
2041 $t833_834.$set($t834_835);
2042 $t835_836.$set($t836_837);
2043 $t837_838 = $rt.builtin.sliceSlice($t816_817.$get(), undefined, undefined, undefined);
2044 $t815_816.$set($t837_838);
2045 $t838_839 = $t501_502.$get().addr(14);
2046 $t839_840 = { $get() { return $t838_839.$get().gens; }, $set(v) { const obj = $t838_839.$get(); obj.gens = v; $t838_839.$set(obj); } };
2047 $t840_841 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2048 $t841_842 = $t840_841.$get().addr(0);
2049 $t842_843 = { $get() { return $t841_842.$get().generation; }, $set(v) { const obj = $t841_842.$get(); obj.generation = v; $t841_842.$set(obj); } };
2050 $t843_844 = { $get() { return $t841_842.$get().appKey; }, $set(v) { const obj = $t841_842.$get(); obj.appKey = v; $t841_842.$set(obj); } };
2051 $t844_845 = hexb('1dd991c61ea8b2a15ddb997cd73d147f130282975add3edab265c80113994c4c');
2052 $t845_846 = { $get() { return $t841_842.$get().appNonce; }, $set(v) { const obj = $t841_842.$get(); obj.appNonce = v; $t841_842.$set(obj); } };
2053 $t846_847 = hexb('252cf987be000faa9395e374');
2054 $t847_848 = { $get() { return $t841_842.$get().hsKey; }, $set(v) { const obj = $t841_842.$get(); obj.hsKey = v; $t841_842.$set(obj); } };
2055 $t848_849 = hexb('a6af30003d6a0ebc1165f6a409d26bbc9e130826ec3de2d5b9efd98b90863290');
2056 $t849_850 = { $get() { return $t841_842.$get().hsNonce; }, $set(v) { const obj = $t841_842.$get(); obj.hsNonce = v; $t841_842.$set(obj); } };
2057 $t850_851 = hexb('45c5bca88132b3b019497191');
2058 $t842_843.$set(0);
2059 $t843_844.$set($t844_845);
2060 $t845_846.$set($t846_847);
2061 $t847_848.$set($t848_849);
2062 $t849_850.$set($t850_851);
2063 $t851_852 = $t840_841.$get().addr(1);
2064 $t852_853 = { $get() { return $t851_852.$get().generation; }, $set(v) { const obj = $t851_852.$get(); obj.generation = v; $t851_852.$set(obj); } };
2065 $t853_854 = { $get() { return $t851_852.$get().appKey; }, $set(v) { const obj = $t851_852.$get(); obj.appKey = v; $t851_852.$set(obj); } };
2066 $t854_855 = hexb('a883c2ba5bc15b6f62303d2a077195f5a41b54dcfa56cc208b730a651faf9b8e');
2067 $t855_856 = { $get() { return $t851_852.$get().appNonce; }, $set(v) { const obj = $t851_852.$get(); obj.appNonce = v; $t851_852.$set(obj); } };
2068 $t856_857 = hexb('e1f00aec3118ef894e8ef857');
2069 $t857_858 = { $get() { return $t851_852.$get().hsKey; }, $set(v) { const obj = $t851_852.$get(); obj.hsKey = v; $t851_852.$set(obj); } };
2070 $t858_859 = hexb('7b5c6ce8984d99f66580da728668b45e3de0123b204e1570588305ea2b23b16a');
2071 $t859_860 = { $get() { return $t851_852.$get().hsNonce; }, $set(v) { const obj = $t851_852.$get(); obj.hsNonce = v; $t851_852.$set(obj); } };
2072 $t860_861 = hexb('80ff5aaeda7f3c393cf47948');
2073 $t852_853.$set(15);
2074 $t853_854.$set($t854_855);
2075 $t855_856.$set($t856_857);
2076 $t857_858.$set($t858_859);
2077 $t859_860.$set($t860_861);
2078 $t861_862 = $rt.builtin.sliceSlice($t840_841.$get(), undefined, undefined, undefined);
2079 $t839_840.$set($t861_862);
2080 $t862_863 = $t501_502.$get().addr(15);
2081 $t863_864 = { $get() { return $t862_863.$get().gens; }, $set(v) { const obj = $t862_863.$get(); obj.gens = v; $t862_863.$set(obj); } };
2082 $t864_865 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2083 $t865_866 = $t864_865.$get().addr(0);
2084 $t866_867 = { $get() { return $t865_866.$get().generation; }, $set(v) { const obj = $t865_866.$get(); obj.generation = v; $t865_866.$set(obj); } };
2085 $t867_868 = { $get() { return $t865_866.$get().appKey; }, $set(v) { const obj = $t865_866.$get(); obj.appKey = v; $t865_866.$set(obj); } };
2086 $t868_869 = hexb('b664d4492582843ba0f571ac4e97e4203a49c1ce7643401eb97a8674e557e4b6');
2087 $t869_870 = { $get() { return $t865_866.$get().appNonce; }, $set(v) { const obj = $t865_866.$get(); obj.appNonce = v; $t865_866.$set(obj); } };
2088 $t870_871 = hexb('3670a16a75f8c3ccf3534214');
2089 $t871_872 = { $get() { return $t865_866.$get().hsKey; }, $set(v) { const obj = $t865_866.$get(); obj.hsKey = v; $t865_866.$set(obj); } };
2090 $t872_873 = hexb('74528d0685d43dcdb5f6570da71b8c0885e5d7ed1a24045e2a7a975689170990');
2091 $t873_874 = { $get() { return $t865_866.$get().hsNonce; }, $set(v) { const obj = $t865_866.$get(); obj.hsNonce = v; $t865_866.$set(obj); } };
2092 $t874_875 = hexb('3761799305f9061f065404bd');
2093 $t866_867.$set(0);
2094 $t867_868.$set($t868_869);
2095 $t869_870.$set($t870_871);
2096 $t871_872.$set($t872_873);
2097 $t873_874.$set($t874_875);
2098 $t875_876 = $t864_865.$get().addr(1);
2099 $t876_877 = { $get() { return $t875_876.$get().generation; }, $set(v) { const obj = $t875_876.$get(); obj.generation = v; $t875_876.$set(obj); } };
2100 $t877_878 = { $get() { return $t875_876.$get().appKey; }, $set(v) { const obj = $t875_876.$get(); obj.appKey = v; $t875_876.$set(obj); } };
2101 $t878_879 = hexb('577bac50ea300acac89c821a7a72e66d6222ab61b99859533fecaf13316e968b');
2102 $t879_880 = { $get() { return $t875_876.$get().appNonce; }, $set(v) { const obj = $t875_876.$get(); obj.appNonce = v; $t875_876.$set(obj); } };
2103 $t880_881 = hexb('59deb0f69cc9208213e01c17');
2104 $t881_882 = { $get() { return $t875_876.$get().hsKey; }, $set(v) { const obj = $t875_876.$get(); obj.hsKey = v; $t875_876.$set(obj); } };
2105 $t882_883 = hexb('93fd884a5ef67ffea4fa9e423cb806efb132f60a888a0e398c621ac6643b9e05');
2106 $t883_884 = { $get() { return $t875_876.$get().hsNonce; }, $set(v) { const obj = $t875_876.$get(); obj.hsNonce = v; $t875_876.$set(obj); } };
2107 $t884_885 = hexb('4de1d7c4144280931b77e463');
2108 $t876_877.$set(15);
2109 $t877_878.$set($t878_879);
2110 $t879_880.$set($t880_881);
2111 $t881_882.$set($t882_883);
2112 $t883_884.$set($t884_885);
2113 $t885_886 = $rt.builtin.sliceSlice($t864_865.$get(), undefined, undefined, undefined);
2114 $t863_864.$set($t885_886);
2115 $t886_887 = $t501_502.$get().addr(16);
2116 $t887_888 = { $get() { return $t886_887.$get().gens; }, $set(v) { const obj = $t886_887.$get(); obj.gens = v; $t886_887.$set(obj); } };
2117 $t888_889 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2118 $t889_890 = $t888_889.$get().addr(0);
2119 $t890_891 = { $get() { return $t889_890.$get().generation; }, $set(v) { const obj = $t889_890.$get(); obj.generation = v; $t889_890.$set(obj); } };
2120 $t891_892 = { $get() { return $t889_890.$get().appKey; }, $set(v) { const obj = $t889_890.$get(); obj.appKey = v; $t889_890.$set(obj); } };
2121 $t892_893 = hexb('b2e26e5a1c4c6da6868f9cd065e1b0ecb44a28ebb9c2b3cb424034dfc3995317');
2122 $t893_894 = { $get() { return $t889_890.$get().appNonce; }, $set(v) { const obj = $t889_890.$get(); obj.appNonce = v; $t889_890.$set(obj); } };
2123 $t894_895 = hexb('9eebf0915efb97b858f7b768');
2124 $t895_896 = { $get() { return $t889_890.$get().hsKey; }, $set(v) { const obj = $t889_890.$get(); obj.hsKey = v; $t889_890.$set(obj); } };
2125 $t896_897 = hexb('a637c514b7c829cab2a9629a8ff25271243615bf4859564a612fa1c4558a4712');
2126 $t897_898 = { $get() { return $t889_890.$get().hsNonce; }, $set(v) { const obj = $t889_890.$get(); obj.hsNonce = v; $t889_890.$set(obj); } };
2127 $t898_899 = hexb('4af4d19d36f35331b94b2266');
2128 $t890_891.$set(0);
2129 $t891_892.$set($t892_893);
2130 $t893_894.$set($t894_895);
2131 $t895_896.$set($t896_897);
2132 $t897_898.$set($t898_899);
2133 $t899_900 = $t888_889.$get().addr(1);
2134 $t900_901 = { $get() { return $t899_900.$get().generation; }, $set(v) { const obj = $t899_900.$get(); obj.generation = v; $t899_900.$set(obj); } };
2135 $t901_902 = { $get() { return $t899_900.$get().appKey; }, $set(v) { const obj = $t899_900.$get(); obj.appKey = v; $t899_900.$set(obj); } };
2136 $t902_903 = hexb('ce8f0371058f53aa3acf4247d3e5ad4406fbc34133da172ee02f07390a24c7ef');
2137 $t903_904 = { $get() { return $t899_900.$get().appNonce; }, $set(v) { const obj = $t899_900.$get(); obj.appNonce = v; $t899_900.$set(obj); } };
2138 $t904_905 = hexb('6f8daf39512d316ed125f780');
2139 $t905_906 = { $get() { return $t899_900.$get().hsKey; }, $set(v) { const obj = $t899_900.$get(); obj.hsKey = v; $t899_900.$set(obj); } };
2140 $t906_907 = hexb('14370e699dd51f7b5d20e7de7902d08063b59f919617d174d62afe7087e93986');
2141 $t907_908 = { $get() { return $t899_900.$get().hsNonce; }, $set(v) { const obj = $t899_900.$get(); obj.hsNonce = v; $t899_900.$set(obj); } };
2142 $t908_909 = hexb('bad0c7cc1627aa98fa92ead0');
2143 $t900_901.$set(15);
2144 $t901_902.$set($t902_903);
2145 $t903_904.$set($t904_905);
2146 $t905_906.$set($t906_907);
2147 $t907_908.$set($t908_909);
2148 $t909_910 = $rt.builtin.sliceSlice($t888_889.$get(), undefined, undefined, undefined);
2149 $t887_888.$set($t909_910);
2150 $t910_911 = $t501_502.$get().addr(17);
2151 $t911_912 = { $get() { return $t910_911.$get().gens; }, $set(v) { const obj = $t910_911.$get(); obj.gens = v; $t910_911.$set(obj); } };
2152 $t912_913 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2153 $t913_914 = $t912_913.$get().addr(0);
2154 $t914_915 = { $get() { return $t913_914.$get().generation; }, $set(v) { const obj = $t913_914.$get(); obj.generation = v; $t913_914.$set(obj); } };
2155 $t915_916 = { $get() { return $t913_914.$get().appKey; }, $set(v) { const obj = $t913_914.$get(); obj.appKey = v; $t913_914.$set(obj); } };
2156 $t916_917 = hexb('6d0dea98855b5c994e218ba2f0976bbf62967be1158cd59c331fbeb11a2d561c');
2157 $t917_918 = { $get() { return $t913_914.$get().appNonce; }, $set(v) { const obj = $t913_914.$get(); obj.appNonce = v; $t913_914.$set(obj); } };
2158 $t918_919 = hexb('35f162ec922c7ea06807f8f9');
2159 $t919_920 = { $get() { return $t913_914.$get().hsKey; }, $set(v) { const obj = $t913_914.$get(); obj.hsKey = v; $t913_914.$set(obj); } };
2160 $t920_921 = hexb('4c01b96ba7b96dac8fa88fdeda453f6784e5223a03447191dc1588cc95ca9673');
2161 $t921_922 = { $get() { return $t913_914.$get().hsNonce; }, $set(v) { const obj = $t913_914.$get(); obj.hsNonce = v; $t913_914.$set(obj); } };
2162 $t922_923 = hexb('1da27b4eda1116016cbdb387');
2163 $t914_915.$set(0);
2164 $t915_916.$set($t916_917);
2165 $t917_918.$set($t918_919);
2166 $t919_920.$set($t920_921);
2167 $t921_922.$set($t922_923);
2168 $t923_924 = $t912_913.$get().addr(1);
2169 $t924_925 = { $get() { return $t923_924.$get().generation; }, $set(v) { const obj = $t923_924.$get(); obj.generation = v; $t923_924.$set(obj); } };
2170 $t925_926 = { $get() { return $t923_924.$get().appKey; }, $set(v) { const obj = $t923_924.$get(); obj.appKey = v; $t923_924.$set(obj); } };
2171 $t926_927 = hexb('5ea43052a92e9c24d54023c98fc9b986ca0348dfba60bef879174e2fc694f9ae');
2172 $t927_928 = { $get() { return $t923_924.$get().appNonce; }, $set(v) { const obj = $t923_924.$get(); obj.appNonce = v; $t923_924.$set(obj); } };
2173 $t928_929 = hexb('7eb562ee1b95d4ea6ff23ada');
2174 $t929_930 = { $get() { return $t923_924.$get().hsKey; }, $set(v) { const obj = $t923_924.$get(); obj.hsKey = v; $t923_924.$set(obj); } };
2175 $t930_931 = hexb('641fa6c1261e6e30609adf7806fd98a0d8311cc1997da2c2996cee7a4c367dfb');
2176 $t931_932 = { $get() { return $t923_924.$get().hsNonce; }, $set(v) { const obj = $t923_924.$get(); obj.hsNonce = v; $t923_924.$set(obj); } };
2177 $t932_933 = hexb('ef7478c8589fa2839b8159d7');
2178 $t924_925.$set(15);
2179 $t925_926.$set($t926_927);
2180 $t927_928.$set($t928_929);
2181 $t929_930.$set($t930_931);
2182 $t931_932.$set($t932_933);
2183 $t933_934 = $rt.builtin.sliceSlice($t912_913.$get(), undefined, undefined, undefined);
2184 $t911_912.$set($t933_934);
2185 $t934_935 = $t501_502.$get().addr(18);
2186 $t935_936 = { $get() { return $t934_935.$get().gens; }, $set(v) { const obj = $t934_935.$get(); obj.gens = v; $t934_935.$set(obj); } };
2187 $t936_937 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2188 $t937_938 = $t936_937.$get().addr(0);
2189 $t938_939 = { $get() { return $t937_938.$get().generation; }, $set(v) { const obj = $t937_938.$get(); obj.generation = v; $t937_938.$set(obj); } };
2190 $t939_940 = { $get() { return $t937_938.$get().appKey; }, $set(v) { const obj = $t937_938.$get(); obj.appKey = v; $t937_938.$set(obj); } };
2191 $t940_941 = hexb('60f42b93db6b678ca6aa1404de43e25dd91903b66fa27806b94f7b9875408848');
2192 $t941_942 = { $get() { return $t937_938.$get().appNonce; }, $set(v) { const obj = $t937_938.$get(); obj.appNonce = v; $t937_938.$set(obj); } };
2193 $t942_943 = hexb('2c9d0dbbc1a2c81e3c443e19');
2194 $t943_944 = { $get() { return $t937_938.$get().hsKey; }, $set(v) { const obj = $t937_938.$get(); obj.hsKey = v; $t937_938.$set(obj); } };
2195 $t944_945 = hexb('1f6de251bbf2b13cb520e67df4b33e24637cf31c3702782d29a6f8f839afd208');
2196 $t945_946 = { $get() { return $t937_938.$get().hsNonce; }, $set(v) { const obj = $t937_938.$get(); obj.hsNonce = v; $t937_938.$set(obj); } };
2197 $t946_947 = hexb('7beec37adaa7410d847a2144');
2198 $t938_939.$set(0);
2199 $t939_940.$set($t940_941);
2200 $t941_942.$set($t942_943);
2201 $t943_944.$set($t944_945);
2202 $t945_946.$set($t946_947);
2203 $t947_948 = $t936_937.$get().addr(1);
2204 $t948_949 = { $get() { return $t947_948.$get().generation; }, $set(v) { const obj = $t947_948.$get(); obj.generation = v; $t947_948.$set(obj); } };
2205 $t949_950 = { $get() { return $t947_948.$get().appKey; }, $set(v) { const obj = $t947_948.$get(); obj.appKey = v; $t947_948.$set(obj); } };
2206 $t950_951 = hexb('80b4c8c0e00c3ad0508b9e96edcfb3a892872ccdec48095b546997c55d26ce4f');
2207 $t951_952 = { $get() { return $t947_948.$get().appNonce; }, $set(v) { const obj = $t947_948.$get(); obj.appNonce = v; $t947_948.$set(obj); } };
2208 $t952_953 = hexb('f3e486464fafed0ca31cd440');
2209 $t953_954 = { $get() { return $t947_948.$get().hsKey; }, $set(v) { const obj = $t947_948.$get(); obj.hsKey = v; $t947_948.$set(obj); } };
2210 $t954_955 = hexb('63751909275974233fefcf4176e3aabdb634a9b4a362fa06e840f27754349ef1');
2211 $t955_956 = { $get() { return $t947_948.$get().hsNonce; }, $set(v) { const obj = $t947_948.$get(); obj.hsNonce = v; $t947_948.$set(obj); } };
2212 $t956_957 = hexb('6bc125402f08559ce072eb7d');
2213 $t948_949.$set(15);
2214 $t949_950.$set($t950_951);
2215 $t951_952.$set($t952_953);
2216 $t953_954.$set($t954_955);
2217 $t955_956.$set($t956_957);
2218 $t957_958 = $rt.builtin.sliceSlice($t936_937.$get(), undefined, undefined, undefined);
2219 $t935_936.$set($t957_958);
2220 $t958_959 = $t501_502.$get().addr(19);
2221 $t959_960 = { $get() { return $t958_959.$get().gens; }, $set(v) { const obj = $t958_959.$get(); obj.gens = v; $t958_959.$set(obj); } };
2222 $t960_961 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2223 $t961_962 = $t960_961.$get().addr(0);
2224 $t962_963 = { $get() { return $t961_962.$get().generation; }, $set(v) { const obj = $t961_962.$get(); obj.generation = v; $t961_962.$set(obj); } };
2225 $t963_964 = { $get() { return $t961_962.$get().appKey; }, $set(v) { const obj = $t961_962.$get(); obj.appKey = v; $t961_962.$set(obj); } };
2226 $t964_965 = hexb('552aabba30e419de851fb2c6c4e3eb7c43a5bfe12d846b9ac7f53fa1d4f01090');
2227 $t965_966 = { $get() { return $t961_962.$get().appNonce; }, $set(v) { const obj = $t961_962.$get(); obj.appNonce = v; $t961_962.$set(obj); } };
2228 $t966_967 = hexb('99842f50b3484f21124680da');
2229 $t967_968 = { $get() { return $t961_962.$get().hsKey; }, $set(v) { const obj = $t961_962.$get(); obj.hsKey = v; $t961_962.$set(obj); } };
2230 $t968_969 = hexb('1daf5540dab095fd914501033872bf7c86274db51fa0acbef6a9ac4ffb550244');
2231 $t969_970 = { $get() { return $t961_962.$get().hsNonce; }, $set(v) { const obj = $t961_962.$get(); obj.hsNonce = v; $t961_962.$set(obj); } };
2232 $t970_971 = hexb('9d98bfe879c91a3055ef0e83');
2233 $t962_963.$set(0);
2234 $t963_964.$set($t964_965);
2235 $t965_966.$set($t966_967);
2236 $t967_968.$set($t968_969);
2237 $t969_970.$set($t970_971);
2238 $t971_972 = $t960_961.$get().addr(1);
2239 $t972_973 = { $get() { return $t971_972.$get().generation; }, $set(v) { const obj = $t971_972.$get(); obj.generation = v; $t971_972.$set(obj); } };
2240 $t973_974 = { $get() { return $t971_972.$get().appKey; }, $set(v) { const obj = $t971_972.$get(); obj.appKey = v; $t971_972.$set(obj); } };
2241 $t974_975 = hexb('58ad351fd3f97c9cd1f6d2db7e90bc22db89a4e1a5bdea4ca595b1b51b3b4af9');
2242 $t975_976 = { $get() { return $t971_972.$get().appNonce; }, $set(v) { const obj = $t971_972.$get(); obj.appNonce = v; $t971_972.$set(obj); } };
2243 $t976_977 = hexb('0d066d818b4bfd670c37fa2f');
2244 $t977_978 = { $get() { return $t971_972.$get().hsKey; }, $set(v) { const obj = $t971_972.$get(); obj.hsKey = v; $t971_972.$set(obj); } };
2245 $t978_979 = hexb('f51a272bee65bf5e5021f8d244c294bcfe22ebd9fcef68d6503ac28d2067a515');
2246 $t979_980 = { $get() { return $t971_972.$get().hsNonce; }, $set(v) { const obj = $t971_972.$get(); obj.hsNonce = v; $t971_972.$set(obj); } };
2247 $t980_981 = hexb('33b2c5f398482892898dda32');
2248 $t972_973.$set(15);
2249 $t973_974.$set($t974_975);
2250 $t975_976.$set($t976_977);
2251 $t977_978.$set($t978_979);
2252 $t979_980.$set($t980_981);
2253 $t981_982 = $rt.builtin.sliceSlice($t960_961.$get(), undefined, undefined, undefined);
2254 $t959_960.$set($t981_982);
2255 $t982_983 = $t501_502.$get().addr(20);
2256 $t983_984 = { $get() { return $t982_983.$get().gens; }, $set(v) { const obj = $t982_983.$get(); obj.gens = v; $t982_983.$set(obj); } };
2257 $t984_985 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2258 $t985_986 = $t984_985.$get().addr(0);
2259 $t986_987 = { $get() { return $t985_986.$get().generation; }, $set(v) { const obj = $t985_986.$get(); obj.generation = v; $t985_986.$set(obj); } };
2260 $t987_988 = { $get() { return $t985_986.$get().appKey; }, $set(v) { const obj = $t985_986.$get(); obj.appKey = v; $t985_986.$set(obj); } };
2261 $t988_989 = hexb('b9f48c4910c280fb5a5caa59d6ccae2d13fb699a70eeaf5dfdedaa591d7ae60b');
2262 $t989_990 = { $get() { return $t985_986.$get().appNonce; }, $set(v) { const obj = $t985_986.$get(); obj.appNonce = v; $t985_986.$set(obj); } };
2263 $t990_991 = hexb('fc1c013946ce4e2f718a8194');
2264 $t991_992 = { $get() { return $t985_986.$get().hsKey; }, $set(v) { const obj = $t985_986.$get(); obj.hsKey = v; $t985_986.$set(obj); } };
2265 $t992_993 = hexb('235ca988cd3fa54a987e8c6696150b8e10f32cd54bf0920961d3fcfea0bb1750');
2266 $t993_994 = { $get() { return $t985_986.$get().hsNonce; }, $set(v) { const obj = $t985_986.$get(); obj.hsNonce = v; $t985_986.$set(obj); } };
2267 $t994_995 = hexb('56b0c544d20aba38b39fb3ab');
2268 $t986_987.$set(0);
2269 $t987_988.$set($t988_989);
2270 $t989_990.$set($t990_991);
2271 $t991_992.$set($t992_993);
2272 $t993_994.$set($t994_995);
2273 $t995_996 = $t984_985.$get().addr(1);
2274 $t996_997 = { $get() { return $t995_996.$get().generation; }, $set(v) { const obj = $t995_996.$get(); obj.generation = v; $t995_996.$set(obj); } };
2275 $t997_998 = { $get() { return $t995_996.$get().appKey; }, $set(v) { const obj = $t995_996.$get(); obj.appKey = v; $t995_996.$set(obj); } };
2276 $t998_999 = hexb('9513d72e097d59945ef55fdeebcf78e2fa764a7005c2142f3ff60202732f72f7');
2277 $t999_1000 = { $get() { return $t995_996.$get().appNonce; }, $set(v) { const obj = $t995_996.$get(); obj.appNonce = v; $t995_996.$set(obj); } };
2278 $t1000_1001 = hexb('8830961dd3996ecea1fc04e4');
2279 $t1001_1002 = { $get() { return $t995_996.$get().hsKey; }, $set(v) { const obj = $t995_996.$get(); obj.hsKey = v; $t995_996.$set(obj); } };
2280 $t1002_1003 = hexb('cc308ee4cefa2403a172210a7f452f08c5811bf62743c857e997766d4856d781');
2281 $t1003_1004 = { $get() { return $t995_996.$get().hsNonce; }, $set(v) { const obj = $t995_996.$get(); obj.hsNonce = v; $t995_996.$set(obj); } };
2282 $t1004_1005 = hexb('7a654742529da576490049b0');
2283 $t996_997.$set(15);
2284 $t997_998.$set($t998_999);
2285 $t999_1000.$set($t1000_1001);
2286 $t1001_1002.$set($t1002_1003);
2287 $t1003_1004.$set($t1004_1005);
2288 $t1005_1006 = $rt.builtin.sliceSlice($t984_985.$get(), undefined, undefined, undefined);
2289 $t983_984.$set($t1005_1006);
2290 $t1006_1007 = $t501_502.$get().addr(21);
2291 $t1007_1008 = { $get() { return $t1006_1007.$get().gens; }, $set(v) { const obj = $t1006_1007.$get(); obj.gens = v; $t1006_1007.$set(obj); } };
2292 $t1008_1009 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2293 $t1009_1010 = $t1008_1009.$get().addr(0);
2294 $t1010_1011 = { $get() { return $t1009_1010.$get().generation; }, $set(v) { const obj = $t1009_1010.$get(); obj.generation = v; $t1009_1010.$set(obj); } };
2295 $t1011_1012 = { $get() { return $t1009_1010.$get().appKey; }, $set(v) { const obj = $t1009_1010.$get(); obj.appKey = v; $t1009_1010.$set(obj); } };
2296 $t1012_1013 = hexb('00ee6bff7a38d1af3f02fc33427dce21df57be6431e3d3debf9403f4061b1677');
2297 $t1013_1014 = { $get() { return $t1009_1010.$get().appNonce; }, $set(v) { const obj = $t1009_1010.$get(); obj.appNonce = v; $t1009_1010.$set(obj); } };
2298 $t1014_1015 = hexb('18931c5c8ed5968ac7e34b16');
2299 $t1015_1016 = { $get() { return $t1009_1010.$get().hsKey; }, $set(v) { const obj = $t1009_1010.$get(); obj.hsKey = v; $t1009_1010.$set(obj); } };
2300 $t1016_1017 = hexb('6eef12f40735cf41e3ed956616ffed807bc17eb0d1a3a4ddb4d8a2c191ad7227');
2301 $t1017_1018 = { $get() { return $t1009_1010.$get().hsNonce; }, $set(v) { const obj = $t1009_1010.$get(); obj.hsNonce = v; $t1009_1010.$set(obj); } };
2302 $t1018_1019 = hexb('c335f7d3b01689f54dd0de73');
2303 $t1010_1011.$set(0);
2304 $t1011_1012.$set($t1012_1013);
2305 $t1013_1014.$set($t1014_1015);
2306 $t1015_1016.$set($t1016_1017);
2307 $t1017_1018.$set($t1018_1019);
2308 $t1019_1020 = $t1008_1009.$get().addr(1);
2309 $t1020_1021 = { $get() { return $t1019_1020.$get().generation; }, $set(v) { const obj = $t1019_1020.$get(); obj.generation = v; $t1019_1020.$set(obj); } };
2310 $t1021_1022 = { $get() { return $t1019_1020.$get().appKey; }, $set(v) { const obj = $t1019_1020.$get(); obj.appKey = v; $t1019_1020.$set(obj); } };
2311 $t1022_1023 = hexb('e5c864190765a8c4bf618fabdcbaf17082903bf16f1ba1f43202c581056b0680');
2312 $t1023_1024 = { $get() { return $t1019_1020.$get().appNonce; }, $set(v) { const obj = $t1019_1020.$get(); obj.appNonce = v; $t1019_1020.$set(obj); } };
2313 $t1024_1025 = hexb('58cf28bbc5913c5425ecc6f3');
2314 $t1025_1026 = { $get() { return $t1019_1020.$get().hsKey; }, $set(v) { const obj = $t1019_1020.$get(); obj.hsKey = v; $t1019_1020.$set(obj); } };
2315 $t1026_1027 = hexb('c5cd9f2c0fc5556eb1b72cd5347e3bd2b3f32e1573e52d99327b593d026bb935');
2316 $t1027_1028 = { $get() { return $t1019_1020.$get().hsNonce; }, $set(v) { const obj = $t1019_1020.$get(); obj.hsNonce = v; $t1019_1020.$set(obj); } };
2317 $t1028_1029 = hexb('83822100c66ab081058c4e98');
2318 $t1020_1021.$set(15);
2319 $t1021_1022.$set($t1022_1023);
2320 $t1023_1024.$set($t1024_1025);
2321 $t1025_1026.$set($t1026_1027);
2322 $t1027_1028.$set($t1028_1029);
2323 $t1029_1030 = $rt.builtin.sliceSlice($t1008_1009.$get(), undefined, undefined, undefined);
2324 $t1007_1008.$set($t1029_1030);
2325 $t1030_1031 = $t501_502.$get().addr(22);
2326 $t1031_1032 = { $get() { return $t1030_1031.$get().gens; }, $set(v) { const obj = $t1030_1031.$get(); obj.gens = v; $t1030_1031.$set(obj); } };
2327 $t1032_1033 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2328 $t1033_1034 = $t1032_1033.$get().addr(0);
2329 $t1034_1035 = { $get() { return $t1033_1034.$get().generation; }, $set(v) { const obj = $t1033_1034.$get(); obj.generation = v; $t1033_1034.$set(obj); } };
2330 $t1035_1036 = { $get() { return $t1033_1034.$get().appKey; }, $set(v) { const obj = $t1033_1034.$get(); obj.appKey = v; $t1033_1034.$set(obj); } };
2331 $t1036_1037 = hexb('bd1b0e751ad168d77167373c9f35d03ebcb2d6ac61c8bf8080967955d5f130c6');
2332 $t1037_1038 = { $get() { return $t1033_1034.$get().appNonce; }, $set(v) { const obj = $t1033_1034.$get(); obj.appNonce = v; $t1033_1034.$set(obj); } };
2333 $t1038_1039 = hexb('69402b8abf6d591b94b2b789');
2334 $t1039_1040 = { $get() { return $t1033_1034.$get().hsKey; }, $set(v) { const obj = $t1033_1034.$get(); obj.hsKey = v; $t1033_1034.$set(obj); } };
2335 $t1040_1041 = hexb('c0e2b786481eb9216d26cb84c8ae65fa631512b30a28320350eb80fc3190a3a6');
2336 $t1041_1042 = { $get() { return $t1033_1034.$get().hsNonce; }, $set(v) { const obj = $t1033_1034.$get(); obj.hsNonce = v; $t1033_1034.$set(obj); } };
2337 $t1042_1043 = hexb('7b5b181ed1c2bb1d486ab0c7');
2338 $t1034_1035.$set(0);
2339 $t1035_1036.$set($t1036_1037);
2340 $t1037_1038.$set($t1038_1039);
2341 $t1039_1040.$set($t1040_1041);
2342 $t1041_1042.$set($t1042_1043);
2343 $t1043_1044 = $t1032_1033.$get().addr(1);
2344 $t1044_1045 = { $get() { return $t1043_1044.$get().generation; }, $set(v) { const obj = $t1043_1044.$get(); obj.generation = v; $t1043_1044.$set(obj); } };
2345 $t1045_1046 = { $get() { return $t1043_1044.$get().appKey; }, $set(v) { const obj = $t1043_1044.$get(); obj.appKey = v; $t1043_1044.$set(obj); } };
2346 $t1046_1047 = hexb('778ae0a3a44e33ab4e70587a372df8f21895727f2a9f07fc869b12839bf64898');
2347 $t1047_1048 = { $get() { return $t1043_1044.$get().appNonce; }, $set(v) { const obj = $t1043_1044.$get(); obj.appNonce = v; $t1043_1044.$set(obj); } };
2348 $t1048_1049 = hexb('251bc1775d3c2d0dee7b8cc5');
2349 $t1049_1050 = { $get() { return $t1043_1044.$get().hsKey; }, $set(v) { const obj = $t1043_1044.$get(); obj.hsKey = v; $t1043_1044.$set(obj); } };
2350 $t1050_1051 = hexb('01bd4236b9a221a77ccb2c0acab295db45bbe22e465c6cce5092f0677468d8db');
2351 $t1051_1052 = { $get() { return $t1043_1044.$get().hsNonce; }, $set(v) { const obj = $t1043_1044.$get(); obj.hsNonce = v; $t1043_1044.$set(obj); } };
2352 $t1052_1053 = hexb('b7a6d94f134416410be01722');
2353 $t1044_1045.$set(15);
2354 $t1045_1046.$set($t1046_1047);
2355 $t1047_1048.$set($t1048_1049);
2356 $t1049_1050.$set($t1050_1051);
2357 $t1051_1052.$set($t1052_1053);
2358 $t1053_1054 = $rt.builtin.sliceSlice($t1032_1033.$get(), undefined, undefined, undefined);
2359 $t1031_1032.$set($t1053_1054);
2360 $t1054_1055 = $t501_502.$get().addr(23);
2361 $t1055_1056 = { $get() { return $t1054_1055.$get().gens; }, $set(v) { const obj = $t1054_1055.$get(); obj.gens = v; $t1054_1055.$set(obj); } };
2362 $t1056_1057 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2363 $t1057_1058 = $t1056_1057.$get().addr(0);
2364 $t1058_1059 = { $get() { return $t1057_1058.$get().generation; }, $set(v) { const obj = $t1057_1058.$get(); obj.generation = v; $t1057_1058.$set(obj); } };
2365 $t1059_1060 = { $get() { return $t1057_1058.$get().appKey; }, $set(v) { const obj = $t1057_1058.$get(); obj.appKey = v; $t1057_1058.$set(obj); } };
2366 $t1060_1061 = hexb('45f51d01477d3a1b56095dba92686d045a199f2475aa85e00f80b5714ab9294c');
2367 $t1061_1062 = { $get() { return $t1057_1058.$get().appNonce; }, $set(v) { const obj = $t1057_1058.$get(); obj.appNonce = v; $t1057_1058.$set(obj); } };
2368 $t1062_1063 = hexb('1917c353ae0ef9f04a92b4da');
2369 $t1063_1064 = { $get() { return $t1057_1058.$get().hsKey; }, $set(v) { const obj = $t1057_1058.$get(); obj.hsKey = v; $t1057_1058.$set(obj); } };
2370 $t1064_1065 = hexb('857980041516d9860405ff2b4660a99200e1645d1b14d62aa5236423d77ccadb');
2371 $t1065_1066 = { $get() { return $t1057_1058.$get().hsNonce; }, $set(v) { const obj = $t1057_1058.$get(); obj.hsNonce = v; $t1057_1058.$set(obj); } };
2372 $t1066_1067 = hexb('6815d9632523b349b3b56d65');
2373 $t1058_1059.$set(0);
2374 $t1059_1060.$set($t1060_1061);
2375 $t1061_1062.$set($t1062_1063);
2376 $t1063_1064.$set($t1064_1065);
2377 $t1065_1066.$set($t1066_1067);
2378 $t1067_1068 = $t1056_1057.$get().addr(1);
2379 $t1068_1069 = { $get() { return $t1067_1068.$get().generation; }, $set(v) { const obj = $t1067_1068.$get(); obj.generation = v; $t1067_1068.$set(obj); } };
2380 $t1069_1070 = { $get() { return $t1067_1068.$get().appKey; }, $set(v) { const obj = $t1067_1068.$get(); obj.appKey = v; $t1067_1068.$set(obj); } };
2381 $t1070_1071 = hexb('52f5f473c85cf7d6489eabd5e12a9938f8f2ded347ec4feb8f26b3340cca78cc');
2382 $t1071_1072 = { $get() { return $t1067_1068.$get().appNonce; }, $set(v) { const obj = $t1067_1068.$get(); obj.appNonce = v; $t1067_1068.$set(obj); } };
2383 $t1072_1073 = hexb('c02f4e2ac8d69a8a49cd2ce9');
2384 $t1073_1074 = { $get() { return $t1067_1068.$get().hsKey; }, $set(v) { const obj = $t1067_1068.$get(); obj.hsKey = v; $t1067_1068.$set(obj); } };
2385 $t1074_1075 = hexb('ef2aa858c74f20f3b6072e7d324d778db0c4ee7afe95014b18e746416444be90');
2386 $t1075_1076 = { $get() { return $t1067_1068.$get().hsNonce; }, $set(v) { const obj = $t1067_1068.$get(); obj.hsNonce = v; $t1067_1068.$set(obj); } };
2387 $t1076_1077 = hexb('d044c981303e0a9e95cf4e12');
2388 $t1068_1069.$set(15);
2389 $t1069_1070.$set($t1070_1071);
2390 $t1071_1072.$set($t1072_1073);
2391 $t1073_1074.$set($t1074_1075);
2392 $t1075_1076.$set($t1076_1077);
2393 $t1077_1078 = $rt.builtin.sliceSlice($t1056_1057.$get(), undefined, undefined, undefined);
2394 $t1055_1056.$set($t1077_1078);
2395 $t1078_1079 = $t501_502.$get().addr(24);
2396 $t1079_1080 = { $get() { return $t1078_1079.$get().gens; }, $set(v) { const obj = $t1078_1079.$get(); obj.gens = v; $t1078_1079.$set(obj); } };
2397 $t1080_1081 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2398 $t1081_1082 = $t1080_1081.$get().addr(0);
2399 $t1082_1083 = { $get() { return $t1081_1082.$get().generation; }, $set(v) { const obj = $t1081_1082.$get(); obj.generation = v; $t1081_1082.$set(obj); } };
2400 $t1083_1084 = { $get() { return $t1081_1082.$get().appKey; }, $set(v) { const obj = $t1081_1082.$get(); obj.appKey = v; $t1081_1082.$set(obj); } };
2401 $t1084_1085 = hexb('f4b713b3f8c3302406b0324fbe7fd976e4bbe4e020f36cefe16584b81203ac9d');
2402 $t1085_1086 = { $get() { return $t1081_1082.$get().appNonce; }, $set(v) { const obj = $t1081_1082.$get(); obj.appNonce = v; $t1081_1082.$set(obj); } };
2403 $t1086_1087 = hexb('a16129d408260754c517ab74');
2404 $t1087_1088 = { $get() { return $t1081_1082.$get().hsKey; }, $set(v) { const obj = $t1081_1082.$get(); obj.hsKey = v; $t1081_1082.$set(obj); } };
2405 $t1088_1089 = hexb('9964ffdde50cb0341ca28f526e049e9b27b61018b6ac2899e7c1c962a0a36fb0');
2406 $t1089_1090 = { $get() { return $t1081_1082.$get().hsNonce; }, $set(v) { const obj = $t1081_1082.$get(); obj.hsNonce = v; $t1081_1082.$set(obj); } };
2407 $t1090_1091 = hexb('193c9a8ded86d031599ca201');
2408 $t1082_1083.$set(0);
2409 $t1083_1084.$set($t1084_1085);
2410 $t1085_1086.$set($t1086_1087);
2411 $t1087_1088.$set($t1088_1089);
2412 $t1089_1090.$set($t1090_1091);
2413 $t1091_1092 = $t1080_1081.$get().addr(1);
2414 $t1092_1093 = { $get() { return $t1091_1092.$get().generation; }, $set(v) { const obj = $t1091_1092.$get(); obj.generation = v; $t1091_1092.$set(obj); } };
2415 $t1093_1094 = { $get() { return $t1091_1092.$get().appKey; }, $set(v) { const obj = $t1091_1092.$get(); obj.appKey = v; $t1091_1092.$set(obj); } };
2416 $t1094_1095 = hexb('9684a7dbae4a961c9cd3a1e6909552d8d67328f8315d3cd7480b9951d7326a56');
2417 $t1095_1096 = { $get() { return $t1091_1092.$get().appNonce; }, $set(v) { const obj = $t1091_1092.$get(); obj.appNonce = v; $t1091_1092.$set(obj); } };
2418 $t1096_1097 = hexb('b3ab89f9344ea903bae44991');
2419 $t1097_1098 = { $get() { return $t1091_1092.$get().hsKey; }, $set(v) { const obj = $t1091_1092.$get(); obj.hsKey = v; $t1091_1092.$set(obj); } };
2420 $t1098_1099 = hexb('88f10067fa213a57da7b15a9fe216e17edef6d4c6919427bb3269e9b02769e6f');
2421 $t1099_1100 = { $get() { return $t1091_1092.$get().hsNonce; }, $set(v) { const obj = $t1091_1092.$get(); obj.hsNonce = v; $t1091_1092.$set(obj); } };
2422 $t1100_1101 = hexb('bb4c1ed548d344cab95fbf76');
2423 $t1092_1093.$set(15);
2424 $t1093_1094.$set($t1094_1095);
2425 $t1095_1096.$set($t1096_1097);
2426 $t1097_1098.$set($t1098_1099);
2427 $t1099_1100.$set($t1100_1101);
2428 $t1101_1102 = $rt.builtin.sliceSlice($t1080_1081.$get(), undefined, undefined, undefined);
2429 $t1079_1080.$set($t1101_1102);
2430 $t1102_1103 = $t501_502.$get().addr(25);
2431 $t1103_1104 = { $get() { return $t1102_1103.$get().gens; }, $set(v) { const obj = $t1102_1103.$get(); obj.gens = v; $t1102_1103.$set(obj); } };
2432 $t1104_1105 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2433 $t1105_1106 = $t1104_1105.$get().addr(0);
2434 $t1106_1107 = { $get() { return $t1105_1106.$get().generation; }, $set(v) { const obj = $t1105_1106.$get(); obj.generation = v; $t1105_1106.$set(obj); } };
2435 $t1107_1108 = { $get() { return $t1105_1106.$get().appKey; }, $set(v) { const obj = $t1105_1106.$get(); obj.appKey = v; $t1105_1106.$set(obj); } };
2436 $t1108_1109 = hexb('9666d72fd981bfa6866c984fd2bc290c16f8f69c129fbab05006610f748bf82b');
2437 $t1109_1110 = { $get() { return $t1105_1106.$get().appNonce; }, $set(v) { const obj = $t1105_1106.$get(); obj.appNonce = v; $t1105_1106.$set(obj); } };
2438 $t1110_1111 = hexb('a90d5e735298f60449e1fba4');
2439 $t1111_1112 = { $get() { return $t1105_1106.$get().hsKey; }, $set(v) { const obj = $t1105_1106.$get(); obj.hsKey = v; $t1105_1106.$set(obj); } };
2440 $t1112_1113 = hexb('73d8d6e350d6f711db01363a4dfccce55bfb819adc4a8eb0f1cb142b920bd95a');
2441 $t1113_1114 = { $get() { return $t1105_1106.$get().hsNonce; }, $set(v) { const obj = $t1105_1106.$get(); obj.hsNonce = v; $t1105_1106.$set(obj); } };
2442 $t1114_1115 = hexb('d86c67f005581d813fe6211a');
2443 $t1106_1107.$set(0);
2444 $t1107_1108.$set($t1108_1109);
2445 $t1109_1110.$set($t1110_1111);
2446 $t1111_1112.$set($t1112_1113);
2447 $t1113_1114.$set($t1114_1115);
2448 $t1115_1116 = $t1104_1105.$get().addr(1);
2449 $t1116_1117 = { $get() { return $t1115_1116.$get().generation; }, $set(v) { const obj = $t1115_1116.$get(); obj.generation = v; $t1115_1116.$set(obj); } };
2450 $t1117_1118 = { $get() { return $t1115_1116.$get().appKey; }, $set(v) { const obj = $t1115_1116.$get(); obj.appKey = v; $t1115_1116.$set(obj); } };
2451 $t1118_1119 = hexb('8a11a2332a979b6a0a6913b067855af1a2bf02481985212990c1ac02b3d425ae');
2452 $t1119_1120 = { $get() { return $t1115_1116.$get().appNonce; }, $set(v) { const obj = $t1115_1116.$get(); obj.appNonce = v; $t1115_1116.$set(obj); } };
2453 $t1120_1121 = hexb('3eb2629a7b3a84e38731446f');
2454 $t1121_1122 = { $get() { return $t1115_1116.$get().hsKey; }, $set(v) { const obj = $t1115_1116.$get(); obj.hsKey = v; $t1115_1116.$set(obj); } };
2455 $t1122_1123 = hexb('9be0769ec171eb5f6a34a5e9b7f6c57662847d3127273c862305d4ed2eb6d476');
2456 $t1123_1124 = { $get() { return $t1115_1116.$get().hsNonce; }, $set(v) { const obj = $t1115_1116.$get(); obj.hsNonce = v; $t1115_1116.$set(obj); } };
2457 $t1124_1125 = hexb('c53146c3f42d45b9e7d6118b');
2458 $t1116_1117.$set(15);
2459 $t1117_1118.$set($t1118_1119);
2460 $t1119_1120.$set($t1120_1121);
2461 $t1121_1122.$set($t1122_1123);
2462 $t1123_1124.$set($t1124_1125);
2463 $t1125_1126 = $rt.builtin.sliceSlice($t1104_1105.$get(), undefined, undefined, undefined);
2464 $t1103_1104.$set($t1125_1126);
2465 $t1126_1127 = $t501_502.$get().addr(26);
2466 $t1127_1128 = { $get() { return $t1126_1127.$get().gens; }, $set(v) { const obj = $t1126_1127.$get(); obj.gens = v; $t1126_1127.$set(obj); } };
2467 $t1128_1129 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2468 $t1129_1130 = $t1128_1129.$get().addr(0);
2469 $t1130_1131 = { $get() { return $t1129_1130.$get().generation; }, $set(v) { const obj = $t1129_1130.$get(); obj.generation = v; $t1129_1130.$set(obj); } };
2470 $t1131_1132 = { $get() { return $t1129_1130.$get().appKey; }, $set(v) { const obj = $t1129_1130.$get(); obj.appKey = v; $t1129_1130.$set(obj); } };
2471 $t1132_1133 = hexb('de9f89f8af5e21978766bae0cb3815bad4e507ea84eb54c91caad51ea238dde7');
2472 $t1133_1134 = { $get() { return $t1129_1130.$get().appNonce; }, $set(v) { const obj = $t1129_1130.$get(); obj.appNonce = v; $t1129_1130.$set(obj); } };
2473 $t1134_1135 = hexb('52694b3920c04ef6f46e9a79');
2474 $t1135_1136 = { $get() { return $t1129_1130.$get().hsKey; }, $set(v) { const obj = $t1129_1130.$get(); obj.hsKey = v; $t1129_1130.$set(obj); } };
2475 $t1136_1137 = hexb('8612f11958ccfdec9e21b4becedc9c831a0eadee0bd19611bccfa4c095a34f10');
2476 $t1137_1138 = { $get() { return $t1129_1130.$get().hsNonce; }, $set(v) { const obj = $t1129_1130.$get(); obj.hsNonce = v; $t1129_1130.$set(obj); } };
2477 $t1138_1139 = hexb('a232d33b2ee057c174eee366');
2478 $t1130_1131.$set(0);
2479 $t1131_1132.$set($t1132_1133);
2480 $t1133_1134.$set($t1134_1135);
2481 $t1135_1136.$set($t1136_1137);
2482 $t1137_1138.$set($t1138_1139);
2483 $t1139_1140 = $t1128_1129.$get().addr(1);
2484 $t1140_1141 = { $get() { return $t1139_1140.$get().generation; }, $set(v) { const obj = $t1139_1140.$get(); obj.generation = v; $t1139_1140.$set(obj); } };
2485 $t1141_1142 = { $get() { return $t1139_1140.$get().appKey; }, $set(v) { const obj = $t1139_1140.$get(); obj.appKey = v; $t1139_1140.$set(obj); } };
2486 $t1142_1143 = hexb('74eb21d8f60f0a64b09632e97a5b4839b176d78fea13e2ba96cc7545e5f62885');
2487 $t1143_1144 = { $get() { return $t1139_1140.$get().appNonce; }, $set(v) { const obj = $t1139_1140.$get(); obj.appNonce = v; $t1139_1140.$set(obj); } };
2488 $t1144_1145 = hexb('bb4f7abf1d0860c1ac553908');
2489 $t1145_1146 = { $get() { return $t1139_1140.$get().hsKey; }, $set(v) { const obj = $t1139_1140.$get(); obj.hsKey = v; $t1139_1140.$set(obj); } };
2490 $t1146_1147 = hexb('dfefa089b41cd4562453b709d43f7968d7c27abb1394554d5fa0a604527f2780');
2491 $t1147_1148 = { $get() { return $t1139_1140.$get().hsNonce; }, $set(v) { const obj = $t1139_1140.$get(); obj.hsNonce = v; $t1139_1140.$set(obj); } };
2492 $t1148_1149 = hexb('5c17aa7253a308d84ab43ba2');
2493 $t1140_1141.$set(15);
2494 $t1141_1142.$set($t1142_1143);
2495 $t1143_1144.$set($t1144_1145);
2496 $t1145_1146.$set($t1146_1147);
2497 $t1147_1148.$set($t1148_1149);
2498 $t1149_1150 = $rt.builtin.sliceSlice($t1128_1129.$get(), undefined, undefined, undefined);
2499 $t1127_1128.$set($t1149_1150);
2500 $t1150_1151 = $t501_502.$get().addr(27);
2501 $t1151_1152 = { $get() { return $t1150_1151.$get().gens; }, $set(v) { const obj = $t1150_1151.$get(); obj.gens = v; $t1150_1151.$set(obj); } };
2502 $t1152_1153 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2503 $t1153_1154 = $t1152_1153.$get().addr(0);
2504 $t1154_1155 = { $get() { return $t1153_1154.$get().generation; }, $set(v) { const obj = $t1153_1154.$get(); obj.generation = v; $t1153_1154.$set(obj); } };
2505 $t1155_1156 = { $get() { return $t1153_1154.$get().appKey; }, $set(v) { const obj = $t1153_1154.$get(); obj.appKey = v; $t1153_1154.$set(obj); } };
2506 $t1156_1157 = hexb('39d564c496b0ee7ee90cb6853d4938eff97a6a7e7396f566fde2aecce1d4a7d3');
2507 $t1157_1158 = { $get() { return $t1153_1154.$get().appNonce; }, $set(v) { const obj = $t1153_1154.$get(); obj.appNonce = v; $t1153_1154.$set(obj); } };
2508 $t1158_1159 = hexb('d8cccccc1c53976c76f18466');
2509 $t1159_1160 = { $get() { return $t1153_1154.$get().hsKey; }, $set(v) { const obj = $t1153_1154.$get(); obj.hsKey = v; $t1153_1154.$set(obj); } };
2510 $t1160_1161 = hexb('cb869bde1eb5b70ff35739f9cb06c8272bad1b4c3bb234de7ffa135b2ed136e4');
2511 $t1161_1162 = { $get() { return $t1153_1154.$get().hsNonce; }, $set(v) { const obj = $t1153_1154.$get(); obj.hsNonce = v; $t1153_1154.$set(obj); } };
2512 $t1162_1163 = hexb('f45e26ebfca815b4b821ee2d');
2513 $t1154_1155.$set(0);
2514 $t1155_1156.$set($t1156_1157);
2515 $t1157_1158.$set($t1158_1159);
2516 $t1159_1160.$set($t1160_1161);
2517 $t1161_1162.$set($t1162_1163);
2518 $t1163_1164 = $t1152_1153.$get().addr(1);
2519 $t1164_1165 = { $get() { return $t1163_1164.$get().generation; }, $set(v) { const obj = $t1163_1164.$get(); obj.generation = v; $t1163_1164.$set(obj); } };
2520 $t1165_1166 = { $get() { return $t1163_1164.$get().appKey; }, $set(v) { const obj = $t1163_1164.$get(); obj.appKey = v; $t1163_1164.$set(obj); } };
2521 $t1166_1167 = hexb('351164206bf6b171d9367e232cf82daf5e7f1ca2397238633c4799d8a476a9b9');
2522 $t1167_1168 = { $get() { return $t1163_1164.$get().appNonce; }, $set(v) { const obj = $t1163_1164.$get(); obj.appNonce = v; $t1163_1164.$set(obj); } };
2523 $t1168_1169 = hexb('bbedbbab0d79fad3854452ab');
2524 $t1169_1170 = { $get() { return $t1163_1164.$get().hsKey; }, $set(v) { const obj = $t1163_1164.$get(); obj.hsKey = v; $t1163_1164.$set(obj); } };
2525 $t1170_1171 = hexb('5062fd8386cba1d40c9277d48ed146eabb8206fd370ea682c4af0b0767db19dc');
2526 $t1171_1172 = { $get() { return $t1163_1164.$get().hsNonce; }, $set(v) { const obj = $t1163_1164.$get(); obj.hsNonce = v; $t1163_1164.$set(obj); } };
2527 $t1172_1173 = hexb('f1807a88fe30c9424630038c');
2528 $t1164_1165.$set(15);
2529 $t1165_1166.$set($t1166_1167);
2530 $t1167_1168.$set($t1168_1169);
2531 $t1169_1170.$set($t1170_1171);
2532 $t1171_1172.$set($t1172_1173);
2533 $t1173_1174 = $rt.builtin.sliceSlice($t1152_1153.$get(), undefined, undefined, undefined);
2534 $t1151_1152.$set($t1173_1174);
2535 $t1174_1175 = $t501_502.$get().addr(28);
2536 $t1175_1176 = { $get() { return $t1174_1175.$get().gens; }, $set(v) { const obj = $t1174_1175.$get(); obj.gens = v; $t1174_1175.$set(obj); } };
2537 $t1176_1177 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2538 $t1177_1178 = $t1176_1177.$get().addr(0);
2539 $t1178_1179 = { $get() { return $t1177_1178.$get().generation; }, $set(v) { const obj = $t1177_1178.$get(); obj.generation = v; $t1177_1178.$set(obj); } };
2540 $t1179_1180 = { $get() { return $t1177_1178.$get().appKey; }, $set(v) { const obj = $t1177_1178.$get(); obj.appKey = v; $t1177_1178.$set(obj); } };
2541 $t1180_1181 = hexb('8c5874902fcf0e6d82a347c766262576dbcb3a9ba1fba79a00becd6acba868c9');
2542 $t1181_1182 = { $get() { return $t1177_1178.$get().appNonce; }, $set(v) { const obj = $t1177_1178.$get(); obj.appNonce = v; $t1177_1178.$set(obj); } };
2543 $t1182_1183 = hexb('5f89bc378212799802de6be4');
2544 $t1183_1184 = { $get() { return $t1177_1178.$get().hsKey; }, $set(v) { const obj = $t1177_1178.$get(); obj.hsKey = v; $t1177_1178.$set(obj); } };
2545 $t1184_1185 = hexb('7c4c2e51e314430775554cb1ff8940bbb4c94a6210b449769be796c98b2424e3');
2546 $t1185_1186 = { $get() { return $t1177_1178.$get().hsNonce; }, $set(v) { const obj = $t1177_1178.$get(); obj.hsNonce = v; $t1177_1178.$set(obj); } };
2547 $t1186_1187 = hexb('360535c001817287e0982106');
2548 $t1178_1179.$set(0);
2549 $t1179_1180.$set($t1180_1181);
2550 $t1181_1182.$set($t1182_1183);
2551 $t1183_1184.$set($t1184_1185);
2552 $t1185_1186.$set($t1186_1187);
2553 $t1187_1188 = $t1176_1177.$get().addr(1);
2554 $t1188_1189 = { $get() { return $t1187_1188.$get().generation; }, $set(v) { const obj = $t1187_1188.$get(); obj.generation = v; $t1187_1188.$set(obj); } };
2555 $t1189_1190 = { $get() { return $t1187_1188.$get().appKey; }, $set(v) { const obj = $t1187_1188.$get(); obj.appKey = v; $t1187_1188.$set(obj); } };
2556 $t1190_1191 = hexb('a4dcdd02a47ababc9d29f2b718801e23c6b91002789aa227c63edd596e8dcce5');
2557 $t1191_1192 = { $get() { return $t1187_1188.$get().appNonce; }, $set(v) { const obj = $t1187_1188.$get(); obj.appNonce = v; $t1187_1188.$set(obj); } };
2558 $t1192_1193 = hexb('90179202d31c7deb9f073297');
2559 $t1193_1194 = { $get() { return $t1187_1188.$get().hsKey; }, $set(v) { const obj = $t1187_1188.$get(); obj.hsKey = v; $t1187_1188.$set(obj); } };
2560 $t1194_1195 = hexb('59b396e69961833f648e05e8c0a065dcd271e81afc35b785645d1fba64aa5bca');
2561 $t1195_1196 = { $get() { return $t1187_1188.$get().hsNonce; }, $set(v) { const obj = $t1187_1188.$get(); obj.hsNonce = v; $t1187_1188.$set(obj); } };
2562 $t1196_1197 = hexb('a4c6cb7e4fa8a290dea9a0f7');
2563 $t1188_1189.$set(15);
2564 $t1189_1190.$set($t1190_1191);
2565 $t1191_1192.$set($t1192_1193);
2566 $t1193_1194.$set($t1194_1195);
2567 $t1195_1196.$set($t1196_1197);
2568 $t1197_1198 = $rt.builtin.sliceSlice($t1176_1177.$get(), undefined, undefined, undefined);
2569 $t1175_1176.$set($t1197_1198);
2570 $t1198_1199 = $t501_502.$get().addr(29);
2571 $t1199_1200 = { $get() { return $t1198_1199.$get().gens; }, $set(v) { const obj = $t1198_1199.$get(); obj.gens = v; $t1198_1199.$set(obj); } };
2572 $t1200_1201 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2573 $t1201_1202 = $t1200_1201.$get().addr(0);
2574 $t1202_1203 = { $get() { return $t1201_1202.$get().generation; }, $set(v) { const obj = $t1201_1202.$get(); obj.generation = v; $t1201_1202.$set(obj); } };
2575 $t1203_1204 = { $get() { return $t1201_1202.$get().appKey; }, $set(v) { const obj = $t1201_1202.$get(); obj.appKey = v; $t1201_1202.$set(obj); } };
2576 $t1204_1205 = hexb('eb403c9e50781670a89e7890cec34deca93834185b12386d354cfd7b3eb4a20c');
2577 $t1205_1206 = { $get() { return $t1201_1202.$get().appNonce; }, $set(v) { const obj = $t1201_1202.$get(); obj.appNonce = v; $t1201_1202.$set(obj); } };
2578 $t1206_1207 = hexb('a4b5342f92c21f024b226dca');
2579 $t1207_1208 = { $get() { return $t1201_1202.$get().hsKey; }, $set(v) { const obj = $t1201_1202.$get(); obj.hsKey = v; $t1201_1202.$set(obj); } };
2580 $t1208_1209 = hexb('3972dfe31100f7f7230bf47848d83b8c26e4f86d47216992319cf6626bca20e4');
2581 $t1209_1210 = { $get() { return $t1201_1202.$get().hsNonce; }, $set(v) { const obj = $t1201_1202.$get(); obj.hsNonce = v; $t1201_1202.$set(obj); } };
2582 $t1210_1211 = hexb('ac47c72e2cacf39bccaa3902');
2583 $t1202_1203.$set(0);
2584 $t1203_1204.$set($t1204_1205);
2585 $t1205_1206.$set($t1206_1207);
2586 $t1207_1208.$set($t1208_1209);
2587 $t1209_1210.$set($t1210_1211);
2588 $t1211_1212 = $t1200_1201.$get().addr(1);
2589 $t1212_1213 = { $get() { return $t1211_1212.$get().generation; }, $set(v) { const obj = $t1211_1212.$get(); obj.generation = v; $t1211_1212.$set(obj); } };
2590 $t1213_1214 = { $get() { return $t1211_1212.$get().appKey; }, $set(v) { const obj = $t1211_1212.$get(); obj.appKey = v; $t1211_1212.$set(obj); } };
2591 $t1214_1215 = hexb('afdcb9be5d122e16abc7c3763f12a0f1009707cffa4965d1f2de34e2f8c63f42');
2592 $t1215_1216 = { $get() { return $t1211_1212.$get().appNonce; }, $set(v) { const obj = $t1211_1212.$get(); obj.appNonce = v; $t1211_1212.$set(obj); } };
2593 $t1216_1217 = hexb('eb96cfea64f6ee0181d29583');
2594 $t1217_1218 = { $get() { return $t1211_1212.$get().hsKey; }, $set(v) { const obj = $t1211_1212.$get(); obj.hsKey = v; $t1211_1212.$set(obj); } };
2595 $t1218_1219 = hexb('92f28b1df9f9badac4d2504f97a0f8f06227e2eecc376cbc4e6230cc762f4eb8');
2596 $t1219_1220 = { $get() { return $t1211_1212.$get().hsNonce; }, $set(v) { const obj = $t1211_1212.$get(); obj.hsNonce = v; $t1211_1212.$set(obj); } };
2597 $t1220_1221 = hexb('d7da6ad009d4617721fd8db9');
2598 $t1212_1213.$set(15);
2599 $t1213_1214.$set($t1214_1215);
2600 $t1215_1216.$set($t1216_1217);
2601 $t1217_1218.$set($t1218_1219);
2602 $t1219_1220.$set($t1220_1221);
2603 $t1221_1222 = $rt.builtin.sliceSlice($t1200_1201.$get(), undefined, undefined, undefined);
2604 $t1199_1200.$set($t1221_1222);
2605 $t1222_1223 = $t501_502.$get().addr(30);
2606 $t1223_1224 = { $get() { return $t1222_1223.$get().gens; }, $set(v) { const obj = $t1222_1223.$get(); obj.gens = v; $t1222_1223.$set(obj); } };
2607 $t1224_1225 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2608 $t1225_1226 = $t1224_1225.$get().addr(0);
2609 $t1226_1227 = { $get() { return $t1225_1226.$get().generation; }, $set(v) { const obj = $t1225_1226.$get(); obj.generation = v; $t1225_1226.$set(obj); } };
2610 $t1227_1228 = { $get() { return $t1225_1226.$get().appKey; }, $set(v) { const obj = $t1225_1226.$get(); obj.appKey = v; $t1225_1226.$set(obj); } };
2611 $t1228_1229 = hexb('53759a62b8bfb13cece035ea5c6b93d9423b9490357b315e3953f91ff874305a');
2612 $t1229_1230 = { $get() { return $t1225_1226.$get().appNonce; }, $set(v) { const obj = $t1225_1226.$get(); obj.appNonce = v; $t1225_1226.$set(obj); } };
2613 $t1230_1231 = hexb('ebca2ba3c6f41973ba3ccc67');
2614 $t1231_1232 = { $get() { return $t1225_1226.$get().hsKey; }, $set(v) { const obj = $t1225_1226.$get(); obj.hsKey = v; $t1225_1226.$set(obj); } };
2615 $t1232_1233 = hexb('508acb31ab4786832c997eed47ecb08b4e84ae54ec8a306caea2f3263ed32b4c');
2616 $t1233_1234 = { $get() { return $t1225_1226.$get().hsNonce; }, $set(v) { const obj = $t1225_1226.$get(); obj.hsNonce = v; $t1225_1226.$set(obj); } };
2617 $t1234_1235 = hexb('e08c95f0c5d655c89c5cb9ab');
2618 $t1226_1227.$set(0);
2619 $t1227_1228.$set($t1228_1229);
2620 $t1229_1230.$set($t1230_1231);
2621 $t1231_1232.$set($t1232_1233);
2622 $t1233_1234.$set($t1234_1235);
2623 $t1235_1236 = $t1224_1225.$get().addr(1);
2624 $t1236_1237 = { $get() { return $t1235_1236.$get().generation; }, $set(v) { const obj = $t1235_1236.$get(); obj.generation = v; $t1235_1236.$set(obj); } };
2625 $t1237_1238 = { $get() { return $t1235_1236.$get().appKey; }, $set(v) { const obj = $t1235_1236.$get(); obj.appKey = v; $t1235_1236.$set(obj); } };
2626 $t1238_1239 = hexb('3efd96fa798ad71f27f9704558d61af1fdc59a98fce954859310a58a61e5c758');
2627 $t1239_1240 = { $get() { return $t1235_1236.$get().appNonce; }, $set(v) { const obj = $t1235_1236.$get(); obj.appNonce = v; $t1235_1236.$set(obj); } };
2628 $t1240_1241 = hexb('560ca28b329ba0b13134970f');
2629 $t1241_1242 = { $get() { return $t1235_1236.$get().hsKey; }, $set(v) { const obj = $t1235_1236.$get(); obj.hsKey = v; $t1235_1236.$set(obj); } };
2630 $t1242_1243 = hexb('c1d567cdb00b7cf868e572b9be2ee6f966411d18ee0f9675bb2c362ae0d2bf0c');
2631 $t1243_1244 = { $get() { return $t1235_1236.$get().hsNonce; }, $set(v) { const obj = $t1235_1236.$get(); obj.hsNonce = v; $t1235_1236.$set(obj); } };
2632 $t1244_1245 = hexb('7d97be13602668670d73f64c');
2633 $t1236_1237.$set(15);
2634 $t1237_1238.$set($t1238_1239);
2635 $t1239_1240.$set($t1240_1241);
2636 $t1241_1242.$set($t1242_1243);
2637 $t1243_1244.$set($t1244_1245);
2638 $t1245_1246 = $rt.builtin.sliceSlice($t1224_1225.$get(), undefined, undefined, undefined);
2639 $t1223_1224.$set($t1245_1246);
2640 $t1246_1247 = $t501_502.$get().addr(31);
2641 $t1247_1248 = { $get() { return $t1246_1247.$get().gens; }, $set(v) { const obj = $t1246_1247.$get(); obj.gens = v; $t1246_1247.$set(obj); } };
2642 $t1248_1249 = { $value: $rt.builtin.makeSlice(2, 2, { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2643 $t1249_1250 = $t1248_1249.$get().addr(0);
2644 $t1250_1251 = { $get() { return $t1249_1250.$get().generation; }, $set(v) { const obj = $t1249_1250.$get(); obj.generation = v; $t1249_1250.$set(obj); } };
2645 $t1251_1252 = { $get() { return $t1249_1250.$get().appKey; }, $set(v) { const obj = $t1249_1250.$get(); obj.appKey = v; $t1249_1250.$set(obj); } };
2646 $t1252_1253 = hexb('07230e423965dc46903e9b7f9299bd7d494337e81ae456fde012e1d20da03ab3');
2647 $t1253_1254 = { $get() { return $t1249_1250.$get().appNonce; }, $set(v) { const obj = $t1249_1250.$get(); obj.appNonce = v; $t1249_1250.$set(obj); } };
2648 $t1254_1255 = hexb('71ea257ff165a0c8b13bb427');
2649 $t1255_1256 = { $get() { return $t1249_1250.$get().hsKey; }, $set(v) { const obj = $t1249_1250.$get(); obj.hsKey = v; $t1249_1250.$set(obj); } };
2650 $t1256_1257 = hexb('7995eb14bc7b2d2de2f8327c2713d3fd67072171afcd340047e16cc9c0723206');
2651 $t1257_1258 = { $get() { return $t1249_1250.$get().hsNonce; }, $set(v) { const obj = $t1249_1250.$get(); obj.hsNonce = v; $t1249_1250.$set(obj); } };
2652 $t1258_1259 = hexb('13c16545ca583976b85edc71');
2653 $t1250_1251.$set(0);
2654 $t1251_1252.$set($t1252_1253);
2655 $t1253_1254.$set($t1254_1255);
2656 $t1255_1256.$set($t1256_1257);
2657 $t1257_1258.$set($t1258_1259);
2658 $t1259_1260 = $t1248_1249.$get().addr(1);
2659 $t1260_1261 = { $get() { return $t1259_1260.$get().generation; }, $set(v) { const obj = $t1259_1260.$get(); obj.generation = v; $t1259_1260.$set(obj); } };
2660 $t1261_1262 = { $get() { return $t1259_1260.$get().appKey; }, $set(v) { const obj = $t1259_1260.$get(); obj.appKey = v; $t1259_1260.$set(obj); } };
2661 $t1262_1263 = hexb('4ccf1caa96504c21a17e6d06388b46aa70dfe22aedcc786f2ad3ff0709e9d949');
2662 $t1263_1264 = { $get() { return $t1259_1260.$get().appNonce; }, $set(v) { const obj = $t1259_1260.$get(); obj.appNonce = v; $t1259_1260.$set(obj); } };
2663 $t1264_1265 = hexb('9d979b762eac328e6f29f749');
2664 $t1265_1266 = { $get() { return $t1259_1260.$get().hsKey; }, $set(v) { const obj = $t1259_1260.$get(); obj.hsKey = v; $t1259_1260.$set(obj); } };
2665 $t1266_1267 = hexb('e88bf2205086e437ccc2c2da260d88bcf060b6a73ce5431af21a4f4c569638b9');
2666 $t1267_1268 = { $get() { return $t1259_1260.$get().hsNonce; }, $set(v) { const obj = $t1259_1260.$get(); obj.hsNonce = v; $t1259_1260.$set(obj); } };
2667 $t1268_1269 = hexb('089f74bf51d0e3b3473b8cfd');
2668 $t1260_1261.$set(15);
2669 $t1261_1262.$set($t1262_1263);
2670 $t1263_1264.$set($t1264_1265);
2671 $t1265_1266.$set($t1266_1267);
2672 $t1267_1268.$set($t1268_1269);
2673 $t1269_1270 = $rt.builtin.sliceSlice($t1248_1249.$get(), undefined, undefined, undefined);
2674 $t1247_1248.$set($t1269_1270);
2675 $t1270_1271 = $rt.builtin.sliceSlice($t501_502.$get(), undefined, undefined, undefined);
2676 $t489_490.$set(32);
2677 $t490_491.$set($t491_492);
2678 $t492_493.$set($t493_494);
2679 $t494_495.$set($t495_496);
2680 $t496_497.$set($t497_498);
2681 $t498_499.$set($t499_500);
2682 $t500_501.$set($t1270_1271);
2683 $t1271_1272 = $rt.builtin.sliceSlice($t241_242.$get(), undefined, undefined, undefined);
2684 stEntries.$set($t1271_1272);
2685 hexchars.$set('0123456789abcdef');
2686 $t1272_1273 = { $value: $rt.builtin.makeSlice(4, 4, { nLeaves: 0, nNodes: 0, root: 0, left: null, right: null, parent: null, sibling: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2687 $t1273_1274 = $t1272_1273.$get().addr(0);
2688 $t1274_1275 = { $get() { return $t1273_1274.$get().nLeaves; }, $set(v) { const obj = $t1273_1274.$get(); obj.nLeaves = v; $t1273_1274.$set(obj); } };
2689 $t1275_1276 = { $get() { return $t1273_1274.$get().nNodes; }, $set(v) { const obj = $t1273_1274.$get(); obj.nNodes = v; $t1273_1274.$set(obj); } };
2690 $t1276_1277 = { $get() { return $t1273_1274.$get().root; }, $set(v) { const obj = $t1273_1274.$get(); obj.root = v; $t1273_1274.$set(obj); } };
2691 $t1277_1278 = { $get() { return $t1273_1274.$get().left; }, $set(v) { const obj = $t1273_1274.$get(); obj.left = v; $t1273_1274.$set(obj); } };
2692 $t1278_1279 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2693 $t1279_1280 = $t1278_1279.$get().addr(0);
2694 $t1279_1280.$set(-1);
2695 $t1280_1281 = $rt.builtin.sliceSlice($t1278_1279.$get(), undefined, undefined, undefined);
2696 $t1281_1282 = { $get() { return $t1273_1274.$get().right; }, $set(v) { const obj = $t1273_1274.$get(); obj.right = v; $t1273_1274.$set(obj); } };
2697 $t1282_1283 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2698 $t1283_1284 = $t1282_1283.$get().addr(0);
2699 $t1283_1284.$set(-1);
2700 $t1284_1285 = $rt.builtin.sliceSlice($t1282_1283.$get(), undefined, undefined, undefined);
2701 $t1285_1286 = { $get() { return $t1273_1274.$get().parent; }, $set(v) { const obj = $t1273_1274.$get(); obj.parent = v; $t1273_1274.$set(obj); } };
2702 $t1286_1287 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2703 $t1287_1288 = $t1286_1287.$get().addr(0);
2704 $t1287_1288.$set(-1);
2705 $t1288_1289 = $rt.builtin.sliceSlice($t1286_1287.$get(), undefined, undefined, undefined);
2706 $t1289_1290 = { $get() { return $t1273_1274.$get().sibling; }, $set(v) { const obj = $t1273_1274.$get(); obj.sibling = v; $t1273_1274.$set(obj); } };
2707 $t1290_1291 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2708 $t1291_1292 = $t1290_1291.$get().addr(0);
2709 $t1291_1292.$set(-1);
2710 $t1292_1293 = $rt.builtin.sliceSlice($t1290_1291.$get(), undefined, undefined, undefined);
2711 $t1274_1275.$set(1);
2712 $t1275_1276.$set(1);
2713 $t1276_1277.$set(0);
2714 $t1277_1278.$set($t1280_1281);
2715 $t1281_1282.$set($t1284_1285);
2716 $t1285_1286.$set($t1288_1289);
2717 $t1289_1290.$set($t1292_1293);
2718 $t1293_1294 = $t1272_1273.$get().addr(1);
2719 $t1294_1295 = { $get() { return $t1293_1294.$get().nLeaves; }, $set(v) { const obj = $t1293_1294.$get(); obj.nLeaves = v; $t1293_1294.$set(obj); } };
2720 $t1295_1296 = { $get() { return $t1293_1294.$get().nNodes; }, $set(v) { const obj = $t1293_1294.$get(); obj.nNodes = v; $t1293_1294.$set(obj); } };
2721 $t1296_1297 = { $get() { return $t1293_1294.$get().root; }, $set(v) { const obj = $t1293_1294.$get(); obj.root = v; $t1293_1294.$set(obj); } };
2722 $t1297_1298 = { $get() { return $t1293_1294.$get().left; }, $set(v) { const obj = $t1293_1294.$get(); obj.left = v; $t1293_1294.$set(obj); } };
2723 $t1298_1299 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2724 $t1299_1300 = $t1298_1299.$get().addr(0);
2725 $t1299_1300.$set(-1);
2726 $t1300_1301 = $t1298_1299.$get().addr(1);
2727 $t1300_1301.$set(0);
2728 $t1301_1302 = $t1298_1299.$get().addr(2);
2729 $t1301_1302.$set(-1);
2730 $t1302_1303 = $rt.builtin.sliceSlice($t1298_1299.$get(), undefined, undefined, undefined);
2731 $t1303_1304 = { $get() { return $t1293_1294.$get().right; }, $set(v) { const obj = $t1293_1294.$get(); obj.right = v; $t1293_1294.$set(obj); } };
2732 $t1304_1305 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2733 $t1305_1306 = $t1304_1305.$get().addr(0);
2734 $t1305_1306.$set(-1);
2735 $t1306_1307 = $t1304_1305.$get().addr(1);
2736 $t1306_1307.$set(2);
2737 $t1307_1308 = $t1304_1305.$get().addr(2);
2738 $t1307_1308.$set(-1);
2739 $t1308_1309 = $rt.builtin.sliceSlice($t1304_1305.$get(), undefined, undefined, undefined);
2740 $t1309_1310 = { $get() { return $t1293_1294.$get().parent; }, $set(v) { const obj = $t1293_1294.$get(); obj.parent = v; $t1293_1294.$set(obj); } };
2741 $t1310_1311 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2742 $t1311_1312 = $t1310_1311.$get().addr(0);
2743 $t1311_1312.$set(1);
2744 $t1312_1313 = $t1310_1311.$get().addr(1);
2745 $t1312_1313.$set(-1);
2746 $t1313_1314 = $t1310_1311.$get().addr(2);
2747 $t1313_1314.$set(1);
2748 $t1314_1315 = $rt.builtin.sliceSlice($t1310_1311.$get(), undefined, undefined, undefined);
2749 $t1315_1316 = { $get() { return $t1293_1294.$get().sibling; }, $set(v) { const obj = $t1293_1294.$get(); obj.sibling = v; $t1293_1294.$set(obj); } };
2750 $t1316_1317 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2751 $t1317_1318 = $t1316_1317.$get().addr(0);
2752 $t1317_1318.$set(2);
2753 $t1318_1319 = $t1316_1317.$get().addr(1);
2754 $t1318_1319.$set(-1);
2755 $t1319_1320 = $t1316_1317.$get().addr(2);
2756 $t1319_1320.$set(0);
2757 $t1320_1321 = $rt.builtin.sliceSlice($t1316_1317.$get(), undefined, undefined, undefined);
2758 $t1294_1295.$set(2);
2759 $t1295_1296.$set(3);
2760 $t1296_1297.$set(1);
2761 $t1297_1298.$set($t1302_1303);
2762 $t1303_1304.$set($t1308_1309);
2763 $t1309_1310.$set($t1314_1315);
2764 $t1315_1316.$set($t1320_1321);
2765 $t1321_1322 = $t1272_1273.$get().addr(2);
2766 $t1322_1323 = { $get() { return $t1321_1322.$get().nLeaves; }, $set(v) { const obj = $t1321_1322.$get(); obj.nLeaves = v; $t1321_1322.$set(obj); } };
2767 $t1323_1324 = { $get() { return $t1321_1322.$get().nNodes; }, $set(v) { const obj = $t1321_1322.$get(); obj.nNodes = v; $t1321_1322.$set(obj); } };
2768 $t1324_1325 = { $get() { return $t1321_1322.$get().root; }, $set(v) { const obj = $t1321_1322.$get(); obj.root = v; $t1321_1322.$set(obj); } };
2769 $t1325_1326 = { $get() { return $t1321_1322.$get().left; }, $set(v) { const obj = $t1321_1322.$get(); obj.left = v; $t1321_1322.$set(obj); } };
2770 $t1326_1327 = { $value: $rt.builtin.makeSlice(7, 7, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2771 $t1327_1328 = $t1326_1327.$get().addr(0);
2772 $t1327_1328.$set(-1);
2773 $t1328_1329 = $t1326_1327.$get().addr(1);
2774 $t1328_1329.$set(0);
2775 $t1329_1330 = $t1326_1327.$get().addr(2);
2776 $t1329_1330.$set(-1);
2777 $t1330_1331 = $t1326_1327.$get().addr(3);
2778 $t1330_1331.$set(1);
2779 $t1331_1332 = $t1326_1327.$get().addr(4);
2780 $t1331_1332.$set(-1);
2781 $t1332_1333 = $t1326_1327.$get().addr(5);
2782 $t1332_1333.$set(4);
2783 $t1333_1334 = $t1326_1327.$get().addr(6);
2784 $t1333_1334.$set(-1);
2785 $t1334_1335 = $rt.builtin.sliceSlice($t1326_1327.$get(), undefined, undefined, undefined);
2786 $t1335_1336 = { $get() { return $t1321_1322.$get().right; }, $set(v) { const obj = $t1321_1322.$get(); obj.right = v; $t1321_1322.$set(obj); } };
2787 $t1336_1337 = { $value: $rt.builtin.makeSlice(7, 7, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2788 $t1337_1338 = $t1336_1337.$get().addr(0);
2789 $t1337_1338.$set(-1);
2790 $t1338_1339 = $t1336_1337.$get().addr(1);
2791 $t1338_1339.$set(2);
2792 $t1339_1340 = $t1336_1337.$get().addr(2);
2793 $t1339_1340.$set(-1);
2794 $t1340_1341 = $t1336_1337.$get().addr(3);
2795 $t1340_1341.$set(5);
2796 $t1341_1342 = $t1336_1337.$get().addr(4);
2797 $t1341_1342.$set(-1);
2798 $t1342_1343 = $t1336_1337.$get().addr(5);
2799 $t1342_1343.$set(6);
2800 $t1343_1344 = $t1336_1337.$get().addr(6);
2801 $t1343_1344.$set(-1);
2802 $t1344_1345 = $rt.builtin.sliceSlice($t1336_1337.$get(), undefined, undefined, undefined);
2803 $t1345_1346 = { $get() { return $t1321_1322.$get().parent; }, $set(v) { const obj = $t1321_1322.$get(); obj.parent = v; $t1321_1322.$set(obj); } };
2804 $t1346_1347 = { $value: $rt.builtin.makeSlice(7, 7, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2805 $t1347_1348 = $t1346_1347.$get().addr(0);
2806 $t1347_1348.$set(1);
2807 $t1348_1349 = $t1346_1347.$get().addr(1);
2808 $t1348_1349.$set(3);
2809 $t1349_1350 = $t1346_1347.$get().addr(2);
2810 $t1349_1350.$set(1);
2811 $t1350_1351 = $t1346_1347.$get().addr(3);
2812 $t1350_1351.$set(-1);
2813 $t1351_1352 = $t1346_1347.$get().addr(4);
2814 $t1351_1352.$set(5);
2815 $t1352_1353 = $t1346_1347.$get().addr(5);
2816 $t1352_1353.$set(3);
2817 $t1353_1354 = $t1346_1347.$get().addr(6);
2818 $t1353_1354.$set(5);
2819 $t1354_1355 = $rt.builtin.sliceSlice($t1346_1347.$get(), undefined, undefined, undefined);
2820 $t1355_1356 = { $get() { return $t1321_1322.$get().sibling; }, $set(v) { const obj = $t1321_1322.$get(); obj.sibling = v; $t1321_1322.$set(obj); } };
2821 $t1356_1357 = { $value: $rt.builtin.makeSlice(7, 7, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2822 $t1357_1358 = $t1356_1357.$get().addr(0);
2823 $t1357_1358.$set(2);
2824 $t1358_1359 = $t1356_1357.$get().addr(1);
2825 $t1358_1359.$set(5);
2826 $t1359_1360 = $t1356_1357.$get().addr(2);
2827 $t1359_1360.$set(0);
2828 $t1360_1361 = $t1356_1357.$get().addr(3);
2829 $t1360_1361.$set(-1);
2830 $t1361_1362 = $t1356_1357.$get().addr(4);
2831 $t1361_1362.$set(6);
2832 $t1362_1363 = $t1356_1357.$get().addr(5);
2833 $t1362_1363.$set(1);
2834 $t1363_1364 = $t1356_1357.$get().addr(6);
2835 $t1363_1364.$set(4);
2836 $t1364_1365 = $rt.builtin.sliceSlice($t1356_1357.$get(), undefined, undefined, undefined);
2837 $t1322_1323.$set(4);
2838 $t1323_1324.$set(7);
2839 $t1324_1325.$set(3);
2840 $t1325_1326.$set($t1334_1335);
2841 $t1335_1336.$set($t1344_1345);
2842 $t1345_1346.$set($t1354_1355);
2843 $t1355_1356.$set($t1364_1365);
2844 $t1365_1366 = $t1272_1273.$get().addr(3);
2845 $t1366_1367 = { $get() { return $t1365_1366.$get().nLeaves; }, $set(v) { const obj = $t1365_1366.$get(); obj.nLeaves = v; $t1365_1366.$set(obj); } };
2846 $t1367_1368 = { $get() { return $t1365_1366.$get().nNodes; }, $set(v) { const obj = $t1365_1366.$get(); obj.nNodes = v; $t1365_1366.$set(obj); } };
2847 $t1368_1369 = { $get() { return $t1365_1366.$get().root; }, $set(v) { const obj = $t1365_1366.$get(); obj.root = v; $t1365_1366.$set(obj); } };
2848 $t1369_1370 = { $get() { return $t1365_1366.$get().left; }, $set(v) { const obj = $t1365_1366.$get(); obj.left = v; $t1365_1366.$set(obj); } };
2849 $t1370_1371 = { $value: $rt.builtin.makeSlice(15, 15, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2850 $t1371_1372 = $t1370_1371.$get().addr(0);
2851 $t1371_1372.$set(-1);
2852 $t1372_1373 = $t1370_1371.$get().addr(1);
2853 $t1372_1373.$set(0);
2854 $t1373_1374 = $t1370_1371.$get().addr(2);
2855 $t1373_1374.$set(-1);
2856 $t1374_1375 = $t1370_1371.$get().addr(3);
2857 $t1374_1375.$set(1);
2858 $t1375_1376 = $t1370_1371.$get().addr(4);
2859 $t1375_1376.$set(-1);
2860 $t1376_1377 = $t1370_1371.$get().addr(5);
2861 $t1376_1377.$set(4);
2862 $t1377_1378 = $t1370_1371.$get().addr(6);
2863 $t1377_1378.$set(-1);
2864 $t1378_1379 = $t1370_1371.$get().addr(7);
2865 $t1378_1379.$set(3);
2866 $t1379_1380 = $t1370_1371.$get().addr(8);
2867 $t1379_1380.$set(-1);
2868 $t1380_1381 = $t1370_1371.$get().addr(9);
2869 $t1380_1381.$set(8);
2870 $t1381_1382 = $t1370_1371.$get().addr(10);
2871 $t1381_1382.$set(-1);
2872 $t1382_1383 = $t1370_1371.$get().addr(11);
2873 $t1382_1383.$set(9);
2874 $t1383_1384 = $t1370_1371.$get().addr(12);
2875 $t1383_1384.$set(-1);
2876 $t1384_1385 = $t1370_1371.$get().addr(13);
2877 $t1384_1385.$set(12);
2878 $t1385_1386 = $t1370_1371.$get().addr(14);
2879 $t1385_1386.$set(-1);
2880 $t1386_1387 = $rt.builtin.sliceSlice($t1370_1371.$get(), undefined, undefined, undefined);
2881 $t1387_1388 = { $get() { return $t1365_1366.$get().right; }, $set(v) { const obj = $t1365_1366.$get(); obj.right = v; $t1365_1366.$set(obj); } };
2882 $t1388_1389 = { $value: $rt.builtin.makeSlice(15, 15, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2883 $t1389_1390 = $t1388_1389.$get().addr(0);
2884 $t1389_1390.$set(-1);
2885 $t1390_1391 = $t1388_1389.$get().addr(1);
2886 $t1390_1391.$set(2);
2887 $t1391_1392 = $t1388_1389.$get().addr(2);
2888 $t1391_1392.$set(-1);
2889 $t1392_1393 = $t1388_1389.$get().addr(3);
2890 $t1392_1393.$set(5);
2891 $t1393_1394 = $t1388_1389.$get().addr(4);
2892 $t1393_1394.$set(-1);
2893 $t1394_1395 = $t1388_1389.$get().addr(5);
2894 $t1394_1395.$set(6);
2895 $t1395_1396 = $t1388_1389.$get().addr(6);
2896 $t1395_1396.$set(-1);
2897 $t1396_1397 = $t1388_1389.$get().addr(7);
2898 $t1396_1397.$set(11);
2899 $t1397_1398 = $t1388_1389.$get().addr(8);
2900 $t1397_1398.$set(-1);
2901 $t1398_1399 = $t1388_1389.$get().addr(9);
2902 $t1398_1399.$set(10);
2903 $t1399_1400 = $t1388_1389.$get().addr(10);
2904 $t1399_1400.$set(-1);
2905 $t1400_1401 = $t1388_1389.$get().addr(11);
2906 $t1400_1401.$set(13);
2907 $t1401_1402 = $t1388_1389.$get().addr(12);
2908 $t1401_1402.$set(-1);
2909 $t1402_1403 = $t1388_1389.$get().addr(13);
2910 $t1402_1403.$set(14);
2911 $t1403_1404 = $t1388_1389.$get().addr(14);
2912 $t1403_1404.$set(-1);
2913 $t1404_1405 = $rt.builtin.sliceSlice($t1388_1389.$get(), undefined, undefined, undefined);
2914 $t1405_1406 = { $get() { return $t1365_1366.$get().parent; }, $set(v) { const obj = $t1365_1366.$get(); obj.parent = v; $t1365_1366.$set(obj); } };
2915 $t1406_1407 = { $value: $rt.builtin.makeSlice(15, 15, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2916 $t1407_1408 = $t1406_1407.$get().addr(0);
2917 $t1407_1408.$set(1);
2918 $t1408_1409 = $t1406_1407.$get().addr(1);
2919 $t1408_1409.$set(3);
2920 $t1409_1410 = $t1406_1407.$get().addr(2);
2921 $t1409_1410.$set(1);
2922 $t1410_1411 = $t1406_1407.$get().addr(3);
2923 $t1410_1411.$set(7);
2924 $t1411_1412 = $t1406_1407.$get().addr(4);
2925 $t1411_1412.$set(5);
2926 $t1412_1413 = $t1406_1407.$get().addr(5);
2927 $t1412_1413.$set(3);
2928 $t1413_1414 = $t1406_1407.$get().addr(6);
2929 $t1413_1414.$set(5);
2930 $t1414_1415 = $t1406_1407.$get().addr(7);
2931 $t1414_1415.$set(-1);
2932 $t1415_1416 = $t1406_1407.$get().addr(8);
2933 $t1415_1416.$set(9);
2934 $t1416_1417 = $t1406_1407.$get().addr(9);
2935 $t1416_1417.$set(11);
2936 $t1417_1418 = $t1406_1407.$get().addr(10);
2937 $t1417_1418.$set(9);
2938 $t1418_1419 = $t1406_1407.$get().addr(11);
2939 $t1418_1419.$set(7);
2940 $t1419_1420 = $t1406_1407.$get().addr(12);
2941 $t1419_1420.$set(13);
2942 $t1420_1421 = $t1406_1407.$get().addr(13);
2943 $t1420_1421.$set(11);
2944 $t1421_1422 = $t1406_1407.$get().addr(14);
2945 $t1421_1422.$set(13);
2946 $t1422_1423 = $rt.builtin.sliceSlice($t1406_1407.$get(), undefined, undefined, undefined);
2947 $t1423_1424 = { $get() { return $t1365_1366.$get().sibling; }, $set(v) { const obj = $t1365_1366.$get(); obj.sibling = v; $t1365_1366.$set(obj); } };
2948 $t1424_1425 = { $value: $rt.builtin.makeSlice(15, 15, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2949 $t1425_1426 = $t1424_1425.$get().addr(0);
2950 $t1425_1426.$set(2);
2951 $t1426_1427 = $t1424_1425.$get().addr(1);
2952 $t1426_1427.$set(5);
2953 $t1427_1428 = $t1424_1425.$get().addr(2);
2954 $t1427_1428.$set(0);
2955 $t1428_1429 = $t1424_1425.$get().addr(3);
2956 $t1428_1429.$set(11);
2957 $t1429_1430 = $t1424_1425.$get().addr(4);
2958 $t1429_1430.$set(6);
2959 $t1430_1431 = $t1424_1425.$get().addr(5);
2960 $t1430_1431.$set(1);
2961 $t1431_1432 = $t1424_1425.$get().addr(6);
2962 $t1431_1432.$set(4);
2963 $t1432_1433 = $t1424_1425.$get().addr(7);
2964 $t1432_1433.$set(-1);
2965 $t1433_1434 = $t1424_1425.$get().addr(8);
2966 $t1433_1434.$set(10);
2967 $t1434_1435 = $t1424_1425.$get().addr(9);
2968 $t1434_1435.$set(13);
2969 $t1435_1436 = $t1424_1425.$get().addr(10);
2970 $t1435_1436.$set(8);
2971 $t1436_1437 = $t1424_1425.$get().addr(11);
2972 $t1436_1437.$set(3);
2973 $t1437_1438 = $t1424_1425.$get().addr(12);
2974 $t1437_1438.$set(14);
2975 $t1438_1439 = $t1424_1425.$get().addr(13);
2976 $t1438_1439.$set(9);
2977 $t1439_1440 = $t1424_1425.$get().addr(14);
2978 $t1439_1440.$set(12);
2979 $t1440_1441 = $rt.builtin.sliceSlice($t1424_1425.$get(), undefined, undefined, undefined);
2980 $t1366_1367.$set(8);
2981 $t1367_1368.$set(15);
2982 $t1368_1369.$set(7);
2983 $t1369_1370.$set($t1386_1387);
2984 $t1387_1388.$set($t1404_1405);
2985 $t1405_1406.$set($t1422_1423);
2986 $t1423_1424.$set($t1440_1441);
2987 $t1441_1442 = $rt.builtin.sliceSlice($t1272_1273.$get(), undefined, undefined, undefined);
2988 treeMathVectors.$set($t1441_1442);
2989 $t1442_1443 = errors.New('mls: invalid leaf node source');
2990 errInvalidLeafNodeSource.$set($t1442_1443);
2991 $t1443_1444 = errors.New('mls: invalid node type');
2992 errInvalidNodeType.$set($t1443_1444);
2993 $t1444_1445 = errors.New('mls: node public key mismatch');
2994 errNodeKeyMismatch.$set($t1444_1445);
2995 $t1445_1446 = errors.New('mls: invalid credential type');
2996 errInvalidCredentialType.$set($t1445_1446);
2997 return;
2998 }
2999
3000 export function hmacEqual(a, b) {
3001 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
3002 let $block = 0;
3003 while (true) {
3004 switch ($block) {
3005 case 0: {
3006 $t0_1 = $rt.builtin.len(a);
3007 $t1_2 = $rt.builtin.len(b);
3008 $t2_3 = ($t0_1 !== $t1_2);
3009 if ($t2_3) {
3010 $block = 1; break;
3011 }
3012 else {
3013 $block = 2; break;
3014 }
3015 break;
3016 }
3017 case 1: {
3018 return false;
3019 break;
3020 }
3021 case 2: {
3022 $t3_4 = $rt.builtin.len(a);
3023 $t4_5 = 0;
3024 $t5_6 = -1;
3025 $block = 3; break;
3026 break;
3027 }
3028 case 3: {
3029 $t6_7 = ($t5_6 + 1);
3030 $t7_8 = ($t6_7 < $t3_4);
3031 if ($t7_8) {
3032 $block = 4; break;
3033 }
3034 else {
3035 $block = 5; break;
3036 }
3037 break;
3038 }
3039 case 4: {
3040 $t8_9 = a.addr($t6_7);
3041 $t9_10 = $t8_9.$get();
3042 $t10_11 = b.addr($t6_7);
3043 $t11_12 = $t10_11.$get();
3044 $t12_13 = ($t9_10 ^ $t11_12);
3045 $t13_14 = ($t4_5 | $t12_13);
3046 $t4_5 = $t13_14;
3047 $t5_6 = $t6_7;
3048 $block = 3; break;
3049 break;
3050 }
3051 case 5: {
3052 $t14_15 = ($t4_5 === 0);
3053 return $t14_15;
3054 break;
3055 }
3056 }
3057 }
3058 }
3059
3060 export function marshalSignContent(label, content) {
3061 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3062 $t0_1 = $rt.builtin.appendSlice('MLS 1.0 ', label);
3063 $t1_2 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3064 $t2_3 = Writer$writeOpaqueVec($t1_2, $t0_1);
3065 $t3_4 = Writer$writeOpaqueVec($t1_2, content);
3066 $t4_5 = Writer$bytes($t1_2);
3067 $t5_6 = $t4_5[0];
3068 $t6_7 = $t4_5[1];
3069 return [$t5_6, $t6_7];
3070 }
3071
3072 export function labeledExtractKEM(salt, label, ikm) {
3073 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3074 $t0_1 = kemSuiteID.$get();
3075 $t1_2 = $rt.builtin.appendSlice('HPKE-v1', $t0_1);
3076 $t2_3 = $rt.builtin.appendSlice($t1_2, label);
3077 $t3_4 = $rt.builtin.appendSlice($t2_3, ikm);
3078 $t4_5 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3079 $t5_6 = smesh$lol$web$common$crypto$hkdf.Extract(salt, $t3_4);
3080 $t4_5.$set($rt.builtin.cloneValue($t5_6));
3081 $t6_7 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
3082 return $t6_7;
3083 }
3084
3085 export function labeledExpandKEM(prk, label, info, length) {
3086 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
3087 $t0_1 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3088 $t1_2 = $t0_1.$get().addr(0);
3089 $t2_3 = (length >> 8);
3090 $t3_4 = ($t2_3 & 0xFF);
3091 $t1_2.$set($t3_4);
3092 $t4_5 = $t0_1.$get().addr(1);
3093 $t5_6 = (length & 0xFF);
3094 $t4_5.$set($t5_6);
3095 $t6_7 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
3096 $t7_8 = $rt.builtin.appendString($t6_7, 'HPKE-v1');
3097 $t8_9 = kemSuiteID.$get();
3098 $t9_10 = $rt.builtin.appendSlice($t7_8, $t8_9);
3099 $t10_11 = $rt.builtin.appendSlice($t9_10, label);
3100 $t11_12 = $rt.builtin.appendSlice($t10_11, info);
3101 $t12_13 = smesh$lol$web$common$crypto$hkdf.Expand(prk, $t11_12, length);
3102 return $t12_13;
3103 }
3104
3105 export function labeledExtractHPKE(salt, label, ikm) {
3106 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3107 $t0_1 = hpkeSuiteID.$get();
3108 $t1_2 = $rt.builtin.appendSlice('HPKE-v1', $t0_1);
3109 $t2_3 = $rt.builtin.appendSlice($t1_2, label);
3110 $t3_4 = $rt.builtin.appendSlice($t2_3, ikm);
3111 $t4_5 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3112 $t5_6 = smesh$lol$web$common$crypto$hkdf.Extract(salt, $t3_4);
3113 $t4_5.$set($rt.builtin.cloneValue($t5_6));
3114 $t6_7 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
3115 return $t6_7;
3116 }
3117
3118 export function labeledExpandHPKE(prk, label, info, length) {
3119 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
3120 $t0_1 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3121 $t1_2 = $t0_1.$get().addr(0);
3122 $t2_3 = (length >> 8);
3123 $t3_4 = ($t2_3 & 0xFF);
3124 $t1_2.$set($t3_4);
3125 $t4_5 = $t0_1.$get().addr(1);
3126 $t5_6 = (length & 0xFF);
3127 $t4_5.$set($t5_6);
3128 $t6_7 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
3129 $t7_8 = $rt.builtin.appendString($t6_7, 'HPKE-v1');
3130 $t8_9 = hpkeSuiteID.$get();
3131 $t9_10 = $rt.builtin.appendSlice($t7_8, $t8_9);
3132 $t10_11 = $rt.builtin.appendSlice($t9_10, label);
3133 $t11_12 = $rt.builtin.appendSlice($t10_11, info);
3134 $t12_13 = smesh$lol$web$common$crypto$hkdf.Expand(prk, $t11_12, length);
3135 return $t12_13;
3136 }
3137
3138 export function extractAndExpand(dh, kemContext) {
3139 let $t0_1, $t1_2;
3140 $t0_1 = labeledExtractKEM(null, 'eae_prk', dh);
3141 $t1_2 = labeledExpandKEM($t0_1, 'shared_secret', kemContext, 32);
3142 return $t1_2;
3143 }
3144
3145 export function hpkeKeySchedule(sharedSecret, info) {
3146 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
3147 $t0_1 = labeledExtractHPKE(null, 'psk_id_hash', null);
3148 $t1_2 = labeledExtractHPKE(null, 'info_hash', info);
3149 $t2_3 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3150 $t3_4 = $t2_3.$get().addr(0);
3151 $t3_4.$set(0);
3152 $t4_5 = $rt.builtin.sliceSlice($t2_3.$get(), undefined, undefined, undefined);
3153 $t5_6 = $rt.builtin.appendSlice($t4_5, $t0_1);
3154 $t6_7 = $rt.builtin.appendSlice($t5_6, $t1_2);
3155 $t7_8 = labeledExtractHPKE(sharedSecret, 'secret', null);
3156 $t8_9 = labeledExpandHPKE($t7_8, 'key', $t6_7, 32);
3157 $t9_10 = labeledExpandHPKE($t7_8, 'base_nonce', $t6_7, 12);
3158 return [$t8_9, $t9_10];
3159 }
3160
3161 export function marshalEncryptContext(label, context) {
3162 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3163 $t0_1 = $rt.builtin.appendSlice('MLS 1.0 ', label);
3164 $t1_2 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3165 $t2_3 = Writer$writeOpaqueVec($t1_2, $t0_1);
3166 $t3_4 = Writer$writeOpaqueVec($t1_2, context);
3167 $t4_5 = Writer$bytes($t1_2);
3168 $t5_6 = $t4_5[0];
3169 $t6_7 = $t4_5[1];
3170 return [$t5_6, $t6_7];
3171 }
3172
3173 export function newReader(data) {
3174 let $t0_1, $t1_2, $t2_3;
3175 $t0_1 = { $value: { data: null, pos: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3176 $t1_2 = { $get() { return $t0_1.$get().data; }, $set(v) { const obj = $t0_1.$get(); obj.data = v; $t0_1.$set(obj); } };
3177 $t1_2.$set(data);
3178 $t2_3 = $t0_1.$get();
3179 return $t2_3;
3180 }
3181
3182 export function unmarshalRaw(raw, v) {
3183 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
3184 let $block = 0;
3185 while (true) {
3186 switch ($block) {
3187 case 0: {
3188 $t0_1 = { $value: { data: null, pos: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3189 $t1_2 = newReader(raw);
3190 $t0_1.$set($rt.builtin.cloneValue($t1_2));
3191 $t2_3 = $rt.types.methodCall(v, 'unmarshal', [$t0_1]);
3192 $t3_4 = ($t2_3 !== null);
3193 if ($t3_4) {
3194 $block = 1; break;
3195 }
3196 else {
3197 $block = 2; break;
3198 }
3199 break;
3200 }
3201 case 1: {
3202 return $t2_3;
3203 break;
3204 }
3205 case 2: {
3206 $t4_5 = Reader$empty($t0_1);
3207 if ($t4_5) {
3208 $block = 4; break;
3209 }
3210 else {
3211 $block = 3; break;
3212 }
3213 break;
3214 }
3215 case 3: {
3216 $t5_6 = errExcessBytes.$get();
3217 return $t5_6;
3218 break;
3219 }
3220 case 4: {
3221 return null;
3222 break;
3223 }
3224 }
3225 }
3226 }
3227
3228 export function marshalRaw(v) {
3229 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
3230 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3231 $t1_2 = $rt.types.methodCall(v, 'marshal', [$t0_1]);
3232 $t2_3 = Writer$bytes($t0_1);
3233 $t3_4 = $t2_3[0];
3234 $t4_5 = $t2_3[1];
3235 return [$t3_4, $t4_5];
3236 }
3237
3238 export function signAuthenticatedContent(cs, signKey, wf, content, ctx) {
3239 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
3240 let $block = 0;
3241 while (true) {
3242 switch ($block) {
3243 case 0: {
3244 $t0_1 = { $value: { wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3245 $t1_2 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
3246 $t2_3 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
3247 $t3_4 = content.$get();
3248 $t1_2.$set(wf);
3249 $t2_3.$set($rt.builtin.cloneValue($t3_4));
3250 $t4_5 = authenticatedContent$framedContentTBS($t0_1, ctx);
3251 $t5_6 = signFramedContent(cs, signKey, $t4_5);
3252 $t6_7 = $t5_6[0];
3253 $t7_8 = $t5_6[1];
3254 $t8_9 = ($t7_8 !== null);
3255 if ($t8_9) {
3256 $block = 1; break;
3257 }
3258 else {
3259 $block = 2; break;
3260 }
3261 break;
3262 }
3263 case 1: {
3264 return [null, $t7_8];
3265 break;
3266 }
3267 case 2: {
3268 $t9_10 = { $get() { return $t0_1.$get().auth; }, $set(v) { const obj = $t0_1.$get(); obj.auth = v; $t0_1.$set(obj); } };
3269 $t10_11 = { $get() { return $t9_10.$get().signature; }, $set(v) { const obj = $t9_10.$get(); obj.signature = v; $t9_10.$set(obj); } };
3270 $t10_11.$set($t6_7);
3271 return [$t0_1, null];
3272 break;
3273 }
3274 }
3275 }
3276 }
3277
3278 export function signFramedContent(cs, signKey, content) {
3279 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
3280 let $block = 0;
3281 while (true) {
3282 switch ($block) {
3283 case 0: {
3284 $t0_1 = $rt.types.makeInterface('*smesh.lol/web/common/mls.framedContentTBS', content);
3285 $t1_2 = marshalRaw($t0_1);
3286 $t2_3 = $t1_2[0];
3287 $t3_4 = $t1_2[1];
3288 $t4_5 = ($t3_4 !== null);
3289 if ($t4_5) {
3290 $block = 1; break;
3291 }
3292 else {
3293 $block = 2; break;
3294 }
3295 break;
3296 }
3297 case 1: {
3298 return [null, $t3_4];
3299 break;
3300 }
3301 case 2: {
3302 $t5_6 = CipherSuite$signWithLabel(cs, signKey, 'FramedContentTBS', $t2_3);
3303 $t6_7 = $t5_6[0];
3304 $t7_8 = $t5_6[1];
3305 return [$t6_7, $t7_8];
3306 break;
3307 }
3308 }
3309 }
3310 }
3311
3312 export function signPublicMessage(cs, signKey, content, ctx) {
3313 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
3314 let $block = 0;
3315 while (true) {
3316 switch ($block) {
3317 case 0: {
3318 $t0_1 = signAuthenticatedContent(cs, signKey, 1, content, ctx);
3319 $t1_2 = $t0_1[0];
3320 $t2_3 = $t0_1[1];
3321 $t3_4 = ($t2_3 !== null);
3322 if ($t3_4) {
3323 $block = 1; break;
3324 }
3325 else {
3326 $block = 2; break;
3327 }
3328 break;
3329 }
3330 case 1: {
3331 return [null, $t2_3];
3332 break;
3333 }
3334 case 2: {
3335 $t4_5 = { $value: { content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null }, membershipTag: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3336 $t5_6 = { $get() { return $t4_5.$get().content; }, $set(v) { const obj = $t4_5.$get(); obj.content = v; $t4_5.$set(obj); } };
3337 $t6_7 = { $get() { return $t1_2.$get().content; }, $set(v) { const obj = $t1_2.$get(); obj.content = v; $t1_2.$set(obj); } };
3338 $t7_8 = $t6_7.$get();
3339 $t8_9 = { $get() { return $t4_5.$get().auth; }, $set(v) { const obj = $t4_5.$get(); obj.auth = v; $t4_5.$set(obj); } };
3340 $t9_10 = { $get() { return $t1_2.$get().auth; }, $set(v) { const obj = $t1_2.$get(); obj.auth = v; $t1_2.$set(obj); } };
3341 $t10_11 = $t9_10.$get();
3342 $t5_6.$set($rt.builtin.cloneValue($t7_8));
3343 $t8_9.$set($rt.builtin.cloneValue($t10_11));
3344 return [$t4_5, null];
3345 break;
3346 }
3347 }
3348 }
3349 }
3350
3351 export function newSenderData(li, generation) {
3352 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
3353 $t0_1 = { $value: { leafIndex: 0, generation: 0, reuseGuard: $rt.builtin.makeSlice(4, 4, 0) }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3354 $t1_2 = { $get() { return $t0_1.$get().leafIndex; }, $set(v) { const obj = $t0_1.$get(); obj.leafIndex = v; $t0_1.$set(obj); } };
3355 $t2_3 = { $get() { return $t0_1.$get().generation; }, $set(v) { const obj = $t0_1.$get(); obj.generation = v; $t0_1.$set(obj); } };
3356 $t1_2.$set(li);
3357 $t2_3.$set(generation);
3358 $t3_4 = { $value: $rt.builtin.makeSlice(4, 4, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3359 $t4_5 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
3360 $t5_6 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t4_5);
3361 $t6_7 = $t3_4.$get();
3362 $t7_8 = { $get() { return $t0_1.$get().reuseGuard; }, $set(v) { const obj = $t0_1.$get(); obj.reuseGuard = v; $t0_1.$set(obj); } };
3363 $t7_8.$set($rt.builtin.cloneValue($t6_7));
3364 return [$t0_1, null];
3365 }
3366
3367 export function sampleCiphertext(cs, ciphertext) {
3368 let $t0_1, $t1_2, $t2_3, $t3_4;
3369 let $block = 0;
3370 while (true) {
3371 switch ($block) {
3372 case 0: {
3373 $t0_1 = CipherSuite$ExtractSize(cs);
3374 $t1_2 = $rt.builtin.len(ciphertext);
3375 $t2_3 = ($t1_2 < $t0_1);
3376 if ($t2_3) {
3377 $block = 1; break;
3378 }
3379 else {
3380 $block = 2; break;
3381 }
3382 break;
3383 }
3384 case 1: {
3385 return ciphertext;
3386 break;
3387 }
3388 case 2: {
3389 $t3_4 = $rt.builtin.sliceSlice(ciphertext, undefined, $t0_1, undefined);
3390 return $t3_4;
3391 break;
3392 }
3393 }
3394 }
3395 }
3396
3397 export function expandSenderDataKey(cs, senderDataSecret, ciphertext) {
3398 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
3399 $t0_1 = sampleCiphertext(cs, ciphertext);
3400 $t1_2 = CipherSuite$AEADKeySize(cs);
3401 $t2_3 = ($t1_2 & 0xFFFF);
3402 $t3_4 = CipherSuite$expandWithLabel(cs, senderDataSecret, 'key', $t0_1, $t2_3);
3403 $t4_5 = $t3_4[0];
3404 $t5_6 = $t3_4[1];
3405 return [$t4_5, $t5_6];
3406 }
3407
3408 export function expandSenderDataNonce(cs, senderDataSecret, ciphertext) {
3409 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
3410 $t0_1 = sampleCiphertext(cs, ciphertext);
3411 $t1_2 = CipherSuite$AEADNonceSize(cs);
3412 $t2_3 = ($t1_2 & 0xFFFF);
3413 $t3_4 = CipherSuite$expandWithLabel(cs, senderDataSecret, 'nonce', $t0_1, $t2_3);
3414 $t4_5 = $t3_4[0];
3415 $t5_6 = $t3_4[1];
3416 return [$t4_5, $t5_6];
3417 }
3418
3419 export function derivePrivateMessageKeyAndNonce(cs, secret, reuseGuard) {
3420 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
3421 let $block = 0;
3422 while (true) {
3423 switch ($block) {
3424 case 0: {
3425 $t0_1 = { $value: $rt.builtin.makeSlice(4, 4, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3426 $t0_1.$set($rt.builtin.cloneValue(reuseGuard));
3427 $t1_2 = ratchetSecret$deriveKey(secret, cs);
3428 $t2_3 = $t1_2[0];
3429 $t3_4 = $t1_2[1];
3430 $t4_5 = ($t3_4 !== null);
3431 if ($t4_5) {
3432 $block = 1; break;
3433 }
3434 else {
3435 $block = 2; break;
3436 }
3437 break;
3438 }
3439 case 1: {
3440 return [null, null, $t3_4];
3441 break;
3442 }
3443 case 2: {
3444 $t5_6 = ratchetSecret$deriveNonce(secret, cs);
3445 $t6_7 = $t5_6[0];
3446 $t7_8 = $t5_6[1];
3447 $t8_9 = ($t7_8 !== null);
3448 if ($t8_9) {
3449 $block = 3; break;
3450 }
3451 else {
3452 $block = 4; break;
3453 }
3454 break;
3455 }
3456 case 3: {
3457 return [null, null, $t7_8];
3458 break;
3459 }
3460 case 4: {
3461 $t9_10 = $t0_1.$get();
3462 $t10_11 = -1;
3463 $block = 5; break;
3464 break;
3465 }
3466 case 5: {
3467 $t11_12 = ($t10_11 + 1);
3468 $t12_13 = ($t11_12 < 4);
3469 if ($t12_13) {
3470 $block = 6; break;
3471 }
3472 else {
3473 $block = 7; break;
3474 }
3475 break;
3476 }
3477 case 6: {
3478 $t13_14 = $t6_7.addr($t11_12);
3479 $t14_15 = $t13_14.$get();
3480 $t15_16 = $t0_1.$get().addr($t11_12);
3481 $t16_17 = $t15_16.$get();
3482 $t17_18 = ($t14_15 ^ $t16_17);
3483 $t18_19 = $t6_7.addr($t11_12);
3484 $t18_19.$set($t17_18);
3485 $t10_11 = $t11_12;
3486 $block = 5; break;
3487 break;
3488 }
3489 case 7: {
3490 return [$t2_3, $t6_7, null];
3491 break;
3492 }
3493 }
3494 }
3495 }
3496
3497 export function signPrivateMessageContent(cs, signKey, content, ctx) {
3498 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
3499 let $block = 0;
3500 while (true) {
3501 switch ($block) {
3502 case 0: {
3503 $t0_1 = signAuthenticatedContent(cs, signKey, 2, content, ctx);
3504 $t1_2 = $t0_1[0];
3505 $t2_3 = $t0_1[1];
3506 $t3_4 = ($t2_3 !== null);
3507 if ($t3_4) {
3508 $block = 1; break;
3509 }
3510 else {
3511 $block = 2; break;
3512 }
3513 break;
3514 }
3515 case 1: {
3516 return [null, $t2_3];
3517 break;
3518 }
3519 case 2: {
3520 $t4_5 = { $value: { applicationData: null, proposal: null, commit: null, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3521 $t5_6 = { $get() { return $t4_5.$get().applicationData; }, $set(v) { const obj = $t4_5.$get(); obj.applicationData = v; $t4_5.$set(obj); } };
3522 $t6_7 = { $get() { return content.$get().applicationData; }, $set(v) { const obj = content.$get(); obj.applicationData = v; content.$set(obj); } };
3523 $t7_8 = $t6_7.$get();
3524 $t8_9 = { $get() { return $t4_5.$get().proposal; }, $set(v) { const obj = $t4_5.$get(); obj.proposal = v; $t4_5.$set(obj); } };
3525 $t9_10 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
3526 $t10_11 = $t9_10.$get();
3527 $t11_12 = { $get() { return $t4_5.$get().commit; }, $set(v) { const obj = $t4_5.$get(); obj.commit = v; $t4_5.$set(obj); } };
3528 $t12_13 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
3529 $t13_14 = $t12_13.$get();
3530 $t14_15 = { $get() { return $t4_5.$get().auth; }, $set(v) { const obj = $t4_5.$get(); obj.auth = v; $t4_5.$set(obj); } };
3531 $t15_16 = { $get() { return $t1_2.$get().auth; }, $set(v) { const obj = $t1_2.$get(); obj.auth = v; $t1_2.$set(obj); } };
3532 $t16_17 = $t15_16.$get();
3533 $t5_6.$set($t7_8);
3534 $t8_9.$set($t10_11);
3535 $t11_12.$set($t13_14);
3536 $t14_15.$set($rt.builtin.cloneValue($t16_17));
3537 return [$t4_5, null];
3538 break;
3539 }
3540 }
3541 }
3542 }
3543
3544 export function encryptPrivateMessageContent(cs, secret, content, privContent, reuseGuard) {
3545 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34;
3546 let $block = 0;
3547 while (true) {
3548 switch ($block) {
3549 case 0: {
3550 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3551 $t1_2 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
3552 $t2_3 = $t1_2.$get();
3553 $t3_4 = privateMessageContent$marshal(privContent, $t0_1, $t2_3);
3554 $t4_5 = Writer$bytes($t0_1);
3555 $t5_6 = $t4_5[0];
3556 $t6_7 = $t4_5[1];
3557 $t7_8 = ($t6_7 !== null);
3558 if ($t7_8) {
3559 $block = 1; break;
3560 }
3561 else {
3562 $block = 2; break;
3563 }
3564 break;
3565 }
3566 case 1: {
3567 return [null, $t6_7];
3568 break;
3569 }
3570 case 2: {
3571 $t8_9 = derivePrivateMessageKeyAndNonce(cs, secret, reuseGuard);
3572 $t9_10 = $t8_9[0];
3573 $t10_11 = $t8_9[1];
3574 $t11_12 = $t8_9[2];
3575 $t12_13 = ($t11_12 !== null);
3576 if ($t12_13) {
3577 $block = 3; break;
3578 }
3579 else {
3580 $block = 4; break;
3581 }
3582 break;
3583 }
3584 case 3: {
3585 return [null, $t11_12];
3586 break;
3587 }
3588 case 4: {
3589 $t13_14 = { $value: { groupID: null, epoch: 0n, contentType: 0, authenticatedData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3590 $t14_15 = { $get() { return $t13_14.$get().groupID; }, $set(v) { const obj = $t13_14.$get(); obj.groupID = v; $t13_14.$set(obj); } };
3591 $t15_16 = { $get() { return content.$get().groupID; }, $set(v) { const obj = content.$get(); obj.groupID = v; content.$set(obj); } };
3592 $t16_17 = $t15_16.$get();
3593 $t17_18 = { $get() { return $t13_14.$get().epoch; }, $set(v) { const obj = $t13_14.$get(); obj.epoch = v; $t13_14.$set(obj); } };
3594 $t18_19 = { $get() { return content.$get().epoch; }, $set(v) { const obj = content.$get(); obj.epoch = v; content.$set(obj); } };
3595 $t19_20 = $t18_19.$get();
3596 $t20_21 = { $get() { return $t13_14.$get().contentType; }, $set(v) { const obj = $t13_14.$get(); obj.contentType = v; $t13_14.$set(obj); } };
3597 $t21_22 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
3598 $t22_23 = $t21_22.$get();
3599 $t23_24 = { $get() { return $t13_14.$get().authenticatedData; }, $set(v) { const obj = $t13_14.$get(); obj.authenticatedData = v; $t13_14.$set(obj); } };
3600 $t24_25 = { $get() { return content.$get().authenticatedData; }, $set(v) { const obj = content.$get(); obj.authenticatedData = v; content.$set(obj); } };
3601 $t25_26 = $t24_25.$get();
3602 $t14_15.$set($t16_17);
3603 $t17_18.$set($t19_20);
3604 $t20_21.$set($t22_23);
3605 $t23_24.$set($t25_26);
3606 $t26_27 = $rt.types.makeInterface('*smesh.lol/web/common/mls.privateContentAAD', $t13_14);
3607 $t27_28 = marshalRaw($t26_27);
3608 $t28_29 = $t27_28[0];
3609 $t29_30 = $t27_28[1];
3610 $t30_31 = ($t29_30 !== null);
3611 if ($t30_31) {
3612 $block = 5; break;
3613 }
3614 else {
3615 $block = 6; break;
3616 }
3617 break;
3618 }
3619 case 5: {
3620 return [null, $t29_30];
3621 break;
3622 }
3623 case 6: {
3624 $t31_32 = CipherSuite$aeadSeal(cs, $t9_10, $t10_11, $t5_6, $t28_29);
3625 $t32_33 = $t31_32[0];
3626 $t33_34 = $t31_32[1];
3627 return [$t32_33, $t33_34];
3628 break;
3629 }
3630 }
3631 }
3632 }
3633
3634 export function encryptSenderData(cs, senderDataSecret, sd, content, ciphertext) {
3635 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31;
3636 let $block = 0;
3637 while (true) {
3638 switch ($block) {
3639 case 0: {
3640 $t0_1 = expandSenderDataKey(cs, senderDataSecret, ciphertext);
3641 $t1_2 = $t0_1[0];
3642 $t2_3 = $t0_1[1];
3643 $t3_4 = ($t2_3 !== null);
3644 if ($t3_4) {
3645 $block = 1; break;
3646 }
3647 else {
3648 $block = 2; break;
3649 }
3650 break;
3651 }
3652 case 1: {
3653 return [null, $t2_3];
3654 break;
3655 }
3656 case 2: {
3657 $t4_5 = expandSenderDataNonce(cs, senderDataSecret, ciphertext);
3658 $t5_6 = $t4_5[0];
3659 $t6_7 = $t4_5[1];
3660 $t7_8 = ($t6_7 !== null);
3661 if ($t7_8) {
3662 $block = 3; break;
3663 }
3664 else {
3665 $block = 4; break;
3666 }
3667 break;
3668 }
3669 case 3: {
3670 return [null, $t6_7];
3671 break;
3672 }
3673 case 4: {
3674 $t8_9 = { $value: { groupID: null, epoch: 0n, contentType: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3675 $t9_10 = { $get() { return $t8_9.$get().groupID; }, $set(v) { const obj = $t8_9.$get(); obj.groupID = v; $t8_9.$set(obj); } };
3676 $t10_11 = { $get() { return content.$get().groupID; }, $set(v) { const obj = content.$get(); obj.groupID = v; content.$set(obj); } };
3677 $t11_12 = $t10_11.$get();
3678 $t12_13 = { $get() { return $t8_9.$get().epoch; }, $set(v) { const obj = $t8_9.$get(); obj.epoch = v; $t8_9.$set(obj); } };
3679 $t13_14 = { $get() { return content.$get().epoch; }, $set(v) { const obj = content.$get(); obj.epoch = v; content.$set(obj); } };
3680 $t14_15 = $t13_14.$get();
3681 $t15_16 = { $get() { return $t8_9.$get().contentType; }, $set(v) { const obj = $t8_9.$get(); obj.contentType = v; $t8_9.$set(obj); } };
3682 $t16_17 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
3683 $t17_18 = $t16_17.$get();
3684 $t9_10.$set($t11_12);
3685 $t12_13.$set($t14_15);
3686 $t15_16.$set($t17_18);
3687 $t18_19 = $rt.types.makeInterface('*smesh.lol/web/common/mls.senderDataAAD', $t8_9);
3688 $t19_20 = marshalRaw($t18_19);
3689 $t20_21 = $t19_20[0];
3690 $t21_22 = $t19_20[1];
3691 $t22_23 = ($t21_22 !== null);
3692 if ($t22_23) {
3693 $block = 5; break;
3694 }
3695 else {
3696 $block = 6; break;
3697 }
3698 break;
3699 }
3700 case 5: {
3701 return [null, $t21_22];
3702 break;
3703 }
3704 case 6: {
3705 $t23_24 = $rt.types.makeInterface('*smesh.lol/web/common/mls.senderData', sd);
3706 $t24_25 = marshalRaw($t23_24);
3707 $t25_26 = $t24_25[0];
3708 $t26_27 = $t24_25[1];
3709 $t27_28 = ($t26_27 !== null);
3710 if ($t27_28) {
3711 $block = 7; break;
3712 }
3713 else {
3714 $block = 8; break;
3715 }
3716 break;
3717 }
3718 case 7: {
3719 return [null, $t26_27];
3720 break;
3721 }
3722 case 8: {
3723 $t28_29 = CipherSuite$aeadSeal(cs, $t1_2, $t5_6, $t25_26, $t20_21);
3724 $t29_30 = $t28_29[0];
3725 $t30_31 = $t28_29[1];
3726 return [$t29_30, $t30_31];
3727 break;
3728 }
3729 }
3730 }
3731 }
3732
3733 export function encryptPrivateMessage(cs, secret, senderDataSecret, content, privContent, sd) {
3734 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25;
3735 let $block = 0;
3736 while (true) {
3737 switch ($block) {
3738 case 0: {
3739 $t0_1 = { $get() { return sd.$get().reuseGuard; }, $set(v) { const obj = sd.$get(); obj.reuseGuard = v; sd.$set(obj); } };
3740 $t1_2 = $t0_1.$get();
3741 $t2_3 = encryptPrivateMessageContent(cs, secret, content, privContent, $t1_2);
3742 $t3_4 = $t2_3[0];
3743 $t4_5 = $t2_3[1];
3744 $t5_6 = ($t4_5 !== null);
3745 if ($t5_6) {
3746 $block = 1; break;
3747 }
3748 else {
3749 $block = 2; break;
3750 }
3751 break;
3752 }
3753 case 1: {
3754 return [null, $t4_5];
3755 break;
3756 }
3757 case 2: {
3758 $t6_7 = encryptSenderData(cs, senderDataSecret, sd, content, $t3_4);
3759 $t7_8 = $t6_7[0];
3760 $t8_9 = $t6_7[1];
3761 $t9_10 = ($t8_9 !== null);
3762 if ($t9_10) {
3763 $block = 3; break;
3764 }
3765 else {
3766 $block = 4; break;
3767 }
3768 break;
3769 }
3770 case 3: {
3771 return [null, $t8_9];
3772 break;
3773 }
3774 case 4: {
3775 $t10_11 = { $value: { groupID: null, epoch: 0n, contentType: 0, authenticatedData: null, encryptedSenderData: null, ciphertext: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3776 $t11_12 = { $get() { return $t10_11.$get().groupID; }, $set(v) { const obj = $t10_11.$get(); obj.groupID = v; $t10_11.$set(obj); } };
3777 $t12_13 = { $get() { return content.$get().groupID; }, $set(v) { const obj = content.$get(); obj.groupID = v; content.$set(obj); } };
3778 $t13_14 = $t12_13.$get();
3779 $t14_15 = { $get() { return $t10_11.$get().epoch; }, $set(v) { const obj = $t10_11.$get(); obj.epoch = v; $t10_11.$set(obj); } };
3780 $t15_16 = { $get() { return content.$get().epoch; }, $set(v) { const obj = content.$get(); obj.epoch = v; content.$set(obj); } };
3781 $t16_17 = $t15_16.$get();
3782 $t17_18 = { $get() { return $t10_11.$get().contentType; }, $set(v) { const obj = $t10_11.$get(); obj.contentType = v; $t10_11.$set(obj); } };
3783 $t18_19 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
3784 $t19_20 = $t18_19.$get();
3785 $t20_21 = { $get() { return $t10_11.$get().authenticatedData; }, $set(v) { const obj = $t10_11.$get(); obj.authenticatedData = v; $t10_11.$set(obj); } };
3786 $t21_22 = { $get() { return content.$get().authenticatedData; }, $set(v) { const obj = content.$get(); obj.authenticatedData = v; content.$set(obj); } };
3787 $t22_23 = $t21_22.$get();
3788 $t23_24 = { $get() { return $t10_11.$get().encryptedSenderData; }, $set(v) { const obj = $t10_11.$get(); obj.encryptedSenderData = v; $t10_11.$set(obj); } };
3789 $t24_25 = { $get() { return $t10_11.$get().ciphertext; }, $set(v) { const obj = $t10_11.$get(); obj.ciphertext = v; $t10_11.$set(obj); } };
3790 $t11_12.$set($t13_14);
3791 $t14_15.$set($t16_17);
3792 $t17_18.$set($t19_20);
3793 $t20_21.$set($t22_23);
3794 $t23_24.$set($t7_8);
3795 $t24_25.$set($t3_4);
3796 return [$t10_11, null];
3797 break;
3798 }
3799 }
3800 }
3801 }
3802
3803 export function UnmarshalGroup(raw) {
3804 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54;
3805 let $block = 0;
3806 while (true) {
3807 switch ($block) {
3808 case 0: {
3809 $t0_1 = { $value: { data: null, pos: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3810 $t1_2 = newReader(raw);
3811 $t0_1.$set($rt.builtin.cloneValue($t1_2));
3812 $t2_3 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3813 $t3_4 = { $value: { tree: null, groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, interimTranscriptHash: null, pskSecret: null, epochSecret: null, initSecret: null, myLeafIndex: 0, privTree: null, signaturePriv: null, pendingProposals: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3814 $t2_3.$set($t3_4);
3815 $t4_5 = $t2_3.$get();
3816 $t5_6 = { $get() { return $t4_5.$get().groupContext; }, $set(v) { const obj = $t4_5.$get(); obj.groupContext = v; $t4_5.$set(obj); } };
3817 $t6_7 = groupContext$unmarshal($t5_6, $t0_1);
3818 $t7_8 = ($t6_7 !== null);
3819 if ($t7_8) {
3820 $block = 1; break;
3821 }
3822 else {
3823 $block = 2; break;
3824 }
3825 break;
3826 }
3827 case 1: {
3828 return [null, $t6_7];
3829 break;
3830 }
3831 case 2: {
3832 $t8_9 = $t2_3.$get();
3833 $t9_10 = { $get() { return $t8_9.$get().tree; }, $set(v) { const obj = $t8_9.$get(); obj.tree = v; $t8_9.$set(obj); } };
3834 $t10_11 = ratchetTree$unmarshal($t9_10, $t0_1);
3835 $t11_12 = ($t10_11 !== null);
3836 if ($t11_12) {
3837 $block = 3; break;
3838 }
3839 else {
3840 $block = 4; break;
3841 }
3842 break;
3843 }
3844 case 3: {
3845 return [null, $t10_11];
3846 break;
3847 }
3848 case 4: {
3849 $t12_13 = $t2_3.$get();
3850 $t13_14 = Reader$readOpaqueVec($t0_1);
3851 $t14_15 = $t13_14[0];
3852 $t15_16 = { $get() { return $t12_13.$get().interimTranscriptHash; }, $set(v) { const obj = $t12_13.$get(); obj.interimTranscriptHash = v; $t12_13.$set(obj); } };
3853 $t15_16.$set($t14_15);
3854 $t16_17 = $t13_14[1];
3855 if ($t16_17) {
3856 $block = 6; break;
3857 }
3858 else {
3859 $block = 5; break;
3860 }
3861 break;
3862 }
3863 case 5: {
3864 $t17_18 = errUnexpectedEOF.$get();
3865 return [null, $t17_18];
3866 break;
3867 }
3868 case 6: {
3869 $t18_19 = $t2_3.$get();
3870 $t19_20 = Reader$readOpaqueVec($t0_1);
3871 $t20_21 = $t19_20[0];
3872 $t21_22 = { $get() { return $t18_19.$get().pskSecret; }, $set(v) { const obj = $t18_19.$get(); obj.pskSecret = v; $t18_19.$set(obj); } };
3873 $t21_22.$set($t20_21);
3874 $t22_23 = $t19_20[1];
3875 if ($t22_23) {
3876 $block = 8; break;
3877 }
3878 else {
3879 $block = 7; break;
3880 }
3881 break;
3882 }
3883 case 7: {
3884 $t23_24 = errUnexpectedEOF.$get();
3885 return [null, $t23_24];
3886 break;
3887 }
3888 case 8: {
3889 $t24_25 = $t2_3.$get();
3890 $t25_26 = Reader$readOpaqueVec($t0_1);
3891 $t26_27 = $t25_26[0];
3892 $t27_28 = { $get() { return $t24_25.$get().epochSecret; }, $set(v) { const obj = $t24_25.$get(); obj.epochSecret = v; $t24_25.$set(obj); } };
3893 $t27_28.$set($t26_27);
3894 $t28_29 = $t25_26[1];
3895 if ($t28_29) {
3896 $block = 10; break;
3897 }
3898 else {
3899 $block = 9; break;
3900 }
3901 break;
3902 }
3903 case 9: {
3904 $t29_30 = errUnexpectedEOF.$get();
3905 return [null, $t29_30];
3906 break;
3907 }
3908 case 10: {
3909 $t30_31 = $t2_3.$get();
3910 $t31_32 = Reader$readOpaqueVec($t0_1);
3911 $t32_33 = $t31_32[0];
3912 $t33_34 = { $get() { return $t30_31.$get().initSecret; }, $set(v) { const obj = $t30_31.$get(); obj.initSecret = v; $t30_31.$set(obj); } };
3913 $t33_34.$set($t32_33);
3914 $t34_35 = $t31_32[1];
3915 if ($t34_35) {
3916 $block = 12; break;
3917 }
3918 else {
3919 $block = 11; break;
3920 }
3921 break;
3922 }
3923 case 11: {
3924 $t35_36 = errUnexpectedEOF.$get();
3925 return [null, $t35_36];
3926 break;
3927 }
3928 case 12: {
3929 $t36_37 = Reader$readUint32($t0_1);
3930 $t37_38 = $t36_37[0];
3931 $t38_39 = $t36_37[1];
3932 if ($t38_39) {
3933 $block = 14; break;
3934 }
3935 else {
3936 $block = 13; break;
3937 }
3938 break;
3939 }
3940 case 13: {
3941 $t39_40 = errUnexpectedEOF.$get();
3942 return [null, $t39_40];
3943 break;
3944 }
3945 case 14: {
3946 $t40_41 = $t2_3.$get();
3947 $t41_42 = $t37_38;
3948 $t42_43 = { $get() { return $t40_41.$get().myLeafIndex; }, $set(v) { const obj = $t40_41.$get(); obj.myLeafIndex = v; $t40_41.$set(obj); } };
3949 $t42_43.$set($t41_42);
3950 $t43_44 = Reader$readOpaqueVec($t0_1);
3951 $t44_45 = $t43_44[0];
3952 $t45_46 = $t43_44[1];
3953 if ($t45_46) {
3954 $block = 16; break;
3955 }
3956 else {
3957 $block = 15; break;
3958 }
3959 break;
3960 }
3961 case 15: {
3962 $t46_47 = errUnexpectedEOF.$get();
3963 return [null, $t46_47];
3964 break;
3965 }
3966 case 16: {
3967 $t47_48 = $t2_3.$get();
3968 $t48_49 = $t44_45;
3969 $t49_50 = { $get() { return $t47_48.$get().signaturePriv; }, $set(v) { const obj = $t47_48.$get(); obj.signaturePriv = v; $t47_48.$set(obj); } };
3970 $t49_50.$set($t48_49);
3971 $t50_51 = UnmarshalGroup$1.bind(null, $t2_3);
3972 $t51_52 = Reader$readVector($t0_1, $t50_51);
3973 $t52_53 = ($t51_52 !== null);
3974 if ($t52_53) {
3975 $block = 17; break;
3976 }
3977 else {
3978 $block = 18; break;
3979 }
3980 break;
3981 }
3982 case 17: {
3983 return [null, $t51_52];
3984 break;
3985 }
3986 case 18: {
3987 $t53_54 = $t2_3.$get();
3988 return [$t53_54, null];
3989 break;
3990 }
3991 }
3992 }
3993 }
3994
3995 function UnmarshalGroup$1(g, r) {
3996 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
3997 let $block = 0;
3998 while (true) {
3999 switch ($block) {
4000 case 0: {
4001 $t0_1 = Reader$readOpaqueVec(r);
4002 $t1_2 = $t0_1[0];
4003 $t2_3 = $t0_1[1];
4004 if ($t2_3) {
4005 $block = 2; break;
4006 }
4007 else {
4008 $block = 1; break;
4009 }
4010 break;
4011 }
4012 case 1: {
4013 $t3_4 = errUnexpectedEOF.$get();
4014 return $t3_4;
4015 break;
4016 }
4017 case 2: {
4018 $t4_5 = g.$get();
4019 $t5_6 = g.$get();
4020 $t6_7 = { $get() { return $t5_6.$get().privTree; }, $set(v) { const obj = $t5_6.$get(); obj.privTree = v; $t5_6.$set(obj); } };
4021 $t7_8 = $t6_7.$get();
4022 $t8_9 = $t1_2;
4023 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4024 $t10_11 = $t9_10.$get().addr(0);
4025 $t10_11.$set($t8_9);
4026 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
4027 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
4028 $t13_14 = { $get() { return $t4_5.$get().privTree; }, $set(v) { const obj = $t4_5.$get(); obj.privTree = v; $t4_5.$set(obj); } };
4029 $t13_14.$set($t12_13);
4030 return null;
4031 break;
4032 }
4033 }
4034 }
4035 }
4036
4037 export function CreateGroup(groupID, kpp) {
4038 let $t0_1, $t1_2, $t2_3;
4039 $t0_1 = CreateGroupWithOptions(groupID, kpp, null);
4040 $t1_2 = $t0_1[0];
4041 $t2_3 = $t0_1[1];
4042 return [$t1_2, $t2_3];
4043 }
4044
4045 export function CreateGroupWithOptions(groupID, kpp, opts) {
4046 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74;
4047 let $block = 0;
4048 while (true) {
4049 switch ($block) {
4050 case 0: {
4051 $t0_1 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
4052 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
4053 $t2_3 = $t1_2.$get();
4054 $t3_4 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4055 $t4_5 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4056 $t5_6 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, 1, undefined);
4057 $t3_4.$set($t5_6);
4058 $t6_7 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
4059 $t7_8 = { $get() { return $t6_7.$get().leafNode; }, $set(v) { const obj = $t6_7.$get(); obj.leafNode = v; $t6_7.$set(obj); } };
4060 $t8_9 = ratchetTree$add($t3_4, $t7_8);
4061 $t9_10 = $t3_4.$get();
4062 $t10_11 = $rt.builtin.len($t9_10);
4063 $t11_12 = $rt.builtin.makeSlice($t10_11, $t10_11, null);
4064 $t12_13 = { $get() { return kpp.$get().Private; }, $set(v) { const obj = kpp.$get(); obj.Private = v; kpp.$set(obj); } };
4065 $t13_14 = { $get() { return $t12_13.$get().EncryptionKey; }, $set(v) { const obj = $t12_13.$get(); obj.EncryptionKey = v; $t12_13.$set(obj); } };
4066 $t14_15 = $t13_14.$get();
4067 $t15_16 = $t11_12.addr(0);
4068 $t16_17 = $t14_15;
4069 $t15_16.$set($t16_17);
4070 $t17_18 = $t3_4.$get();
4071 $t18_19 = ratchetTree$computeRootTreeHash($t17_18, $t2_3);
4072 $t19_20 = $t18_19[0];
4073 $t20_21 = $t18_19[1];
4074 $t21_22 = ($t20_21 !== null);
4075 if ($t21_22) {
4076 $block = 1; break;
4077 }
4078 else {
4079 $block = 2; break;
4080 }
4081 break;
4082 }
4083 case 1: {
4084 return [null, $t20_21];
4085 break;
4086 }
4087 case 2: {
4088 $t22_23 = CipherSuite$HashSize($t2_3);
4089 $t23_24 = $rt.builtin.makeSlice($t22_23, $t22_23, 0);
4090 $t24_25 = CipherSuite$ExtractSize($t2_3);
4091 $t25_26 = CipherSuite$randomBytes($t2_3, $t24_25);
4092 $t26_27 = (opts !== null);
4093 if ($t26_27) {
4094 $block = 3; break;
4095 }
4096 else {
4097 $t29_30 = null;
4098 $block = 4; break;
4099 }
4100 break;
4101 }
4102 case 3: {
4103 $t27_28 = { $get() { return opts.$get().Extensions; }, $set(v) { const obj = opts.$get(); obj.Extensions = v; opts.$set(obj); } };
4104 $t28_29 = $t27_28.$get();
4105 $t29_30 = $t28_29;
4106 $block = 4; break;
4107 break;
4108 }
4109 case 4: {
4110 $t30_31 = { $value: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4111 $t31_32 = { $get() { return $t30_31.$get().version; }, $set(v) { const obj = $t30_31.$get(); obj.version = v; $t30_31.$set(obj); } };
4112 $t32_33 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
4113 $t33_34 = { $get() { return $t32_33.$get().version; }, $set(v) { const obj = $t32_33.$get(); obj.version = v; $t32_33.$set(obj); } };
4114 $t34_35 = $t33_34.$get();
4115 $t35_36 = { $get() { return $t30_31.$get().cipherSuite; }, $set(v) { const obj = $t30_31.$get(); obj.cipherSuite = v; $t30_31.$set(obj); } };
4116 $t36_37 = { $get() { return $t30_31.$get().groupID; }, $set(v) { const obj = $t30_31.$get(); obj.groupID = v; $t30_31.$set(obj); } };
4117 $t37_38 = { $get() { return $t30_31.$get().epoch; }, $set(v) { const obj = $t30_31.$get(); obj.epoch = v; $t30_31.$set(obj); } };
4118 $t38_39 = { $get() { return $t30_31.$get().treeHash; }, $set(v) { const obj = $t30_31.$get(); obj.treeHash = v; $t30_31.$set(obj); } };
4119 $t39_40 = { $get() { return $t30_31.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t30_31.$get(); obj.confirmedTranscriptHash = v; $t30_31.$set(obj); } };
4120 $t40_41 = { $get() { return $t30_31.$get().extensions; }, $set(v) { const obj = $t30_31.$get(); obj.extensions = v; $t30_31.$set(obj); } };
4121 $t31_32.$set($t34_35);
4122 $t35_36.$set($t2_3);
4123 $t36_37.$set(groupID);
4124 $t37_38.$set(0n);
4125 $t38_39.$set($t19_20);
4126 $t39_40.$set($t23_24);
4127 $t40_41.$set($t29_30);
4128 $t41_42 = groupContext$signConfirmationTag($t30_31, $t25_26);
4129 $t42_43 = $t41_42[0];
4130 $t43_44 = $t41_42[1];
4131 $t44_45 = ($t43_44 !== null);
4132 if ($t44_45) {
4133 $block = 5; break;
4134 }
4135 else {
4136 $block = 6; break;
4137 }
4138 break;
4139 }
4140 case 5: {
4141 return [null, $t43_44];
4142 break;
4143 }
4144 case 6: {
4145 $t45_46 = nextInterimTranscriptHash($t2_3, $t23_24, $t42_43);
4146 $t46_47 = $t45_46[0];
4147 $t47_48 = $t45_46[1];
4148 $t48_49 = ($t47_48 !== null);
4149 if ($t48_49) {
4150 $block = 7; break;
4151 }
4152 else {
4153 $block = 8; break;
4154 }
4155 break;
4156 }
4157 case 7: {
4158 return [null, $t47_48];
4159 break;
4160 }
4161 case 8: {
4162 $t49_50 = extractPSKSecret($t2_3, null, null);
4163 $t50_51 = $t49_50[0];
4164 $t51_52 = $t49_50[1];
4165 $t52_53 = ($t51_52 !== null);
4166 if ($t52_53) {
4167 $block = 9; break;
4168 }
4169 else {
4170 $block = 10; break;
4171 }
4172 break;
4173 }
4174 case 9: {
4175 return [null, $t51_52];
4176 break;
4177 }
4178 case 10: {
4179 $t53_54 = secretLabelInit.$get();
4180 $t54_55 = CipherSuite$deriveSecret($t2_3, $t25_26, $t53_54);
4181 $t55_56 = $t54_55[0];
4182 $t56_57 = $t54_55[1];
4183 $t57_58 = ($t56_57 !== null);
4184 if ($t57_58) {
4185 $block = 11; break;
4186 }
4187 else {
4188 $block = 12; break;
4189 }
4190 break;
4191 }
4192 case 11: {
4193 return [null, $t56_57];
4194 break;
4195 }
4196 case 12: {
4197 $t58_59 = { $value: { tree: null, groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, interimTranscriptHash: null, pskSecret: null, epochSecret: null, initSecret: null, myLeafIndex: 0, privTree: null, signaturePriv: null, pendingProposals: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4198 $t59_60 = { $get() { return $t58_59.$get().tree; }, $set(v) { const obj = $t58_59.$get(); obj.tree = v; $t58_59.$set(obj); } };
4199 $t60_61 = $t3_4.$get();
4200 $t61_62 = { $get() { return $t58_59.$get().privTree; }, $set(v) { const obj = $t58_59.$get(); obj.privTree = v; $t58_59.$set(obj); } };
4201 $t62_63 = { $get() { return $t58_59.$get().myLeafIndex; }, $set(v) { const obj = $t58_59.$get(); obj.myLeafIndex = v; $t58_59.$set(obj); } };
4202 $t63_64 = { $get() { return $t58_59.$get().signaturePriv; }, $set(v) { const obj = $t58_59.$get(); obj.signaturePriv = v; $t58_59.$set(obj); } };
4203 $t64_65 = { $get() { return kpp.$get().Private; }, $set(v) { const obj = kpp.$get(); obj.Private = v; kpp.$set(obj); } };
4204 $t65_66 = { $get() { return $t64_65.$get().SignatureKey; }, $set(v) { const obj = $t64_65.$get(); obj.SignatureKey = v; $t64_65.$set(obj); } };
4205 $t66_67 = $t65_66.$get();
4206 $t67_68 = { $get() { return $t58_59.$get().groupContext; }, $set(v) { const obj = $t58_59.$get(); obj.groupContext = v; $t58_59.$set(obj); } };
4207 $t68_69 = $t30_31.$get();
4208 $t69_70 = { $get() { return $t58_59.$get().interimTranscriptHash; }, $set(v) { const obj = $t58_59.$get(); obj.interimTranscriptHash = v; $t58_59.$set(obj); } };
4209 $t70_71 = { $get() { return $t58_59.$get().pskSecret; }, $set(v) { const obj = $t58_59.$get(); obj.pskSecret = v; $t58_59.$set(obj); } };
4210 $t71_72 = { $get() { return $t58_59.$get().epochSecret; }, $set(v) { const obj = $t58_59.$get(); obj.epochSecret = v; $t58_59.$set(obj); } };
4211 $t72_73 = { $get() { return $t58_59.$get().initSecret; }, $set(v) { const obj = $t58_59.$get(); obj.initSecret = v; $t58_59.$set(obj); } };
4212 $t59_60.$set($t60_61);
4213 $t61_62.$set($t11_12);
4214 $t62_63.$set(0);
4215 $t73_74 = $t66_67;
4216 $t63_64.$set($t73_74);
4217 $t67_68.$set($rt.builtin.cloneValue($t68_69));
4218 $t69_70.$set($t46_47);
4219 $t70_71.$set($t50_51);
4220 $t71_72.$set($t25_26);
4221 $t72_73.$set($t55_56);
4222 return [$t58_59, null];
4223 break;
4224 }
4225 }
4226 }
4227 }
4228
4229 export function GroupFromWelcome(welcome, kpp) {
4230 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
4231 let $block = 0;
4232 while (true) {
4233 switch ($block) {
4234 case 0: {
4235 $t0_1 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
4236 $t1_2 = KeyPackage$GenerateRef($t0_1);
4237 $t2_3 = $t1_2[0];
4238 $t3_4 = $t1_2[1];
4239 $t4_5 = ($t3_4 !== null);
4240 if ($t4_5) {
4241 $block = 1; break;
4242 }
4243 else {
4244 $block = 2; break;
4245 }
4246 break;
4247 }
4248 case 1: {
4249 return [null, $t3_4];
4250 break;
4251 }
4252 case 2: {
4253 $t5_6 = { $get() { return kpp.$get().Private; }, $set(v) { const obj = kpp.$get(); obj.Private = v; kpp.$set(obj); } };
4254 $t6_7 = { $get() { return $t5_6.$get().InitKey; }, $set(v) { const obj = $t5_6.$get(); obj.InitKey = v; $t5_6.$set(obj); } };
4255 $t7_8 = $t6_7.$get();
4256 $t8_9 = $t7_8;
4257 $t9_10 = Welcome$decryptGroupSecrets(welcome, $t2_3, $t8_9);
4258 $t10_11 = $t9_10[0];
4259 $t11_12 = $t9_10[1];
4260 $t12_13 = ($t11_12 !== null);
4261 if ($t12_13) {
4262 $block = 3; break;
4263 }
4264 else {
4265 $block = 4; break;
4266 }
4267 break;
4268 }
4269 case 3: {
4270 return [null, $t11_12];
4271 break;
4272 }
4273 case 4: {
4274 $t13_14 = groupSecrets$verifySingleReinitOrBranchPSK($t10_11);
4275 if ($t13_14) {
4276 $block = 6; break;
4277 }
4278 else {
4279 $block = 5; break;
4280 }
4281 break;
4282 }
4283 case 5: {
4284 $t14_15 = errors.New('mls: more than one reinit/branch PSK');
4285 return [null, $t14_15];
4286 break;
4287 }
4288 case 6: {
4289 $t15_16 = { $get() { return $t10_11.$get().psks; }, $set(v) { const obj = $t10_11.$get(); obj.psks = v; $t10_11.$set(obj); } };
4290 $t16_17 = $t15_16.$get();
4291 $t17_18 = $rt.builtin.len($t16_17);
4292 $t18_19 = ($t17_18 !== 0);
4293 if ($t18_19) {
4294 $block = 7; break;
4295 }
4296 else {
4297 $block = 8; break;
4298 }
4299 break;
4300 }
4301 case 7: {
4302 $t19_20 = errors.New('mls: group secret PSKs not supported');
4303 return [null, $t19_20];
4304 break;
4305 }
4306 case 8: {
4307 $t20_21 = groupFromSecrets(welcome, kpp, $t10_11, 0n);
4308 $t21_22 = $t20_21[0];
4309 $t22_23 = $t20_21[1];
4310 return [$t21_22, $t22_23];
4311 break;
4312 }
4313 }
4314 }
4315 }
4316
4317 export function GroupFromWelcomeAt(welcome, kpp, nowUnix) {
4318 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
4319 let $block = 0;
4320 while (true) {
4321 switch ($block) {
4322 case 0: {
4323 $t0_1 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
4324 $t1_2 = KeyPackage$GenerateRef($t0_1);
4325 $t2_3 = $t1_2[0];
4326 $t3_4 = $t1_2[1];
4327 $t4_5 = ($t3_4 !== null);
4328 if ($t4_5) {
4329 $block = 1; break;
4330 }
4331 else {
4332 $block = 2; break;
4333 }
4334 break;
4335 }
4336 case 1: {
4337 return [null, $t3_4];
4338 break;
4339 }
4340 case 2: {
4341 $t5_6 = { $get() { return kpp.$get().Private; }, $set(v) { const obj = kpp.$get(); obj.Private = v; kpp.$set(obj); } };
4342 $t6_7 = { $get() { return $t5_6.$get().InitKey; }, $set(v) { const obj = $t5_6.$get(); obj.InitKey = v; $t5_6.$set(obj); } };
4343 $t7_8 = $t6_7.$get();
4344 $t8_9 = $t7_8;
4345 $t9_10 = Welcome$decryptGroupSecrets(welcome, $t2_3, $t8_9);
4346 $t10_11 = $t9_10[0];
4347 $t11_12 = $t9_10[1];
4348 $t12_13 = ($t11_12 !== null);
4349 if ($t12_13) {
4350 $block = 3; break;
4351 }
4352 else {
4353 $block = 4; break;
4354 }
4355 break;
4356 }
4357 case 3: {
4358 return [null, $t11_12];
4359 break;
4360 }
4361 case 4: {
4362 $t13_14 = groupSecrets$verifySingleReinitOrBranchPSK($t10_11);
4363 if ($t13_14) {
4364 $block = 6; break;
4365 }
4366 else {
4367 $block = 5; break;
4368 }
4369 break;
4370 }
4371 case 5: {
4372 $t14_15 = errors.New('mls: more than one reinit/branch PSK');
4373 return [null, $t14_15];
4374 break;
4375 }
4376 case 6: {
4377 $t15_16 = { $get() { return $t10_11.$get().psks; }, $set(v) { const obj = $t10_11.$get(); obj.psks = v; $t10_11.$set(obj); } };
4378 $t16_17 = $t15_16.$get();
4379 $t17_18 = $rt.builtin.len($t16_17);
4380 $t18_19 = ($t17_18 !== 0);
4381 if ($t18_19) {
4382 $block = 7; break;
4383 }
4384 else {
4385 $block = 8; break;
4386 }
4387 break;
4388 }
4389 case 7: {
4390 $t19_20 = errors.New('mls: group secret PSKs not supported');
4391 return [null, $t19_20];
4392 break;
4393 }
4394 case 8: {
4395 $t20_21 = groupFromSecrets(welcome, kpp, $t10_11, nowUnix);
4396 $t21_22 = $t20_21[0];
4397 $t22_23 = $t20_21[1];
4398 return [$t21_22, $t22_23];
4399 break;
4400 }
4401 }
4402 }
4403 }
4404
4405 export function groupFromSecrets(welcome, kpp, gs, nowUnix) {
4406 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114;
4407 let $block = 0;
4408 while (true) {
4409 switch ($block) {
4410 case 0: {
4411 $t0_1 = { $get() { return welcome.$get().cipherSuite; }, $set(v) { const obj = welcome.$get(); obj.cipherSuite = v; welcome.$set(obj); } };
4412 $t1_2 = $t0_1.$get();
4413 $t2_3 = { $get() { return gs.$get().psks; }, $set(v) { const obj = gs.$get(); obj.psks = v; gs.$set(obj); } };
4414 $t3_4 = $t2_3.$get();
4415 $t4_5 = extractPSKSecret($t1_2, $t3_4, null);
4416 $t5_6 = $t4_5[0];
4417 $t6_7 = $t4_5[1];
4418 $t7_8 = ($t6_7 !== null);
4419 if ($t7_8) {
4420 $block = 1; break;
4421 }
4422 else {
4423 $block = 2; break;
4424 }
4425 break;
4426 }
4427 case 1: {
4428 return [null, $t6_7];
4429 break;
4430 }
4431 case 2: {
4432 $t8_9 = { $get() { return gs.$get().joinerSecret; }, $set(v) { const obj = gs.$get(); obj.joinerSecret = v; gs.$set(obj); } };
4433 $t9_10 = $t8_9.$get();
4434 $t10_11 = Welcome$decryptGroupInfo(welcome, $t9_10, $t5_6);
4435 $t11_12 = $t10_11[0];
4436 $t12_13 = $t10_11[1];
4437 $t13_14 = ($t12_13 !== null);
4438 if ($t13_14) {
4439 $block = 3; break;
4440 }
4441 else {
4442 $block = 4; break;
4443 }
4444 break;
4445 }
4446 case 3: {
4447 return [null, $t12_13];
4448 break;
4449 }
4450 case 4: {
4451 $t14_15 = { $get() { return $t11_12.$get().extensions; }, $set(v) { const obj = $t11_12.$get(); obj.extensions = v; $t11_12.$set(obj); } };
4452 $t15_16 = $t14_15.$get();
4453 $t16_17 = findExtensionData($t15_16, 2);
4454 $t17_18 = $rt.builtin.stringEqual($t16_17, null);
4455 if ($t17_18) {
4456 $block = 5; break;
4457 }
4458 else {
4459 $block = 6; break;
4460 }
4461 break;
4462 }
4463 case 5: {
4464 $t18_19 = errors.New('mls: missing ratchet tree');
4465 return [null, $t18_19];
4466 break;
4467 }
4468 case 6: {
4469 $t19_20 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4470 $t20_21 = $rt.types.makeInterface('*smesh.lol/web/common/mls.ratchetTree', $t19_20);
4471 $t21_22 = unmarshalRaw($t16_17, $t20_21);
4472 $t22_23 = ($t21_22 !== null);
4473 if ($t22_23) {
4474 $block = 7; break;
4475 }
4476 else {
4477 $block = 8; break;
4478 }
4479 break;
4480 }
4481 case 7: {
4482 return [null, $t21_22];
4483 break;
4484 }
4485 case 8: {
4486 $t23_24 = $t19_20.$get();
4487 $t24_25 = { $get() { return $t11_12.$get().signer; }, $set(v) { const obj = $t11_12.$get(); obj.signer = v; $t11_12.$set(obj); } };
4488 $t25_26 = $t24_25.$get();
4489 $t26_27 = ratchetTree$getLeaf($t23_24, $t25_26);
4490 $t27_28 = ($t26_27 === null);
4491 if ($t27_28) {
4492 $block = 9; break;
4493 }
4494 else {
4495 $block = 10; break;
4496 }
4497 break;
4498 }
4499 case 9: {
4500 $t28_29 = errors.New('mls: signer node is blank');
4501 return [null, $t28_29];
4502 break;
4503 }
4504 case 10: {
4505 $t29_30 = { $get() { return $t26_27.$get().signatureKey; }, $set(v) { const obj = $t26_27.$get(); obj.signatureKey = v; $t26_27.$set(obj); } };
4506 $t30_31 = $t29_30.$get();
4507 $t31_32 = groupInfo$verifySignature($t11_12, $t30_31);
4508 if ($t31_32) {
4509 $block = 12; break;
4510 }
4511 else {
4512 $block = 11; break;
4513 }
4514 break;
4515 }
4516 case 11: {
4517 $t32_33 = errors.New('mls: group info signature verification failed');
4518 return [null, $t32_33];
4519 break;
4520 }
4521 case 12: {
4522 $t33_34 = { $get() { return gs.$get().joinerSecret; }, $set(v) { const obj = gs.$get(); obj.joinerSecret = v; gs.$set(obj); } };
4523 $t34_35 = $t33_34.$get();
4524 $t35_36 = groupInfo$verifyConfirmationTag($t11_12, $t34_35, $t5_6);
4525 if ($t35_36) {
4526 $block = 14; break;
4527 }
4528 else {
4529 $block = 13; break;
4530 }
4531 break;
4532 }
4533 case 13: {
4534 $t36_37 = errors.New('mls: confirmation tag verification failed');
4535 return [null, $t36_37];
4536 break;
4537 }
4538 case 14: {
4539 $t37_38 = { $get() { return $t11_12.$get().groupContext; }, $set(v) { const obj = $t11_12.$get(); obj.groupContext = v; $t11_12.$set(obj); } };
4540 $t38_39 = { $get() { return $t37_38.$get().cipherSuite; }, $set(v) { const obj = $t37_38.$get(); obj.cipherSuite = v; $t37_38.$set(obj); } };
4541 $t39_40 = $t38_39.$get();
4542 $t40_41 = ($t39_40 !== $t1_2);
4543 if ($t40_41) {
4544 $block = 15; break;
4545 }
4546 else {
4547 $block = 16; break;
4548 }
4549 break;
4550 }
4551 case 15: {
4552 $t41_42 = errors.New('mls: group info cipher suite mismatch');
4553 return [null, $t41_42];
4554 break;
4555 }
4556 case 16: {
4557 $t42_43 = $t19_20.$get();
4558 $t43_44 = { $get() { return $t11_12.$get().groupContext; }, $set(v) { const obj = $t11_12.$get(); obj.groupContext = v; $t11_12.$set(obj); } };
4559 $t44_45 = ratchetTree$verifyIntegrity($t42_43, $t43_44, nowUnix);
4560 $t45_46 = ($t44_45 !== null);
4561 if ($t45_46) {
4562 $block = 17; break;
4563 }
4564 else {
4565 $block = 18; break;
4566 }
4567 break;
4568 }
4569 case 17: {
4570 return [null, $t44_45];
4571 break;
4572 }
4573 case 18: {
4574 $t46_47 = { $value: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4575 $t47_48 = { $get() { return $t11_12.$get().groupContext; }, $set(v) { const obj = $t11_12.$get(); obj.groupContext = v; $t11_12.$set(obj); } };
4576 $t48_49 = $t47_48.$get();
4577 $t46_47.$set($rt.builtin.cloneValue($t48_49));
4578 $t49_50 = { $get() { return gs.$get().joinerSecret; }, $set(v) { const obj = gs.$get(); obj.joinerSecret = v; gs.$set(obj); } };
4579 $t50_51 = $t49_50.$get();
4580 $t51_52 = groupContext$extractEpochSecret($t46_47, $t50_51, $t5_6);
4581 $t52_53 = $t51_52[0];
4582 $t53_54 = $t51_52[1];
4583 $t54_55 = ($t53_54 !== null);
4584 if ($t54_55) {
4585 $block = 19; break;
4586 }
4587 else {
4588 $block = 20; break;
4589 }
4590 break;
4591 }
4592 case 19: {
4593 return [null, $t53_54];
4594 break;
4595 }
4596 case 20: {
4597 $t55_56 = secretLabelInit.$get();
4598 $t56_57 = CipherSuite$deriveSecret($t1_2, $t52_53, $t55_56);
4599 $t57_58 = $t56_57[0];
4600 $t58_59 = $t56_57[1];
4601 $t59_60 = ($t58_59 !== null);
4602 if ($t59_60) {
4603 $block = 21; break;
4604 }
4605 else {
4606 $block = 22; break;
4607 }
4608 break;
4609 }
4610 case 21: {
4611 return [null, $t58_59];
4612 break;
4613 }
4614 case 22: {
4615 $t60_61 = { $get() { return $t46_47.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t46_47.$get(); obj.confirmedTranscriptHash = v; $t46_47.$set(obj); } };
4616 $t61_62 = $t60_61.$get();
4617 $t62_63 = { $get() { return $t11_12.$get().confirmationTag; }, $set(v) { const obj = $t11_12.$get(); obj.confirmationTag = v; $t11_12.$set(obj); } };
4618 $t63_64 = $t62_63.$get();
4619 $t64_65 = nextInterimTranscriptHash($t1_2, $t61_62, $t63_64);
4620 $t65_66 = $t64_65[0];
4621 $t66_67 = $t64_65[1];
4622 $t67_68 = ($t66_67 !== null);
4623 if ($t67_68) {
4624 $block = 23; break;
4625 }
4626 else {
4627 $block = 24; break;
4628 }
4629 break;
4630 }
4631 case 23: {
4632 return [null, $t66_67];
4633 break;
4634 }
4635 case 24: {
4636 $t68_69 = $t19_20.$get();
4637 $t69_70 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
4638 $t70_71 = { $get() { return $t69_70.$get().leafNode; }, $set(v) { const obj = $t69_70.$get(); obj.leafNode = v; $t69_70.$set(obj); } };
4639 $t71_72 = ratchetTree$findLeaf($t68_69, $t70_71);
4640 $t72_73 = $t71_72[0];
4641 $t73_74 = $t71_72[1];
4642 if ($t73_74) {
4643 $block = 26; break;
4644 }
4645 else {
4646 $block = 25; break;
4647 }
4648 break;
4649 }
4650 case 25: {
4651 $t74_75 = errors.New('mls: cannot find my leaf node in tree');
4652 return [null, $t74_75];
4653 break;
4654 }
4655 case 26: {
4656 $t75_76 = $t19_20.$get();
4657 $t76_77 = $rt.builtin.len($t75_76);
4658 $t77_78 = $rt.builtin.makeSlice($t76_77, $t76_77, null);
4659 $t78_79 = leafIndex$nodeIndex($t72_73);
4660 $t79_80 = $t78_79;
4661 $t80_81 = { $get() { return kpp.$get().Private; }, $set(v) { const obj = kpp.$get(); obj.Private = v; kpp.$set(obj); } };
4662 $t81_82 = { $get() { return $t80_81.$get().EncryptionKey; }, $set(v) { const obj = $t80_81.$get(); obj.EncryptionKey = v; $t80_81.$set(obj); } };
4663 $t82_83 = $t81_82.$get();
4664 $t83_84 = $t77_78.addr($t79_80);
4665 $t84_85 = $t82_83;
4666 $t83_84.$set($t84_85);
4667 $t85_86 = { $get() { return gs.$get().pathSecret; }, $set(v) { const obj = gs.$get(); obj.pathSecret = v; gs.$set(obj); } };
4668 $t86_87 = $t85_86.$get();
4669 $t87_88 = !$rt.builtin.stringEqual($t86_87, null);
4670 if ($t87_88) {
4671 $block = 27; break;
4672 }
4673 else {
4674 $block = 28; break;
4675 }
4676 break;
4677 }
4678 case 27: {
4679 $t88_89 = leafIndex$nodeIndex($t72_73);
4680 $t89_90 = { $get() { return $t11_12.$get().signer; }, $set(v) { const obj = $t11_12.$get(); obj.signer = v; $t11_12.$set(obj); } };
4681 $t90_91 = $t89_90.$get();
4682 $t91_92 = leafIndex$nodeIndex($t90_91);
4683 $t92_93 = commonAncestor($t88_89, $t91_92);
4684 $t93_94 = $t19_20.$get();
4685 $t94_95 = { $get() { return gs.$get().pathSecret; }, $set(v) { const obj = gs.$get(); obj.pathSecret = v; gs.$set(obj); } };
4686 $t95_96 = $t94_95.$get();
4687 $t96_97 = processPathSecret($t1_2, $t93_94, $t77_78, $t95_96, $t92_93);
4688 $t97_98 = ($t96_97 !== null);
4689 if ($t97_98) {
4690 $block = 29; break;
4691 }
4692 else {
4693 $block = 28; break;
4694 }
4695 break;
4696 }
4697 case 28: {
4698 $t98_99 = { $value: { tree: null, groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, interimTranscriptHash: null, pskSecret: null, epochSecret: null, initSecret: null, myLeafIndex: 0, privTree: null, signaturePriv: null, pendingProposals: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4699 $t99_100 = { $get() { return $t98_99.$get().tree; }, $set(v) { const obj = $t98_99.$get(); obj.tree = v; $t98_99.$set(obj); } };
4700 $t100_101 = $t19_20.$get();
4701 $t101_102 = { $get() { return $t98_99.$get().groupContext; }, $set(v) { const obj = $t98_99.$get(); obj.groupContext = v; $t98_99.$set(obj); } };
4702 $t102_103 = $t46_47.$get();
4703 $t103_104 = { $get() { return $t98_99.$get().interimTranscriptHash; }, $set(v) { const obj = $t98_99.$get(); obj.interimTranscriptHash = v; $t98_99.$set(obj); } };
4704 $t104_105 = { $get() { return $t98_99.$get().pskSecret; }, $set(v) { const obj = $t98_99.$get(); obj.pskSecret = v; $t98_99.$set(obj); } };
4705 $t105_106 = { $get() { return $t98_99.$get().epochSecret; }, $set(v) { const obj = $t98_99.$get(); obj.epochSecret = v; $t98_99.$set(obj); } };
4706 $t106_107 = { $get() { return $t98_99.$get().initSecret; }, $set(v) { const obj = $t98_99.$get(); obj.initSecret = v; $t98_99.$set(obj); } };
4707 $t107_108 = { $get() { return $t98_99.$get().myLeafIndex; }, $set(v) { const obj = $t98_99.$get(); obj.myLeafIndex = v; $t98_99.$set(obj); } };
4708 $t108_109 = { $get() { return $t98_99.$get().privTree; }, $set(v) { const obj = $t98_99.$get(); obj.privTree = v; $t98_99.$set(obj); } };
4709 $t109_110 = { $get() { return $t98_99.$get().signaturePriv; }, $set(v) { const obj = $t98_99.$get(); obj.signaturePriv = v; $t98_99.$set(obj); } };
4710 $t110_111 = { $get() { return kpp.$get().Private; }, $set(v) { const obj = kpp.$get(); obj.Private = v; kpp.$set(obj); } };
4711 $t111_112 = { $get() { return $t110_111.$get().SignatureKey; }, $set(v) { const obj = $t110_111.$get(); obj.SignatureKey = v; $t110_111.$set(obj); } };
4712 $t112_113 = $t111_112.$get();
4713 $t99_100.$set($t100_101);
4714 $t101_102.$set($rt.builtin.cloneValue($t102_103));
4715 $t103_104.$set($t65_66);
4716 $t104_105.$set($t5_6);
4717 $t105_106.$set($t52_53);
4718 $t106_107.$set($t57_58);
4719 $t107_108.$set($t72_73);
4720 $t108_109.$set($t77_78);
4721 $t113_114 = $t112_113;
4722 $t109_110.$set($t113_114);
4723 return [$t98_99, null];
4724 break;
4725 }
4726 case 29: {
4727 return [null, $t96_97];
4728 break;
4729 }
4730 }
4731 }
4732 }
4733
4734 export function processPathSecret(cs, tree, privTree, pathSecret, ni) {
4735 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26;
4736 let $block = 0;
4737 while (true) {
4738 switch ($block) {
4739 case 0: {
4740 $t0_1 = ratchetTree$get(tree, ni);
4741 $t1_2 = node$encryptionKey($t0_1);
4742 $t2_3 = nodePrivFromPathSecret(cs, pathSecret, $t1_2);
4743 $t3_4 = $t2_3[0];
4744 $t4_5 = $t2_3[1];
4745 $t5_6 = ($t4_5 !== null);
4746 if ($t5_6) {
4747 $block = 1; break;
4748 }
4749 else {
4750 $block = 2; break;
4751 }
4752 break;
4753 }
4754 case 1: {
4755 return $t4_5;
4756 break;
4757 }
4758 case 2: {
4759 $t6_7 = ni;
4760 $t7_8 = privTree.addr($t6_7);
4761 $t7_8.$set($t3_4);
4762 $t8_9 = pathSecret;
4763 $t9_10 = ni;
4764 $block = 3; break;
4765 break;
4766 }
4767 case 3: {
4768 $t10_11 = ratchetTree$numLeaves(tree);
4769 $t11_12 = numLeaves$parent($t10_11, $t9_10);
4770 $t12_13 = $t11_12[0];
4771 $t13_14 = $t11_12[1];
4772 if ($t13_14) {
4773 $block = 5; break;
4774 }
4775 else {
4776 $block = 4; break;
4777 }
4778 break;
4779 }
4780 case 4: {
4781 return null;
4782 break;
4783 }
4784 case 5: {
4785 $t14_15 = CipherSuite$deriveSecret(cs, $t8_9, 'path');
4786 $t15_16 = $t14_15[0];
4787 $t16_17 = $t14_15[1];
4788 $t17_18 = ($t16_17 !== null);
4789 if ($t17_18) {
4790 $block = 6; break;
4791 }
4792 else {
4793 $block = 7; break;
4794 }
4795 break;
4796 }
4797 case 6: {
4798 return $t16_17;
4799 break;
4800 }
4801 case 7: {
4802 $t18_19 = ratchetTree$get(tree, $t12_13);
4803 $t19_20 = node$encryptionKey($t18_19);
4804 $t20_21 = nodePrivFromPathSecret(cs, $t15_16, $t19_20);
4805 $t21_22 = $t20_21[0];
4806 $t22_23 = $t20_21[1];
4807 $t23_24 = ($t22_23 !== null);
4808 if ($t23_24) {
4809 $block = 8; break;
4810 }
4811 else {
4812 $block = 9; break;
4813 }
4814 break;
4815 }
4816 case 8: {
4817 return $t22_23;
4818 break;
4819 }
4820 case 9: {
4821 $t24_25 = $t12_13;
4822 $t25_26 = privTree.addr($t24_25);
4823 $t25_26.$set($t21_22);
4824 $t8_9 = $t15_16;
4825 $t9_10 = $t12_13;
4826 $block = 3; break;
4827 break;
4828 }
4829 }
4830 }
4831 }
4832
4833 export function resolveProposals(propOrRefs, senderLI, pending) {
4834 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53;
4835 let $block = 0;
4836 while (true) {
4837 switch ($block) {
4838 case 0: {
4839 $t0_1 = $rt.builtin.len(propOrRefs);
4840 $t1_2 = null;
4841 $t2_3 = null;
4842 $t3_4 = -1;
4843 $block = 1; break;
4844 break;
4845 }
4846 case 1: {
4847 $t4_5 = ($t3_4 + 1);
4848 $t5_6 = ($t4_5 < $t0_1);
4849 if ($t5_6) {
4850 $block = 2; break;
4851 }
4852 else {
4853 $block = 3; break;
4854 }
4855 break;
4856 }
4857 case 2: {
4858 $t6_7 = propOrRefs.addr($t4_5);
4859 $t7_8 = $t6_7.$get();
4860 $t8_9 = { $value: { typ: 0, proposal: null, reference: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4861 $t8_9.$set($rt.builtin.cloneValue($t7_8));
4862 $t9_10 = { $get() { return $t8_9.$get().typ; }, $set(v) { const obj = $t8_9.$get(); obj.typ = v; $t8_9.$set(obj); } };
4863 $t10_11 = $t9_10.$get();
4864 $t11_12 = ($t10_11 === 1);
4865 if ($t11_12) {
4866 $block = 4; break;
4867 }
4868 else {
4869 $block = 6; break;
4870 }
4871 break;
4872 }
4873 case 3: {
4874 return [$t1_2, $t2_3, null];
4875 break;
4876 }
4877 case 4: {
4878 $t12_13 = { $get() { return $t8_9.$get().proposal; }, $set(v) { const obj = $t8_9.$get(); obj.proposal = v; $t8_9.$set(obj); } };
4879 $t13_14 = $t12_13.$get();
4880 $t14_15 = $t13_14.$get();
4881 $t15_16 = { $value: $rt.builtin.makeSlice(1, 1, { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4882 $t16_17 = $t15_16.$get().addr(0);
4883 $t16_17.$set($rt.builtin.cloneValue($t14_15));
4884 $t17_18 = $rt.builtin.sliceSlice($t15_16.$get(), undefined, undefined, undefined);
4885 $t18_19 = $rt.builtin.appendSlice($t1_2, $t17_18);
4886 $t19_20 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4887 $t20_21 = $t19_20.$get().addr(0);
4888 $t20_21.$set(senderLI);
4889 $t21_22 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
4890 $t22_23 = $rt.builtin.appendSlice($t2_3, $t21_22);
4891 $t1_2 = $t18_19;
4892 $t2_3 = $t22_23;
4893 $t3_4 = $t4_5;
4894 $block = 1; break;
4895 break;
4896 }
4897 case 5: {
4898 $t23_24 = $rt.builtin.len(pending);
4899 $t25_26 = -1;
4900 $block = 7; break;
4901 break;
4902 }
4903 case 6: {
4904 $t24_25 = ($t10_11 === 2);
4905 if ($t24_25) {
4906 $block = 5; break;
4907 }
4908 else {
4909 let $phi0 = $t1_2;
4910 let $phi1 = $t2_3;
4911 let $phi2 = $t4_5;
4912 $t1_2 = $phi0;
4913 $t2_3 = $phi1;
4914 $t3_4 = $phi2;
4915 $block = 1; break;
4916 }
4917 break;
4918 }
4919 case 7: {
4920 $t26_27 = ($t25_26 + 1);
4921 $t27_28 = ($t26_27 < $t23_24);
4922 if ($t27_28) {
4923 $block = 8; break;
4924 }
4925 else {
4926 $t36_37 = $t1_2;
4927 $t37_38 = $t2_3;
4928 $t38_39 = false;
4929 $block = 9; break;
4930 }
4931 break;
4932 }
4933 case 8: {
4934 $t28_29 = pending.addr($t26_27);
4935 $t29_30 = $t28_29.$get();
4936 $t30_31 = { $value: { ref: null, proposal: null, sender: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
4937 $t30_31.$set($rt.builtin.cloneValue($t29_30));
4938 $t31_32 = { $get() { return $t30_31.$get().ref; }, $set(v) { const obj = $t30_31.$get(); obj.ref = v; $t30_31.$set(obj); } };
4939 $t32_33 = $t31_32.$get();
4940 $t33_34 = { $get() { return $t8_9.$get().reference; }, $set(v) { const obj = $t8_9.$get(); obj.reference = v; $t8_9.$set(obj); } };
4941 $t34_35 = $t33_34.$get();
4942 $t35_36 = proposalRef$equal($t32_33, $t34_35);
4943 if ($t35_36) {
4944 $block = 10; break;
4945 }
4946 else {
4947 $t25_26 = $t26_27;
4948 $block = 7; break;
4949 }
4950 break;
4951 }
4952 case 9: {
4953 if ($t38_39) {
4954 $t1_2 = $t36_37;
4955 $t2_3 = $t37_38;
4956 $t3_4 = $t4_5;
4957 $block = 1; break;
4958 }
4959 else {
4960 $block = 11; break;
4961 }
4962 break;
4963 }
4964 case 10: {
4965 $t39_40 = { $get() { return $t30_31.$get().proposal; }, $set(v) { const obj = $t30_31.$get(); obj.proposal = v; $t30_31.$set(obj); } };
4966 $t40_41 = $t39_40.$get();
4967 $t41_42 = $t40_41.$get();
4968 $t42_43 = { $value: $rt.builtin.makeSlice(1, 1, { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4969 $t43_44 = $t42_43.$get().addr(0);
4970 $t43_44.$set($rt.builtin.cloneValue($t41_42));
4971 $t44_45 = $rt.builtin.sliceSlice($t42_43.$get(), undefined, undefined, undefined);
4972 $t45_46 = $rt.builtin.appendSlice($t1_2, $t44_45);
4973 $t46_47 = { $get() { return $t30_31.$get().sender; }, $set(v) { const obj = $t30_31.$get(); obj.sender = v; $t30_31.$set(obj); } };
4974 $t47_48 = $t46_47.$get();
4975 $t48_49 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
4976 $t49_50 = $t48_49.$get().addr(0);
4977 $t49_50.$set($t47_48);
4978 $t50_51 = $rt.builtin.sliceSlice($t48_49.$get(), undefined, undefined, undefined);
4979 $t51_52 = $rt.builtin.appendSlice($t2_3, $t50_51);
4980 $t36_37 = $t45_46;
4981 $t37_38 = $t51_52;
4982 $t38_39 = true;
4983 $block = 9; break;
4984 break;
4985 }
4986 case 11: {
4987 $t52_53 = errors.New('mls: proposal reference not found');
4988 return [null, null, $t52_53];
4989 break;
4990 }
4991 }
4992 }
4993 }
4994
4995 export function UnmarshalWelcome(raw) {
4996 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
4997 let $block = 0;
4998 while (true) {
4999 switch ($block) {
5000 case 0: {
5001 $t0_1 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5002 $t1_2 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t0_1);
5003 $t2_3 = unmarshalRaw(raw, $t1_2);
5004 $t3_4 = ($t2_3 !== null);
5005 if ($t3_4) {
5006 $block = 1; break;
5007 }
5008 else {
5009 $block = 2; break;
5010 }
5011 break;
5012 }
5013 case 1: {
5014 return [null, $t2_3];
5015 break;
5016 }
5017 case 2: {
5018 $t4_5 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
5019 $t5_6 = $t4_5.$get();
5020 $t6_7 = ($t5_6 !== 3);
5021 if ($t6_7) {
5022 $block = 3; break;
5023 }
5024 else {
5025 $block = 4; break;
5026 }
5027 break;
5028 }
5029 case 3: {
5030 $t7_8 = errInvalidWireFormat.$get();
5031 return [null, $t7_8];
5032 break;
5033 }
5034 case 4: {
5035 $t8_9 = { $get() { return $t0_1.$get().welcome; }, $set(v) { const obj = $t0_1.$get(); obj.welcome = v; $t0_1.$set(obj); } };
5036 $t9_10 = $t8_9.$get();
5037 return [$t9_10, null];
5038 break;
5039 }
5040 }
5041 }
5042 }
5043
5044 export function UnmarshalKeyPackage(raw) {
5045 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
5046 let $block = 0;
5047 while (true) {
5048 switch ($block) {
5049 case 0: {
5050 $t0_1 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5051 $t1_2 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t0_1);
5052 $t2_3 = unmarshalRaw(raw, $t1_2);
5053 $t3_4 = ($t2_3 !== null);
5054 if ($t3_4) {
5055 $block = 1; break;
5056 }
5057 else {
5058 $block = 2; break;
5059 }
5060 break;
5061 }
5062 case 1: {
5063 return [null, $t2_3];
5064 break;
5065 }
5066 case 2: {
5067 $t4_5 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
5068 $t5_6 = $t4_5.$get();
5069 $t6_7 = ($t5_6 !== 5);
5070 if ($t6_7) {
5071 $block = 3; break;
5072 }
5073 else {
5074 $block = 4; break;
5075 }
5076 break;
5077 }
5078 case 3: {
5079 $t7_8 = errInvalidWireFormat.$get();
5080 return [null, $t7_8];
5081 break;
5082 }
5083 case 4: {
5084 $t8_9 = { $get() { return $t0_1.$get().keyPackage; }, $set(v) { const obj = $t0_1.$get(); obj.keyPackage = v; $t0_1.$set(obj); } };
5085 $t9_10 = $t8_9.$get();
5086 return [$t9_10, null];
5087 break;
5088 }
5089 }
5090 }
5091 }
5092
5093 export function UnmarshalRawKeyPackage(raw) {
5094 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
5095 let $block = 0;
5096 while (true) {
5097 switch ($block) {
5098 case 0: {
5099 $t0_1 = { $value: { data: null, pos: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5100 $t1_2 = newReader(raw);
5101 $t0_1.$set($rt.builtin.cloneValue($t1_2));
5102 $t2_3 = { $value: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5103 $t3_4 = KeyPackage$unmarshal($t2_3, $t0_1);
5104 $t4_5 = ($t3_4 !== null);
5105 if ($t4_5) {
5106 $block = 1; break;
5107 }
5108 else {
5109 $block = 2; break;
5110 }
5111 break;
5112 }
5113 case 1: {
5114 return [null, $t3_4];
5115 break;
5116 }
5117 case 2: {
5118 $t5_6 = Reader$empty($t0_1);
5119 if ($t5_6) {
5120 $block = 4; break;
5121 }
5122 else {
5123 $block = 3; break;
5124 }
5125 break;
5126 }
5127 case 3: {
5128 $t6_7 = errExcessBytes.$get();
5129 return [null, $t6_7];
5130 break;
5131 }
5132 case 4: {
5133 return [$t2_3, null];
5134 break;
5135 }
5136 }
5137 }
5138 }
5139
5140 export function GenerateKeyPairPackage(cs, credential, nowUnix) {
5141 let $t0_1, $t1_2, $t2_3;
5142 $t0_1 = GenerateKeyPairPackageWithOptions(cs, credential, null, nowUnix);
5143 $t1_2 = $t0_1[0];
5144 $t2_3 = $t0_1[1];
5145 return [$t1_2, $t2_3];
5146 }
5147
5148 export function GenerateKeyPairPackageWithOptions(cs, credential, opts, nowUnix) {
5149 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85;
5150 let $block = 0;
5151 while (true) {
5152 switch ($block) {
5153 case 0: {
5154 $t0_1 = CipherSuite$generateEncryptionKeyPair(cs);
5155 $t1_2 = $t0_1[0];
5156 $t2_3 = $t0_1[1];
5157 $t3_4 = $t0_1[2];
5158 $t4_5 = ($t3_4 !== null);
5159 if ($t4_5) {
5160 $block = 1; break;
5161 }
5162 else {
5163 $block = 2; break;
5164 }
5165 break;
5166 }
5167 case 1: {
5168 return [null, $t3_4];
5169 break;
5170 }
5171 case 2: {
5172 $t5_6 = CipherSuite$generateEncryptionKeyPair(cs);
5173 $t6_7 = $t5_6[0];
5174 $t7_8 = $t5_6[1];
5175 $t8_9 = $t5_6[2];
5176 $t9_10 = ($t8_9 !== null);
5177 if ($t9_10) {
5178 $block = 3; break;
5179 }
5180 else {
5181 $block = 4; break;
5182 }
5183 break;
5184 }
5185 case 3: {
5186 return [null, $t8_9];
5187 break;
5188 }
5189 case 4: {
5190 $t10_11 = CipherSuite$generateSignatureKeyPair(cs);
5191 $t11_12 = $t10_11[0];
5192 $t12_13 = $t10_11[1];
5193 $t13_14 = $t10_11[2];
5194 $t14_15 = ($t13_14 !== null);
5195 if ($t14_15) {
5196 $block = 5; break;
5197 }
5198 else {
5199 $block = 6; break;
5200 }
5201 break;
5202 }
5203 case 5: {
5204 return [null, $t13_14];
5205 break;
5206 }
5207 case 6: {
5208 $t15_16 = (opts !== null);
5209 if ($t15_16) {
5210 $block = 7; break;
5211 }
5212 else {
5213 $t22_23 = null;
5214 $t23_24 = null;
5215 $t24_25 = null;
5216 $block = 8; break;
5217 }
5218 break;
5219 }
5220 case 7: {
5221 $t16_17 = { $get() { return opts.$get().CapabilityExtensions; }, $set(v) { const obj = opts.$get(); obj.CapabilityExtensions = v; opts.$set(obj); } };
5222 $t17_18 = $t16_17.$get();
5223 $t18_19 = { $get() { return opts.$get().LeafExtensions; }, $set(v) { const obj = opts.$get(); obj.LeafExtensions = v; opts.$set(obj); } };
5224 $t19_20 = $t18_19.$get();
5225 $t20_21 = { $get() { return opts.$get().KeyPackageExtensions; }, $set(v) { const obj = opts.$get(); obj.KeyPackageExtensions = v; opts.$set(obj); } };
5226 $t21_22 = $t20_21.$get();
5227 $t22_23 = $t17_18;
5228 $t23_24 = $t19_20;
5229 $t24_25 = $t21_22;
5230 $block = 8; break;
5231 break;
5232 }
5233 case 8: {
5234 $t25_26 = ($t22_23 === null);
5235 if ($t25_26) {
5236 $block = 9; break;
5237 }
5238 else {
5239 $t29_30 = $t22_23;
5240 $block = 10; break;
5241 }
5242 break;
5243 }
5244 case 9: {
5245 $t26_27 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5246 $t27_28 = $t26_27.$get().addr(0);
5247 $t27_28.$set(2);
5248 $t28_29 = $rt.builtin.sliceSlice($t26_27.$get(), undefined, undefined, undefined);
5249 $t29_30 = $t28_29;
5250 $block = 10; break;
5251 break;
5252 }
5253 case 10: {
5254 $t30_31 = BigInt.asIntN(64, nowUnix - 3600n);
5255 $t31_32 = BigInt.asIntN(64, nowUnix + 7257600n);
5256 $t32_33 = { $value: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5257 $t33_34 = { $get() { return $t32_33.$get().version; }, $set(v) { const obj = $t32_33.$get(); obj.version = v; $t32_33.$set(obj); } };
5258 $t34_35 = { $get() { return $t32_33.$get().cipherSuite; }, $set(v) { const obj = $t32_33.$get(); obj.cipherSuite = v; $t32_33.$set(obj); } };
5259 $t35_36 = { $get() { return $t32_33.$get().initKey; }, $set(v) { const obj = $t32_33.$get(); obj.initKey = v; $t32_33.$set(obj); } };
5260 $t36_37 = { $get() { return $t32_33.$get().leafNode; }, $set(v) { const obj = $t32_33.$get(); obj.leafNode = v; $t32_33.$set(obj); } };
5261 $t37_38 = { $get() { return $t36_37.$get().encryptionKey; }, $set(v) { const obj = $t36_37.$get(); obj.encryptionKey = v; $t36_37.$set(obj); } };
5262 $t38_39 = { $get() { return $t36_37.$get().signatureKey; }, $set(v) { const obj = $t36_37.$get(); obj.signatureKey = v; $t36_37.$set(obj); } };
5263 $t39_40 = { $get() { return $t36_37.$get().leafNodeSource; }, $set(v) { const obj = $t36_37.$get(); obj.leafNodeSource = v; $t36_37.$set(obj); } };
5264 $t40_41 = { $get() { return $t36_37.$get().credential; }, $set(v) { const obj = $t36_37.$get(); obj.credential = v; $t36_37.$set(obj); } };
5265 $t41_42 = credential.$get();
5266 $t42_43 = { $get() { return $t36_37.$get().capabilities; }, $set(v) { const obj = $t36_37.$get(); obj.capabilities = v; $t36_37.$set(obj); } };
5267 $t43_44 = { $get() { return $t42_43.$get().versions; }, $set(v) { const obj = $t42_43.$get(); obj.versions = v; $t42_43.$set(obj); } };
5268 $t44_45 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5269 $t45_46 = $t44_45.$get().addr(0);
5270 $t45_46.$set(1);
5271 $t46_47 = $rt.builtin.sliceSlice($t44_45.$get(), undefined, undefined, undefined);
5272 $t47_48 = { $get() { return $t42_43.$get().cipherSuites; }, $set(v) { const obj = $t42_43.$get(); obj.cipherSuites = v; $t42_43.$set(obj); } };
5273 $t48_49 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5274 $t49_50 = $t48_49.$get().addr(0);
5275 $t49_50.$set(cs);
5276 $t50_51 = $rt.builtin.sliceSlice($t48_49.$get(), undefined, undefined, undefined);
5277 $t51_52 = { $get() { return $t42_43.$get().extensions; }, $set(v) { const obj = $t42_43.$get(); obj.extensions = v; $t42_43.$set(obj); } };
5278 $t52_53 = { $get() { return $t42_43.$get().proposals; }, $set(v) { const obj = $t42_43.$get(); obj.proposals = v; $t42_43.$set(obj); } };
5279 $t53_54 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5280 $t54_55 = $t53_54.$get().addr(0);
5281 $t54_55.$set(1);
5282 $t55_56 = $t53_54.$get().addr(1);
5283 $t55_56.$set(2);
5284 $t56_57 = $t53_54.$get().addr(2);
5285 $t56_57.$set(3);
5286 $t57_58 = $rt.builtin.sliceSlice($t53_54.$get(), undefined, undefined, undefined);
5287 $t58_59 = { $get() { return $t42_43.$get().credentials; }, $set(v) { const obj = $t42_43.$get(); obj.credentials = v; $t42_43.$set(obj); } };
5288 $t59_60 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5289 $t60_61 = $t59_60.$get().addr(0);
5290 $t60_61.$set(1);
5291 $t61_62 = $rt.builtin.sliceSlice($t59_60.$get(), undefined, undefined, undefined);
5292 $t62_63 = { $get() { return $t36_37.$get().lifetime; }, $set(v) { const obj = $t36_37.$get(); obj.lifetime = v; $t36_37.$set(obj); } };
5293 $t63_64 = { $value: { notBefore: 0n, notAfter: 0n }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5294 $t64_65 = { $get() { return $t63_64.$get().notBefore; }, $set(v) { const obj = $t63_64.$get(); obj.notBefore = v; $t63_64.$set(obj); } };
5295 $t65_66 = BigInt.asUintN(64, BigInt($t30_31));
5296 $t66_67 = { $get() { return $t63_64.$get().notAfter; }, $set(v) { const obj = $t63_64.$get(); obj.notAfter = v; $t63_64.$set(obj); } };
5297 $t67_68 = BigInt.asUintN(64, BigInt($t31_32));
5298 $t64_65.$set($t65_66);
5299 $t66_67.$set($t67_68);
5300 $t68_69 = { $get() { return $t36_37.$get().extensions; }, $set(v) { const obj = $t36_37.$get(); obj.extensions = v; $t36_37.$set(obj); } };
5301 $t69_70 = { $get() { return $t32_33.$get().extensions; }, $set(v) { const obj = $t32_33.$get(); obj.extensions = v; $t32_33.$set(obj); } };
5302 $t33_34.$set(1);
5303 $t34_35.$set(cs);
5304 $t35_36.$set($t1_2);
5305 $t37_38.$set($t6_7);
5306 $t38_39.$set($t11_12);
5307 $t39_40.$set(1);
5308 $t40_41.$set($rt.builtin.cloneValue($t41_42));
5309 $t43_44.$set($t46_47);
5310 $t47_48.$set($t50_51);
5311 $t51_52.$set($t29_30);
5312 $t52_53.$set($t57_58);
5313 $t58_59.$set($t61_62);
5314 $t62_63.$set($t63_64);
5315 $t68_69.$set($t23_24);
5316 $t69_70.$set($t24_25);
5317 $t70_71 = { $get() { return $t32_33.$get().leafNode; }, $set(v) { const obj = $t32_33.$get(); obj.leafNode = v; $t32_33.$set(obj); } };
5318 $t71_72 = leafNode$sign($t70_71, cs, null, 0, $t12_13);
5319 $t72_73 = ($t71_72 !== null);
5320 if ($t72_73) {
5321 $block = 11; break;
5322 }
5323 else {
5324 $block = 12; break;
5325 }
5326 break;
5327 }
5328 case 11: {
5329 return [null, $t71_72];
5330 break;
5331 }
5332 case 12: {
5333 $t73_74 = KeyPackage$sign($t32_33, $t12_13);
5334 $t74_75 = ($t73_74 !== null);
5335 if ($t74_75) {
5336 $block = 13; break;
5337 }
5338 else {
5339 $block = 14; break;
5340 }
5341 break;
5342 }
5343 case 13: {
5344 return [null, $t73_74];
5345 break;
5346 }
5347 case 14: {
5348 $t75_76 = { $value: { Public: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }, Private: { InitKey: null, EncryptionKey: null, SignatureKey: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5349 $t76_77 = { $get() { return $t75_76.$get().Public; }, $set(v) { const obj = $t75_76.$get(); obj.Public = v; $t75_76.$set(obj); } };
5350 $t77_78 = $t32_33.$get();
5351 $t78_79 = { $get() { return $t75_76.$get().Private; }, $set(v) { const obj = $t75_76.$get(); obj.Private = v; $t75_76.$set(obj); } };
5352 $t79_80 = { $get() { return $t78_79.$get().InitKey; }, $set(v) { const obj = $t78_79.$get(); obj.InitKey = v; $t78_79.$set(obj); } };
5353 $t80_81 = { $get() { return $t78_79.$get().EncryptionKey; }, $set(v) { const obj = $t78_79.$get(); obj.EncryptionKey = v; $t78_79.$set(obj); } };
5354 $t81_82 = { $get() { return $t78_79.$get().SignatureKey; }, $set(v) { const obj = $t78_79.$get(); obj.SignatureKey = v; $t78_79.$set(obj); } };
5355 $t76_77.$set($rt.builtin.cloneValue($t77_78));
5356 $t82_83 = $t2_3;
5357 $t79_80.$set($t82_83);
5358 $t83_84 = $t7_8;
5359 $t80_81.$set($t83_84);
5360 $t84_85 = $t12_13;
5361 $t81_82.$set($t84_85);
5362 return [$t75_76, null];
5363 break;
5364 }
5365 }
5366 }
5367 }
5368
5369 export function extractWelcomeSecret(cs, joinerSecret, pskSecret) {
5370 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
5371 let $block = 0;
5372 while (true) {
5373 switch ($block) {
5374 case 0: {
5375 $t0_1 = $rt.builtin.stringEqual(pskSecret, null);
5376 if ($t0_1) {
5377 $block = 1; break;
5378 }
5379 else {
5380 $t3_4 = pskSecret;
5381 $block = 2; break;
5382 }
5383 break;
5384 }
5385 case 1: {
5386 $t1_2 = CipherSuite$ExtractSize(cs);
5387 $t2_3 = $rt.builtin.makeSlice($t1_2, $t1_2, 0);
5388 $t3_4 = $t2_3;
5389 $block = 2; break;
5390 break;
5391 }
5392 case 2: {
5393 $t4_5 = CipherSuite$hkdfExtract(cs, joinerSecret, $t3_4);
5394 $t5_6 = CipherSuite$deriveSecret(cs, $t4_5, 'welcome');
5395 $t6_7 = $t5_6[0];
5396 $t7_8 = $t5_6[1];
5397 return [$t6_7, $t7_8];
5398 break;
5399 }
5400 }
5401 }
5402 }
5403
5404 export function deriveExporter(cs, exporterSecret, label, context, length) {
5405 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
5406 let $block = 0;
5407 while (true) {
5408 switch ($block) {
5409 case 0: {
5410 $t0_1 = CipherSuite$deriveSecret(cs, exporterSecret, label);
5411 $t1_2 = $t0_1[0];
5412 $t2_3 = $t0_1[1];
5413 $t3_4 = ($t2_3 !== null);
5414 if ($t3_4) {
5415 $block = 1; break;
5416 }
5417 else {
5418 $block = 2; break;
5419 }
5420 break;
5421 }
5422 case 1: {
5423 return [null, $t2_3];
5424 break;
5425 }
5426 case 2: {
5427 $t4_5 = CipherSuite$hash(cs, context);
5428 $t5_6 = CipherSuite$expandWithLabel(cs, $t1_2, 'exported', $t4_5, length);
5429 $t6_7 = $t5_6[0];
5430 $t7_8 = $t5_6[1];
5431 return [$t6_7, $t7_8];
5432 break;
5433 }
5434 }
5435 }
5436 }
5437
5438 export function nextInterimTranscriptHash(cs, confirmedTranscriptHash, confirmationTag) {
5439 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
5440 let $block = 0;
5441 while (true) {
5442 switch ($block) {
5443 case 0: {
5444 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5445 $t1_2 = Writer$writeOpaqueVec($t0_1, confirmationTag);
5446 $t2_3 = Writer$bytes($t0_1);
5447 $t3_4 = $t2_3[0];
5448 $t4_5 = $t2_3[1];
5449 $t5_6 = ($t4_5 !== null);
5450 if ($t5_6) {
5451 $block = 1; break;
5452 }
5453 else {
5454 $block = 2; break;
5455 }
5456 break;
5457 }
5458 case 1: {
5459 return [null, $t4_5];
5460 break;
5461 }
5462 case 2: {
5463 $t6_7 = $rt.builtin.appendSlice(confirmedTranscriptHash, $t3_4);
5464 $t7_8 = CipherSuite$hash(cs, $t6_7);
5465 return [$t7_8, null];
5466 break;
5467 }
5468 }
5469 }
5470 }
5471
5472 export function extractPSKSecret(cs, pskIDs, psks) {
5473 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35;
5474 let $block = 0;
5475 while (true) {
5476 switch ($block) {
5477 case 0: {
5478 $t0_1 = $rt.builtin.len(pskIDs);
5479 $t1_2 = $rt.builtin.len(psks);
5480 $t2_3 = ($t0_1 !== $t1_2);
5481 if ($t2_3) {
5482 $block = 1; break;
5483 }
5484 else {
5485 $block = 2; break;
5486 }
5487 break;
5488 }
5489 case 1: {
5490 $t3_4 = errors.New('mls: PSK ID count != PSK count');
5491 return [null, $t3_4];
5492 break;
5493 }
5494 case 2: {
5495 $t4_5 = CipherSuite$ExtractSize(cs);
5496 $t5_6 = $rt.builtin.makeSlice($t4_5, $t4_5, 0);
5497 $t6_7 = $rt.builtin.len(pskIDs);
5498 $t7_8 = $t5_6;
5499 $t8_9 = -1;
5500 $block = 3; break;
5501 break;
5502 }
5503 case 3: {
5504 $t9_10 = ($t8_9 + 1);
5505 $t10_11 = ($t9_10 < $t6_7);
5506 if ($t10_11) {
5507 $block = 4; break;
5508 }
5509 else {
5510 $block = 5; break;
5511 }
5512 break;
5513 }
5514 case 4: {
5515 $t11_12 = psks.addr($t9_10);
5516 $t12_13 = $t11_12.$get();
5517 $t13_14 = CipherSuite$hkdfExtract(cs, $t12_13, $t5_6);
5518 $t14_15 = { $value: { id: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }, index: 0, count: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5519 $t15_16 = { $get() { return $t14_15.$get().id; }, $set(v) { const obj = $t14_15.$get(); obj.id = v; $t14_15.$set(obj); } };
5520 $t16_17 = pskIDs.addr($t9_10);
5521 $t17_18 = $t16_17.$get();
5522 $t18_19 = { $get() { return $t14_15.$get().index; }, $set(v) { const obj = $t14_15.$get(); obj.index = v; $t14_15.$set(obj); } };
5523 $t19_20 = ($t9_10 & 0xFFFF);
5524 $t20_21 = { $get() { return $t14_15.$get().count; }, $set(v) { const obj = $t14_15.$get(); obj.count = v; $t14_15.$set(obj); } };
5525 $t21_22 = $rt.builtin.len(pskIDs);
5526 $t22_23 = ($t21_22 & 0xFFFF);
5527 $t15_16.$set($rt.builtin.cloneValue($t17_18));
5528 $t18_19.$set($t19_20);
5529 $t20_21.$set($t22_23);
5530 $t23_24 = $rt.types.makeInterface('*smesh.lol/web/common/mls.pskLabel', $t14_15);
5531 $t24_25 = marshalRaw($t23_24);
5532 $t25_26 = $t24_25[0];
5533 $t26_27 = $t24_25[1];
5534 $t27_28 = ($t26_27 !== null);
5535 if ($t27_28) {
5536 $block = 6; break;
5537 }
5538 else {
5539 $block = 7; break;
5540 }
5541 break;
5542 }
5543 case 5: {
5544 return [$t7_8, null];
5545 break;
5546 }
5547 case 6: {
5548 return [null, $t26_27];
5549 break;
5550 }
5551 case 7: {
5552 $t28_29 = CipherSuite$ExtractSize(cs);
5553 $t29_30 = ($t28_29 & 0xFFFF);
5554 $t30_31 = CipherSuite$expandWithLabel(cs, $t13_14, 'derived psk', $t25_26, $t29_30);
5555 $t31_32 = $t30_31[0];
5556 $t32_33 = $t30_31[1];
5557 $t33_34 = ($t32_33 !== null);
5558 if ($t33_34) {
5559 $block = 8; break;
5560 }
5561 else {
5562 $block = 9; break;
5563 }
5564 break;
5565 }
5566 case 8: {
5567 return [null, $t32_33];
5568 break;
5569 }
5570 case 9: {
5571 $t34_35 = CipherSuite$hkdfExtract(cs, $t7_8, $t31_32);
5572 $t7_8 = $t34_35;
5573 $t8_9 = $t9_10;
5574 $block = 3; break;
5575 break;
5576 }
5577 }
5578 }
5579 }
5580
5581 export function verifyProposalList(proposals, senders, committer) {
5582 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77;
5583 let $block = 0;
5584 while (true) {
5585 switch ($block) {
5586 case 0: {
5587 $t0_1 = $rt.builtin.len(proposals);
5588 $t1_2 = $rt.builtin.len(senders);
5589 $t2_3 = ($t0_1 !== $t1_2);
5590 if ($t2_3) {
5591 $block = 1; break;
5592 }
5593 else {
5594 $block = 2; break;
5595 }
5596 break;
5597 }
5598 case 1: {
5599 $t3_4 = $rt.types.makeInterface('string', 'unreachable');
5600 $rt.runtime.panic($t3_4);
5601 break;
5602 }
5603 case 2: {
5604 $t4_5 = $rt.builtin.makeMap('string');
5605 $t5_6 = $rt.builtin.makeMap('int');
5606 $t6_7 = $rt.builtin.makeMap('string');
5607 $t7_8 = $rt.builtin.len(proposals);
5608 $t8_9 = false;
5609 $t9_10 = -1;
5610 $block = 3; break;
5611 break;
5612 }
5613 case 3: {
5614 $t10_11 = ($t9_10 + 1);
5615 $t11_12 = ($t10_11 < $t7_8);
5616 if ($t11_12) {
5617 $block = 4; break;
5618 }
5619 else {
5620 $block = 5; break;
5621 }
5622 break;
5623 }
5624 case 4: {
5625 $t12_13 = proposals.addr($t10_11);
5626 $t13_14 = $t12_13.$get();
5627 $t14_15 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5628 $t14_15.$set($rt.builtin.cloneValue($t13_14));
5629 $t15_16 = senders.addr($t10_11);
5630 $t16_17 = $t15_16.$get();
5631 $t17_18 = { $get() { return $t14_15.$get().proposalType; }, $set(v) { const obj = $t14_15.$get(); obj.proposalType = v; $t14_15.$set(obj); } };
5632 $t18_19 = $t17_18.$get();
5633 $t19_20 = ($t18_19 === 1);
5634 if ($t19_20) {
5635 $block = 6; break;
5636 }
5637 else {
5638 $block = 8; break;
5639 }
5640 break;
5641 }
5642 case 5: {
5643 return null;
5644 break;
5645 }
5646 case 6: {
5647 $t20_21 = { $get() { return $t14_15.$get().add; }, $set(v) { const obj = $t14_15.$get(); obj.add = v; $t14_15.$set(obj); } };
5648 $t21_22 = $t20_21.$get();
5649 $t22_23 = { $get() { return $t21_22.$get().keyPackage; }, $set(v) { const obj = $t21_22.$get(); obj.keyPackage = v; $t21_22.$set(obj); } };
5650 $t23_24 = { $get() { return $t22_23.$get().leafNode; }, $set(v) { const obj = $t22_23.$get(); obj.leafNode = v; $t22_23.$set(obj); } };
5651 $t24_25 = { $get() { return $t23_24.$get().signatureKey; }, $set(v) { const obj = $t23_24.$get(); obj.signatureKey = v; $t23_24.$set(obj); } };
5652 $t25_26 = $t24_25.$get();
5653 { const $r = $rt.builtin.mapLookup($t4_5, $t25_26); $t26_27 = [$r.value, $r.ok]; }
5654 $t27_28 = $t26_27[0];
5655 $t28_29 = $t26_27[1];
5656 if ($t28_29) {
5657 $block = 9; break;
5658 }
5659 else {
5660 $block = 10; break;
5661 }
5662 break;
5663 }
5664 case 7: {
5665 $t29_30 = ($t16_17 === committer);
5666 if ($t29_30) {
5667 $block = 13; break;
5668 }
5669 else {
5670 $block = 14; break;
5671 }
5672 break;
5673 }
5674 case 8: {
5675 $t30_31 = ($t18_19 === 2);
5676 if ($t30_31) {
5677 $block = 7; break;
5678 }
5679 else {
5680 $block = 12; break;
5681 }
5682 break;
5683 }
5684 case 9: {
5685 $t31_32 = errDupAddKey.$get();
5686 return $t31_32;
5687 break;
5688 }
5689 case 10: {
5690 $rt.builtin.mapUpdate($t4_5, $t25_26, {});
5691 let $phi0 = $t8_9;
5692 let $phi1 = $t10_11;
5693 $t8_9 = $phi0;
5694 $t9_10 = $phi1;
5695 $block = 3; break;
5696 break;
5697 }
5698 case 11: {
5699 $t32_33 = { $get() { return $t14_15.$get().remove; }, $set(v) { const obj = $t14_15.$get(); obj.remove = v; $t14_15.$set(obj); } };
5700 $t33_34 = $t32_33.$get();
5701 $t34_35 = { $get() { return $t33_34.$get().removed; }, $set(v) { const obj = $t33_34.$get(); obj.removed = v; $t33_34.$set(obj); } };
5702 $t35_36 = $t34_35.$get();
5703 $t36_37 = ($t35_36 === committer);
5704 if ($t36_37) {
5705 $block = 19; break;
5706 }
5707 else {
5708 $block = 20; break;
5709 }
5710 break;
5711 }
5712 case 12: {
5713 $t37_38 = ($t18_19 === 3);
5714 if ($t37_38) {
5715 $block = 11; break;
5716 }
5717 else {
5718 $block = 18; break;
5719 }
5720 break;
5721 }
5722 case 13: {
5723 $t38_39 = errUpdateByCommitter.$get();
5724 return $t38_39;
5725 break;
5726 }
5727 case 14: {
5728 { const $r = $rt.builtin.mapLookup($t5_6, $t16_17); $t39_40 = [$r.value, $r.ok]; }
5729 $t40_41 = $t39_40[0];
5730 $t41_42 = $t39_40[1];
5731 if ($t41_42) {
5732 $block = 15; break;
5733 }
5734 else {
5735 $block = 16; break;
5736 }
5737 break;
5738 }
5739 case 15: {
5740 $t42_43 = errDupUpdateOrRemove.$get();
5741 return $t42_43;
5742 break;
5743 }
5744 case 16: {
5745 $rt.builtin.mapUpdate($t5_6, $t16_17, {});
5746 let $phi0 = $t8_9;
5747 let $phi1 = $t10_11;
5748 $t8_9 = $phi0;
5749 $t9_10 = $phi1;
5750 $block = 3; break;
5751 break;
5752 }
5753 case 17: {
5754 $t43_44 = { $get() { return $t14_15.$get().preSharedKey; }, $set(v) { const obj = $t14_15.$get(); obj.preSharedKey = v; $t14_15.$set(obj); } };
5755 $t44_45 = $t43_44.$get();
5756 $t45_46 = { $get() { return $t44_45.$get().psk; }, $set(v) { const obj = $t44_45.$get(); obj.psk = v; $t44_45.$set(obj); } };
5757 $t46_47 = $rt.types.makeInterface('*smesh.lol/web/common/mls.preSharedKeyID', $t45_46);
5758 $t47_48 = marshalRaw($t46_47);
5759 $t48_49 = $t47_48[0];
5760 $t49_50 = $t47_48[1];
5761 $t50_51 = ($t49_50 !== null);
5762 if ($t50_51) {
5763 $block = 25; break;
5764 }
5765 else {
5766 $block = 26; break;
5767 }
5768 break;
5769 }
5770 case 18: {
5771 $t51_52 = ($t18_19 === 4);
5772 if ($t51_52) {
5773 $block = 17; break;
5774 }
5775 else {
5776 $block = 24; break;
5777 }
5778 break;
5779 }
5780 case 19: {
5781 $t52_53 = errRemoveCommitter.$get();
5782 return $t52_53;
5783 break;
5784 }
5785 case 20: {
5786 $t53_54 = { $get() { return $t14_15.$get().remove; }, $set(v) { const obj = $t14_15.$get(); obj.remove = v; $t14_15.$set(obj); } };
5787 $t54_55 = $t53_54.$get();
5788 $t55_56 = { $get() { return $t54_55.$get().removed; }, $set(v) { const obj = $t54_55.$get(); obj.removed = v; $t54_55.$set(obj); } };
5789 $t56_57 = $t55_56.$get();
5790 { const $r = $rt.builtin.mapLookup($t5_6, $t56_57); $t57_58 = [$r.value, $r.ok]; }
5791 $t58_59 = $t57_58[0];
5792 $t59_60 = $t57_58[1];
5793 if ($t59_60) {
5794 $block = 21; break;
5795 }
5796 else {
5797 $block = 22; break;
5798 }
5799 break;
5800 }
5801 case 21: {
5802 $t60_61 = errDupUpdateOrRemove.$get();
5803 return $t60_61;
5804 break;
5805 }
5806 case 22: {
5807 $t61_62 = { $get() { return $t14_15.$get().remove; }, $set(v) { const obj = $t14_15.$get(); obj.remove = v; $t14_15.$set(obj); } };
5808 $t62_63 = $t61_62.$get();
5809 $t63_64 = { $get() { return $t62_63.$get().removed; }, $set(v) { const obj = $t62_63.$get(); obj.removed = v; $t62_63.$set(obj); } };
5810 $t64_65 = $t63_64.$get();
5811 $rt.builtin.mapUpdate($t5_6, $t64_65, {});
5812 let $phi0 = $t8_9;
5813 let $phi1 = $t10_11;
5814 $t8_9 = $phi0;
5815 $t9_10 = $phi1;
5816 $block = 3; break;
5817 break;
5818 }
5819 case 23: {
5820 if ($t8_9) {
5821 $block = 31; break;
5822 }
5823 else {
5824 $block = 32; break;
5825 }
5826 break;
5827 }
5828 case 24: {
5829 $t65_66 = ($t18_19 === 7);
5830 if ($t65_66) {
5831 $block = 23; break;
5832 }
5833 else {
5834 $block = 30; break;
5835 }
5836 break;
5837 }
5838 case 25: {
5839 return $t49_50;
5840 break;
5841 }
5842 case 26: {
5843 { const $r = $rt.builtin.mapLookup($t6_7, $t48_49); $t66_67 = [$r.value, $r.ok]; }
5844 $t67_68 = $t66_67[0];
5845 $t68_69 = $t66_67[1];
5846 if ($t68_69) {
5847 $block = 27; break;
5848 }
5849 else {
5850 $block = 28; break;
5851 }
5852 break;
5853 }
5854 case 27: {
5855 $t69_70 = errDupPSK.$get();
5856 return $t69_70;
5857 break;
5858 }
5859 case 28: {
5860 $rt.builtin.mapUpdate($t6_7, $t48_49, {});
5861 let $phi0 = $t8_9;
5862 let $phi1 = $t10_11;
5863 $t8_9 = $phi0;
5864 $t9_10 = $phi1;
5865 $block = 3; break;
5866 break;
5867 }
5868 case 29: {
5869 $t70_71 = $rt.builtin.len(proposals);
5870 $t71_72 = ($t70_71 > 1);
5871 if ($t71_72) {
5872 $block = 35; break;
5873 }
5874 else {
5875 let $phi0 = $t8_9;
5876 let $phi1 = $t10_11;
5877 $t8_9 = $phi0;
5878 $t9_10 = $phi1;
5879 $block = 3; break;
5880 }
5881 break;
5882 }
5883 case 30: {
5884 $t72_73 = ($t18_19 === 5);
5885 if ($t72_73) {
5886 $block = 29; break;
5887 }
5888 else {
5889 $block = 34; break;
5890 }
5891 break;
5892 }
5893 case 31: {
5894 $t73_74 = errDupGroupContextExts.$get();
5895 return $t73_74;
5896 break;
5897 }
5898 case 32: {
5899 $t8_9 = true;
5900 $t9_10 = $t10_11;
5901 $block = 3; break;
5902 break;
5903 }
5904 case 33: {
5905 $t74_75 = errExternalInitNotAllowed.$get();
5906 return $t74_75;
5907 break;
5908 }
5909 case 34: {
5910 $t75_76 = ($t18_19 === 6);
5911 if ($t75_76) {
5912 $block = 33; break;
5913 }
5914 else {
5915 let $phi0 = $t8_9;
5916 let $phi1 = $t10_11;
5917 $t8_9 = $phi0;
5918 $t9_10 = $phi1;
5919 $block = 3; break;
5920 }
5921 break;
5922 }
5923 case 35: {
5924 $t76_77 = errReinitWithOther.$get();
5925 return $t76_77;
5926 break;
5927 }
5928 }
5929 }
5930 }
5931
5932 export function proposalListNeedsPath(proposals) {
5933 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
5934 let $block = 0;
5935 while (true) {
5936 switch ($block) {
5937 case 0: {
5938 $t0_1 = $rt.builtin.len(proposals);
5939 $t1_2 = ($t0_1 === 0);
5940 if ($t1_2) {
5941 $block = 1; break;
5942 }
5943 else {
5944 $block = 2; break;
5945 }
5946 break;
5947 }
5948 case 1: {
5949 return true;
5950 break;
5951 }
5952 case 2: {
5953 $t2_3 = $rt.builtin.len(proposals);
5954 $t3_4 = -1;
5955 $block = 3; break;
5956 break;
5957 }
5958 case 3: {
5959 $t4_5 = ($t3_4 + 1);
5960 $t5_6 = ($t4_5 < $t2_3);
5961 if ($t5_6) {
5962 $block = 4; break;
5963 }
5964 else {
5965 $block = 5; break;
5966 }
5967 break;
5968 }
5969 case 4: {
5970 $t6_7 = proposals.addr($t4_5);
5971 $t7_8 = $t6_7.$get();
5972 $t8_9 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
5973 $t8_9.$set($rt.builtin.cloneValue($t7_8));
5974 $t9_10 = { $get() { return $t8_9.$get().proposalType; }, $set(v) { const obj = $t8_9.$get(); obj.proposalType = v; $t8_9.$set(obj); } };
5975 $t10_11 = $t9_10.$get();
5976 $t11_12 = ($t10_11 === 2);
5977 if ($t11_12) {
5978 $block = 6; break;
5979 }
5980 else {
5981 $block = 7; break;
5982 }
5983 break;
5984 }
5985 case 5: {
5986 return false;
5987 break;
5988 }
5989 case 6: {
5990 return true;
5991 break;
5992 }
5993 case 7: {
5994 $t12_13 = ($t10_11 === 3);
5995 if ($t12_13) {
5996 $block = 6; break;
5997 }
5998 else {
5999 $block = 8; break;
6000 }
6001 break;
6002 }
6003 case 8: {
6004 $t13_14 = ($t10_11 === 6);
6005 if ($t13_14) {
6006 $block = 6; break;
6007 }
6008 else {
6009 $block = 9; break;
6010 }
6011 break;
6012 }
6013 case 9: {
6014 $t14_15 = ($t10_11 === 7);
6015 if ($t14_15) {
6016 $block = 6; break;
6017 }
6018 else {
6019 $t3_4 = $t4_5;
6020 $block = 3; break;
6021 }
6022 break;
6023 }
6024 }
6025 }
6026 }
6027
6028 export function ratchetLabelFromContentType(ct) {
6029 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
6030 let $block = 0;
6031 while (true) {
6032 switch ($block) {
6033 case 0: {
6034 $t0_1 = (ct === 1);
6035 if ($t0_1) {
6036 $block = 1; break;
6037 }
6038 else {
6039 $block = 3; break;
6040 }
6041 break;
6042 }
6043 case 1: {
6044 $t1_2 = ratchetLabelApplication.$get();
6045 return $t1_2;
6046 break;
6047 }
6048 case 2: {
6049 $t2_3 = ratchetLabelHandshake.$get();
6050 return $t2_3;
6051 break;
6052 }
6053 case 3: {
6054 $t3_4 = (ct === 2);
6055 if ($t3_4) {
6056 $block = 2; break;
6057 }
6058 else {
6059 $block = 4; break;
6060 }
6061 break;
6062 }
6063 case 4: {
6064 $t4_5 = (ct === 3);
6065 if ($t4_5) {
6066 $block = 2; break;
6067 }
6068 else {
6069 $block = 5; break;
6070 }
6071 break;
6072 }
6073 case 5: {
6074 $t5_6 = $rt.types.makeInterface('string', 'unreachable');
6075 $rt.runtime.panic($t5_6);
6076 break;
6077 }
6078 }
6079 }
6080 }
6081
6082 export function deriveSecretTree(cs, n, encryptionSecret) {
6083 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
6084 $t0_1 = numLeaves$width(n);
6085 $t1_2 = $t0_1;
6086 $t2_3 = $rt.builtin.makeSlice($t1_2, $t1_2, null);
6087 $t3_4 = $t2_3;
6088 $t4_5 = numLeaves$root(n);
6089 $t5_6 = secretTree$set($t3_4, $t4_5, encryptionSecret);
6090 $t6_7 = numLeaves$root(n);
6091 $t7_8 = secretTree$deriveChildren($t3_4, cs, $t6_7);
6092 return [$t3_4, $t7_8];
6093 }
6094
6095 export function deriveTreeSecret(cs, secret, label, generation, length) {
6096 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
6097 $t0_1 = { $value: $rt.builtin.makeSlice(4, 4, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
6098 $t1_2 = $t0_1.$get().addr(0);
6099 $t2_3 = (generation >>> 24);
6100 $t3_4 = ($t2_3 & 0xFF);
6101 $t1_2.$set($t3_4);
6102 $t4_5 = $t0_1.$get().addr(1);
6103 $t5_6 = (generation >>> 16);
6104 $t6_7 = ($t5_6 & 0xFF);
6105 $t4_5.$set($t6_7);
6106 $t7_8 = $t0_1.$get().addr(2);
6107 $t8_9 = (generation >>> 8);
6108 $t9_10 = ($t8_9 & 0xFF);
6109 $t7_8.$set($t9_10);
6110 $t10_11 = $t0_1.$get().addr(3);
6111 $t11_12 = (generation & 0xFF);
6112 $t10_11.$set($t11_12);
6113 $t12_13 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
6114 $t13_14 = CipherSuite$expandWithLabel(cs, secret, label, $t12_13, length);
6115 $t14_15 = $t13_14[0];
6116 $t15_16 = $t13_14[1];
6117 return [$t14_15, $t15_16];
6118 }
6119
6120 export function TestKeySchedule() {
6121 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197, $t197_198, $t198_199, $t199_200, $t200_201, $t201_202, $t202_203, $t203_204, $t204_205, $t205_206, $t206_207, $t207_208, $t208_209, $t209_210, $t210_211, $t211_212, $t212_213, $t213_214, $t214_215, $t215_216, $t216_217, $t217_218, $t218_219, $t219_220, $t220_221, $t221_222, $t222_223, $t223_224, $t224_225, $t225_226, $t226_227, $t227_228, $t228_229, $t229_230, $t230_231, $t231_232, $t232_233, $t233_234, $t234_235, $t235_236, $t236_237, $t237_238, $t238_239, $t239_240, $t240_241, $t241_242, $t242_243, $t243_244, $t244_245, $t245_246, $t246_247, $t247_248, $t248_249, $t249_250, $t250_251, $t251_252, $t252_253, $t253_254, $t254_255, $t255_256, $t256_257, $t257_258, $t258_259, $t259_260, $t260_261, $t261_262, $t262_263, $t263_264, $t264_265, $t265_266, $t266_267, $t267_268, $t268_269, $t269_270, $t270_271, $t271_272, $t272_273, $t273_274, $t274_275, $t275_276, $t276_277, $t277_278, $t278_279;
6122 let $block = 0;
6123 while (true) {
6124 switch ($block) {
6125 case 0: {
6126 $t0_1 = hexb('a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e');
6127 $t1_2 = hexb('a897b53575b4dd35fed4466e4e714bfa949eaa72e616a9c68a47b39cb7a60d2e');
6128 $t2_3 = ksEpochs.$get();
6129 $t3_4 = $rt.builtin.len($t2_3);
6130 $t4_5 = $t1_2;
6131 $t5_6 = -1;
6132 $block = 1; break;
6133 break;
6134 }
6135 case 1: {
6136 $t6_7 = ($t5_6 + 1);
6137 $t7_8 = ($t6_7 < $t3_4);
6138 if ($t7_8) {
6139 $block = 2; break;
6140 }
6141 else {
6142 $block = 3; break;
6143 }
6144 break;
6145 }
6146 case 2: {
6147 $t8_9 = $t2_3.addr($t6_7);
6148 $t9_10 = $t8_9.$get();
6149 $t10_11 = { $value: { commitSecret: null, treeHash: null, confirmedTranscriptHash: null, pskSecret: null, groupContext: null, joinerSecret: null, welcomeSecret: null, initSecret: null, senderDataSecret: null, encryptionSecret: null, exporterSecret: null, externalSecret: null, confirmationKey: null, membershipKey: null, resumptionPSK: null, epochAuthenticator: null, externalPub: null, exporterLabel: null, exporterContext: null, exporterLength: 0, exporterValue: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
6150 $t10_11.$set($rt.builtin.cloneValue($t9_10));
6151 $t11_12 = { $value: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
6152 $t12_13 = { $get() { return $t11_12.$get().version; }, $set(v) { const obj = $t11_12.$get(); obj.version = v; $t11_12.$set(obj); } };
6153 $t13_14 = { $get() { return $t11_12.$get().cipherSuite; }, $set(v) { const obj = $t11_12.$get(); obj.cipherSuite = v; $t11_12.$set(obj); } };
6154 $t14_15 = { $get() { return $t11_12.$get().groupID; }, $set(v) { const obj = $t11_12.$get(); obj.groupID = v; $t11_12.$set(obj); } };
6155 $t15_16 = $t0_1;
6156 $t16_17 = { $get() { return $t11_12.$get().epoch; }, $set(v) { const obj = $t11_12.$get(); obj.epoch = v; $t11_12.$set(obj); } };
6157 $t17_18 = BigInt.asUintN(64, BigInt($t6_7));
6158 $t18_19 = { $get() { return $t11_12.$get().treeHash; }, $set(v) { const obj = $t11_12.$get(); obj.treeHash = v; $t11_12.$set(obj); } };
6159 $t19_20 = { $get() { return $t10_11.$get().treeHash; }, $set(v) { const obj = $t10_11.$get(); obj.treeHash = v; $t10_11.$set(obj); } };
6160 $t20_21 = $t19_20.$get();
6161 $t21_22 = { $get() { return $t11_12.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t11_12.$get(); obj.confirmedTranscriptHash = v; $t11_12.$set(obj); } };
6162 $t22_23 = { $get() { return $t10_11.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t10_11.$get(); obj.confirmedTranscriptHash = v; $t10_11.$set(obj); } };
6163 $t23_24 = $t22_23.$get();
6164 $t12_13.$set(1);
6165 $t13_14.$set(3);
6166 $t14_15.$set($t15_16);
6167 $t16_17.$set($t17_18);
6168 $t18_19.$set($t20_21);
6169 $t21_22.$set($t23_24);
6170 $t24_25 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupContext', $t11_12);
6171 $t25_26 = marshalRaw($t24_25);
6172 $t26_27 = $t25_26[0];
6173 $t27_28 = $t25_26[1];
6174 $t28_29 = ($t27_28 !== null);
6175 if ($t28_29) {
6176 $block = 4; break;
6177 }
6178 else {
6179 $block = 5; break;
6180 }
6181 break;
6182 }
6183 case 3: {
6184 return null;
6185 break;
6186 }
6187 case 4: {
6188 $t29_30 = itoa($t6_7);
6189 $t30_31 = ('epoch ' + $t29_30);
6190 $t31_32 = ($t30_31 + ': marshalRaw: ');
6191 $t32_33 = $rt.types.methodCall($t27_28, 'Error', []);
6192 $t33_34 = ($t31_32 + $t32_33);
6193 $t34_35 = errors.New($t33_34);
6194 return $t34_35;
6195 break;
6196 }
6197 case 5: {
6198 $t35_36 = { $get() { return $t10_11.$get().groupContext; }, $set(v) { const obj = $t10_11.$get(); obj.groupContext = v; $t10_11.$set(obj); } };
6199 $t36_37 = $t35_36.$get();
6200 $t37_38 = bytesEqual($t26_27, $t36_37);
6201 if ($t37_38) {
6202 $block = 7; break;
6203 }
6204 else {
6205 $block = 6; break;
6206 }
6207 break;
6208 }
6209 case 6: {
6210 $t38_39 = itoa($t6_7);
6211 $t39_40 = ('epoch ' + $t38_39);
6212 $t40_41 = ($t39_40 + ': group_context mismatch: got ');
6213 $t41_42 = hexenc($t26_27);
6214 $t42_43 = ($t40_41 + $t41_42);
6215 $t43_44 = ($t42_43 + ' want ');
6216 $t44_45 = { $get() { return $t10_11.$get().groupContext; }, $set(v) { const obj = $t10_11.$get(); obj.groupContext = v; $t10_11.$set(obj); } };
6217 $t45_46 = $t44_45.$get();
6218 $t46_47 = hexenc($t45_46);
6219 $t47_48 = ($t43_44 + $t46_47);
6220 $t48_49 = errors.New($t47_48);
6221 return $t48_49;
6222 break;
6223 }
6224 case 7: {
6225 $t49_50 = { $get() { return $t10_11.$get().commitSecret; }, $set(v) { const obj = $t10_11.$get(); obj.commitSecret = v; $t10_11.$set(obj); } };
6226 $t50_51 = $t49_50.$get();
6227 $t51_52 = groupContext$extractJoinerSecret($t11_12, $t4_5, $t50_51);
6228 $t52_53 = $t51_52[0];
6229 $t53_54 = $t51_52[1];
6230 $t54_55 = ($t53_54 !== null);
6231 if ($t54_55) {
6232 $block = 8; break;
6233 }
6234 else {
6235 $block = 9; break;
6236 }
6237 break;
6238 }
6239 case 8: {
6240 $t55_56 = itoa($t6_7);
6241 $t56_57 = ('epoch ' + $t55_56);
6242 $t57_58 = ($t56_57 + ': extractJoinerSecret: ');
6243 $t58_59 = $rt.types.methodCall($t53_54, 'Error', []);
6244 $t59_60 = ($t57_58 + $t58_59);
6245 $t60_61 = errors.New($t59_60);
6246 return $t60_61;
6247 break;
6248 }
6249 case 9: {
6250 $t61_62 = { $get() { return $t10_11.$get().joinerSecret; }, $set(v) { const obj = $t10_11.$get(); obj.joinerSecret = v; $t10_11.$set(obj); } };
6251 $t62_63 = $t61_62.$get();
6252 $t63_64 = bytesEqual($t52_53, $t62_63);
6253 if ($t63_64) {
6254 $block = 11; break;
6255 }
6256 else {
6257 $block = 10; break;
6258 }
6259 break;
6260 }
6261 case 10: {
6262 $t64_65 = itoa($t6_7);
6263 $t65_66 = ('epoch ' + $t64_65);
6264 $t66_67 = ($t65_66 + ': joiner_secret mismatch: got ');
6265 $t67_68 = hexenc($t52_53);
6266 $t68_69 = ($t66_67 + $t67_68);
6267 $t69_70 = ($t68_69 + ' want ');
6268 $t70_71 = { $get() { return $t10_11.$get().joinerSecret; }, $set(v) { const obj = $t10_11.$get(); obj.joinerSecret = v; $t10_11.$set(obj); } };
6269 $t71_72 = $t70_71.$get();
6270 $t72_73 = hexenc($t71_72);
6271 $t73_74 = ($t69_70 + $t72_73);
6272 $t74_75 = errors.New($t73_74);
6273 return $t74_75;
6274 break;
6275 }
6276 case 11: {
6277 $t75_76 = { $get() { return $t10_11.$get().pskSecret; }, $set(v) { const obj = $t10_11.$get(); obj.pskSecret = v; $t10_11.$set(obj); } };
6278 $t76_77 = $t75_76.$get();
6279 $t77_78 = extractWelcomeSecret(3, $t52_53, $t76_77);
6280 $t78_79 = $t77_78[0];
6281 $t79_80 = $t77_78[1];
6282 $t80_81 = ($t79_80 !== null);
6283 if ($t80_81) {
6284 $block = 12; break;
6285 }
6286 else {
6287 $block = 13; break;
6288 }
6289 break;
6290 }
6291 case 12: {
6292 $t81_82 = itoa($t6_7);
6293 $t82_83 = ('epoch ' + $t81_82);
6294 $t83_84 = ($t82_83 + ': extractWelcomeSecret: ');
6295 $t84_85 = $rt.types.methodCall($t79_80, 'Error', []);
6296 $t85_86 = ($t83_84 + $t84_85);
6297 $t86_87 = errors.New($t85_86);
6298 return $t86_87;
6299 break;
6300 }
6301 case 13: {
6302 $t87_88 = { $get() { return $t10_11.$get().welcomeSecret; }, $set(v) { const obj = $t10_11.$get(); obj.welcomeSecret = v; $t10_11.$set(obj); } };
6303 $t88_89 = $t87_88.$get();
6304 $t89_90 = bytesEqual($t78_79, $t88_89);
6305 if ($t89_90) {
6306 $block = 15; break;
6307 }
6308 else {
6309 $block = 14; break;
6310 }
6311 break;
6312 }
6313 case 14: {
6314 $t90_91 = itoa($t6_7);
6315 $t91_92 = ('epoch ' + $t90_91);
6316 $t92_93 = ($t91_92 + ': welcome_secret mismatch');
6317 $t93_94 = errors.New($t92_93);
6318 return $t93_94;
6319 break;
6320 }
6321 case 15: {
6322 $t94_95 = { $get() { return $t10_11.$get().pskSecret; }, $set(v) { const obj = $t10_11.$get(); obj.pskSecret = v; $t10_11.$set(obj); } };
6323 $t95_96 = $t94_95.$get();
6324 $t96_97 = groupContext$extractEpochSecret($t11_12, $t52_53, $t95_96);
6325 $t97_98 = $t96_97[0];
6326 $t98_99 = $t96_97[1];
6327 $t99_100 = ($t98_99 !== null);
6328 if ($t99_100) {
6329 $block = 16; break;
6330 }
6331 else {
6332 $block = 17; break;
6333 }
6334 break;
6335 }
6336 case 16: {
6337 $t100_101 = itoa($t6_7);
6338 $t101_102 = ('epoch ' + $t100_101);
6339 $t102_103 = ($t101_102 + ': extractEpochSecret: ');
6340 $t103_104 = $rt.types.methodCall($t98_99, 'Error', []);
6341 $t104_105 = ($t102_103 + $t103_104);
6342 $t105_106 = errors.New($t104_105);
6343 return $t105_106;
6344 break;
6345 }
6346 case 17: {
6347 $t106_107 = { $value: $rt.builtin.makeSlice(8, 8, { label: null, want: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
6348 $t107_108 = $t106_107.$get().addr(0);
6349 $t108_109 = { $get() { return $t107_108.$get().label; }, $set(v) { const obj = $t107_108.$get(); obj.label = v; $t107_108.$set(obj); } };
6350 $t109_110 = secretLabelInit.$get();
6351 $t110_111 = { $get() { return $t107_108.$get().want; }, $set(v) { const obj = $t107_108.$get(); obj.want = v; $t107_108.$set(obj); } };
6352 $t111_112 = { $get() { return $t10_11.$get().initSecret; }, $set(v) { const obj = $t10_11.$get(); obj.initSecret = v; $t10_11.$set(obj); } };
6353 $t112_113 = $t111_112.$get();
6354 $t108_109.$set($t109_110);
6355 $t110_111.$set($t112_113);
6356 $t113_114 = $t106_107.$get().addr(1);
6357 $t114_115 = { $get() { return $t113_114.$get().label; }, $set(v) { const obj = $t113_114.$get(); obj.label = v; $t113_114.$set(obj); } };
6358 $t115_116 = secretLabelSenderData.$get();
6359 $t116_117 = { $get() { return $t113_114.$get().want; }, $set(v) { const obj = $t113_114.$get(); obj.want = v; $t113_114.$set(obj); } };
6360 $t117_118 = { $get() { return $t10_11.$get().senderDataSecret; }, $set(v) { const obj = $t10_11.$get(); obj.senderDataSecret = v; $t10_11.$set(obj); } };
6361 $t118_119 = $t117_118.$get();
6362 $t114_115.$set($t115_116);
6363 $t116_117.$set($t118_119);
6364 $t119_120 = $t106_107.$get().addr(2);
6365 $t120_121 = { $get() { return $t119_120.$get().label; }, $set(v) { const obj = $t119_120.$get(); obj.label = v; $t119_120.$set(obj); } };
6366 $t121_122 = secretLabelEncryption.$get();
6367 $t122_123 = { $get() { return $t119_120.$get().want; }, $set(v) { const obj = $t119_120.$get(); obj.want = v; $t119_120.$set(obj); } };
6368 $t123_124 = { $get() { return $t10_11.$get().encryptionSecret; }, $set(v) { const obj = $t10_11.$get(); obj.encryptionSecret = v; $t10_11.$set(obj); } };
6369 $t124_125 = $t123_124.$get();
6370 $t120_121.$set($t121_122);
6371 $t122_123.$set($t124_125);
6372 $t125_126 = $t106_107.$get().addr(3);
6373 $t126_127 = { $get() { return $t125_126.$get().label; }, $set(v) { const obj = $t125_126.$get(); obj.label = v; $t125_126.$set(obj); } };
6374 $t127_128 = secretLabelExporter.$get();
6375 $t128_129 = { $get() { return $t125_126.$get().want; }, $set(v) { const obj = $t125_126.$get(); obj.want = v; $t125_126.$set(obj); } };
6376 $t129_130 = { $get() { return $t10_11.$get().exporterSecret; }, $set(v) { const obj = $t10_11.$get(); obj.exporterSecret = v; $t10_11.$set(obj); } };
6377 $t130_131 = $t129_130.$get();
6378 $t126_127.$set($t127_128);
6379 $t128_129.$set($t130_131);
6380 $t131_132 = $t106_107.$get().addr(4);
6381 $t132_133 = { $get() { return $t131_132.$get().label; }, $set(v) { const obj = $t131_132.$get(); obj.label = v; $t131_132.$set(obj); } };
6382 $t133_134 = secretLabelExternal.$get();
6383 $t134_135 = { $get() { return $t131_132.$get().want; }, $set(v) { const obj = $t131_132.$get(); obj.want = v; $t131_132.$set(obj); } };
6384 $t135_136 = { $get() { return $t10_11.$get().externalSecret; }, $set(v) { const obj = $t10_11.$get(); obj.externalSecret = v; $t10_11.$set(obj); } };
6385 $t136_137 = $t135_136.$get();
6386 $t132_133.$set($t133_134);
6387 $t134_135.$set($t136_137);
6388 $t137_138 = $t106_107.$get().addr(5);
6389 $t138_139 = { $get() { return $t137_138.$get().label; }, $set(v) { const obj = $t137_138.$get(); obj.label = v; $t137_138.$set(obj); } };
6390 $t139_140 = secretLabelConfirm.$get();
6391 $t140_141 = { $get() { return $t137_138.$get().want; }, $set(v) { const obj = $t137_138.$get(); obj.want = v; $t137_138.$set(obj); } };
6392 $t141_142 = { $get() { return $t10_11.$get().confirmationKey; }, $set(v) { const obj = $t10_11.$get(); obj.confirmationKey = v; $t10_11.$set(obj); } };
6393 $t142_143 = $t141_142.$get();
6394 $t138_139.$set($t139_140);
6395 $t140_141.$set($t142_143);
6396 $t143_144 = $t106_107.$get().addr(6);
6397 $t144_145 = { $get() { return $t143_144.$get().label; }, $set(v) { const obj = $t143_144.$get(); obj.label = v; $t143_144.$set(obj); } };
6398 $t145_146 = secretLabelMembership.$get();
6399 $t146_147 = { $get() { return $t143_144.$get().want; }, $set(v) { const obj = $t143_144.$get(); obj.want = v; $t143_144.$set(obj); } };
6400 $t147_148 = { $get() { return $t10_11.$get().membershipKey; }, $set(v) { const obj = $t10_11.$get(); obj.membershipKey = v; $t10_11.$set(obj); } };
6401 $t148_149 = $t147_148.$get();
6402 $t144_145.$set($t145_146);
6403 $t146_147.$set($t148_149);
6404 $t149_150 = $t106_107.$get().addr(7);
6405 $t150_151 = { $get() { return $t149_150.$get().label; }, $set(v) { const obj = $t149_150.$get(); obj.label = v; $t149_150.$set(obj); } };
6406 $t151_152 = secretLabelResumption.$get();
6407 $t152_153 = { $get() { return $t149_150.$get().want; }, $set(v) { const obj = $t149_150.$get(); obj.want = v; $t149_150.$set(obj); } };
6408 $t153_154 = { $get() { return $t10_11.$get().resumptionPSK; }, $set(v) { const obj = $t10_11.$get(); obj.resumptionPSK = v; $t10_11.$set(obj); } };
6409 $t154_155 = $t153_154.$get();
6410 $t150_151.$set($t151_152);
6411 $t152_153.$set($t154_155);
6412 $t155_156 = $rt.builtin.sliceSlice($t106_107.$get(), undefined, undefined, undefined);
6413 $t156_157 = $rt.builtin.len($t155_156);
6414 $t157_158 = -1;
6415 $block = 18; break;
6416 break;
6417 }
6418 case 18: {
6419 $t158_159 = ($t157_158 + 1);
6420 $t159_160 = ($t158_159 < $t156_157);
6421 if ($t159_160) {
6422 $block = 19; break;
6423 }
6424 else {
6425 $block = 20; break;
6426 }
6427 break;
6428 }
6429 case 19: {
6430 $t160_161 = $t155_156.addr($t158_159);
6431 $t161_162 = $t160_161.$get();
6432 $t162_163 = { $value: { label: null, want: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
6433 $t162_163.$set($rt.builtin.cloneValue($t161_162));
6434 $t163_164 = { $get() { return $t162_163.$get().label; }, $set(v) { const obj = $t162_163.$get(); obj.label = v; $t162_163.$set(obj); } };
6435 $t164_165 = $t163_164.$get();
6436 $t165_166 = CipherSuite$deriveSecret(3, $t97_98, $t164_165);
6437 $t166_167 = $t165_166[0];
6438 $t167_168 = $t165_166[1];
6439 $t168_169 = ($t167_168 !== null);
6440 if ($t168_169) {
6441 $block = 21; break;
6442 }
6443 else {
6444 $block = 22; break;
6445 }
6446 break;
6447 }
6448 case 20: {
6449 $t169_170 = secretLabelAuthentication.$get();
6450 $t170_171 = CipherSuite$deriveSecret(3, $t97_98, $t169_170);
6451 $t171_172 = $t170_171[0];
6452 $t172_173 = $t170_171[1];
6453 $t173_174 = ($t172_173 !== null);
6454 if ($t173_174) {
6455 $block = 24; break;
6456 }
6457 else {
6458 $block = 25; break;
6459 }
6460 break;
6461 }
6462 case 21: {
6463 $t174_175 = itoa($t6_7);
6464 $t175_176 = ('epoch ' + $t174_175);
6465 $t176_177 = ($t175_176 + ': deriveSecret(');
6466 $t177_178 = { $get() { return $t162_163.$get().label; }, $set(v) { const obj = $t162_163.$get(); obj.label = v; $t162_163.$set(obj); } };
6467 $t178_179 = $t177_178.$get();
6468 $t179_180 = ($t176_177 + $t178_179);
6469 $t180_181 = ($t179_180 + '): ');
6470 $t181_182 = $rt.types.methodCall($t167_168, 'Error', []);
6471 $t182_183 = ($t180_181 + $t181_182);
6472 $t183_184 = errors.New($t182_183);
6473 return $t183_184;
6474 break;
6475 }
6476 case 22: {
6477 $t184_185 = { $get() { return $t162_163.$get().want; }, $set(v) { const obj = $t162_163.$get(); obj.want = v; $t162_163.$set(obj); } };
6478 $t185_186 = $t184_185.$get();
6479 $t186_187 = bytesEqual($t166_167, $t185_186);
6480 if ($t186_187) {
6481 $t157_158 = $t158_159;
6482 $block = 18; break;
6483 }
6484 else {
6485 $block = 23; break;
6486 }
6487 break;
6488 }
6489 case 23: {
6490 $t187_188 = itoa($t6_7);
6491 $t188_189 = ('epoch ' + $t187_188);
6492 $t189_190 = ($t188_189 + ': deriveSecret(');
6493 $t190_191 = { $get() { return $t162_163.$get().label; }, $set(v) { const obj = $t162_163.$get(); obj.label = v; $t162_163.$set(obj); } };
6494 $t191_192 = $t190_191.$get();
6495 $t192_193 = ($t189_190 + $t191_192);
6496 $t193_194 = ($t192_193 + ') mismatch: got ');
6497 $t194_195 = hexenc($t166_167);
6498 $t195_196 = ($t193_194 + $t194_195);
6499 $t196_197 = ($t195_196 + ' want ');
6500 $t197_198 = { $get() { return $t162_163.$get().want; }, $set(v) { const obj = $t162_163.$get(); obj.want = v; $t162_163.$set(obj); } };
6501 $t198_199 = $t197_198.$get();
6502 $t199_200 = hexenc($t198_199);
6503 $t200_201 = ($t196_197 + $t199_200);
6504 $t201_202 = errors.New($t200_201);
6505 return $t201_202;
6506 break;
6507 }
6508 case 24: {
6509 $t202_203 = itoa($t6_7);
6510 $t203_204 = ('epoch ' + $t202_203);
6511 $t204_205 = ($t203_204 + ': deriveSecret(authentication): ');
6512 $t205_206 = $rt.types.methodCall($t172_173, 'Error', []);
6513 $t206_207 = ($t204_205 + $t205_206);
6514 $t207_208 = errors.New($t206_207);
6515 return $t207_208;
6516 break;
6517 }
6518 case 25: {
6519 $t208_209 = { $get() { return $t10_11.$get().epochAuthenticator; }, $set(v) { const obj = $t10_11.$get(); obj.epochAuthenticator = v; $t10_11.$set(obj); } };
6520 $t209_210 = $t208_209.$get();
6521 $t210_211 = bytesEqual($t171_172, $t209_210);
6522 if ($t210_211) {
6523 $block = 27; break;
6524 }
6525 else {
6526 $block = 26; break;
6527 }
6528 break;
6529 }
6530 case 26: {
6531 $t211_212 = itoa($t6_7);
6532 $t212_213 = ('epoch ' + $t211_212);
6533 $t213_214 = ($t212_213 + ': epoch_authenticator mismatch');
6534 $t214_215 = errors.New($t213_214);
6535 return $t214_215;
6536 break;
6537 }
6538 case 27: {
6539 $t215_216 = { $get() { return $t10_11.$get().externalSecret; }, $set(v) { const obj = $t10_11.$get(); obj.externalSecret = v; $t10_11.$set(obj); } };
6540 $t216_217 = $t215_216.$get();
6541 $t217_218 = CipherSuite$deriveEncryptionKeyPair(3, $t216_217);
6542 $t218_219 = $t217_218[0];
6543 $t219_220 = $t217_218[1];
6544 $t220_221 = $t217_218[2];
6545 $t221_222 = ($t220_221 !== null);
6546 if ($t221_222) {
6547 $block = 28; break;
6548 }
6549 else {
6550 $block = 29; break;
6551 }
6552 break;
6553 }
6554 case 28: {
6555 $t222_223 = itoa($t6_7);
6556 $t223_224 = ('epoch ' + $t222_223);
6557 $t224_225 = ($t223_224 + ': deriveEncryptionKeyPair: ');
6558 $t225_226 = $rt.types.methodCall($t220_221, 'Error', []);
6559 $t226_227 = ($t224_225 + $t225_226);
6560 $t227_228 = errors.New($t226_227);
6561 return $t227_228;
6562 break;
6563 }
6564 case 29: {
6565 $t228_229 = $t218_219;
6566 $t229_230 = { $get() { return $t10_11.$get().externalPub; }, $set(v) { const obj = $t10_11.$get(); obj.externalPub = v; $t10_11.$set(obj); } };
6567 $t230_231 = $t229_230.$get();
6568 $t231_232 = bytesEqual($t228_229, $t230_231);
6569 if ($t231_232) {
6570 $block = 31; break;
6571 }
6572 else {
6573 $block = 30; break;
6574 }
6575 break;
6576 }
6577 case 30: {
6578 $t232_233 = itoa($t6_7);
6579 $t233_234 = ('epoch ' + $t232_233);
6580 $t234_235 = ($t233_234 + ': external_pub mismatch: got ');
6581 $t235_236 = $t218_219;
6582 $t236_237 = hexenc($t235_236);
6583 $t237_238 = ($t234_235 + $t236_237);
6584 $t238_239 = ($t237_238 + ' want ');
6585 $t239_240 = { $get() { return $t10_11.$get().externalPub; }, $set(v) { const obj = $t10_11.$get(); obj.externalPub = v; $t10_11.$set(obj); } };
6586 $t240_241 = $t239_240.$get();
6587 $t241_242 = hexenc($t240_241);
6588 $t242_243 = ($t238_239 + $t241_242);
6589 $t243_244 = errors.New($t242_243);
6590 return $t243_244;
6591 break;
6592 }
6593 case 31: {
6594 $t244_245 = { $get() { return $t10_11.$get().exporterSecret; }, $set(v) { const obj = $t10_11.$get(); obj.exporterSecret = v; $t10_11.$set(obj); } };
6595 $t245_246 = $t244_245.$get();
6596 $t246_247 = { $get() { return $t10_11.$get().exporterLabel; }, $set(v) { const obj = $t10_11.$get(); obj.exporterLabel = v; $t10_11.$set(obj); } };
6597 $t247_248 = $t246_247.$get();
6598 $t248_249 = { $get() { return $t10_11.$get().exporterContext; }, $set(v) { const obj = $t10_11.$get(); obj.exporterContext = v; $t10_11.$set(obj); } };
6599 $t249_250 = $t248_249.$get();
6600 $t250_251 = { $get() { return $t10_11.$get().exporterLength; }, $set(v) { const obj = $t10_11.$get(); obj.exporterLength = v; $t10_11.$set(obj); } };
6601 $t251_252 = $t250_251.$get();
6602 $t252_253 = ($t251_252 & 0xFFFF);
6603 $t253_254 = deriveExporter(3, $t245_246, $t247_248, $t249_250, $t252_253);
6604 $t254_255 = $t253_254[0];
6605 $t255_256 = $t253_254[1];
6606 $t256_257 = ($t255_256 !== null);
6607 if ($t256_257) {
6608 $block = 32; break;
6609 }
6610 else {
6611 $block = 33; break;
6612 }
6613 break;
6614 }
6615 case 32: {
6616 $t257_258 = itoa($t6_7);
6617 $t258_259 = ('epoch ' + $t257_258);
6618 $t259_260 = ($t258_259 + ': deriveExporter: ');
6619 $t260_261 = $rt.types.methodCall($t255_256, 'Error', []);
6620 $t261_262 = ($t259_260 + $t260_261);
6621 $t262_263 = errors.New($t261_262);
6622 return $t262_263;
6623 break;
6624 }
6625 case 33: {
6626 $t263_264 = { $get() { return $t10_11.$get().exporterValue; }, $set(v) { const obj = $t10_11.$get(); obj.exporterValue = v; $t10_11.$set(obj); } };
6627 $t264_265 = $t263_264.$get();
6628 $t265_266 = bytesEqual($t254_255, $t264_265);
6629 if ($t265_266) {
6630 $block = 35; break;
6631 }
6632 else {
6633 $block = 34; break;
6634 }
6635 break;
6636 }
6637 case 34: {
6638 $t266_267 = itoa($t6_7);
6639 $t267_268 = ('epoch ' + $t266_267);
6640 $t268_269 = ($t267_268 + ': exporter mismatch: got ');
6641 $t269_270 = hexenc($t254_255);
6642 $t270_271 = ($t268_269 + $t269_270);
6643 $t271_272 = ($t270_271 + ' want ');
6644 $t272_273 = { $get() { return $t10_11.$get().exporterValue; }, $set(v) { const obj = $t10_11.$get(); obj.exporterValue = v; $t10_11.$set(obj); } };
6645 $t273_274 = $t272_273.$get();
6646 $t274_275 = hexenc($t273_274);
6647 $t275_276 = ($t271_272 + $t274_275);
6648 $t276_277 = errors.New($t275_276);
6649 return $t276_277;
6650 break;
6651 }
6652 case 35: {
6653 $t277_278 = { $get() { return $t10_11.$get().initSecret; }, $set(v) { const obj = $t10_11.$get(); obj.initSecret = v; $t10_11.$set(obj); } };
6654 $t278_279 = $t277_278.$get();
6655 $t4_5 = $t278_279;
6656 $t5_6 = $t6_7;
6657 $block = 1; break;
6658 break;
6659 }
6660 }
6661 }
6662 }
6663
6664 export function itoa(n) {
6665 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
6666 let $block = 0;
6667 while (true) {
6668 switch ($block) {
6669 case 0: {
6670 $t0_1 = (n === 0);
6671 if ($t0_1) {
6672 $block = 1; break;
6673 }
6674 else {
6675 $block = 2; break;
6676 }
6677 break;
6678 }
6679 case 1: {
6680 return '0';
6681 break;
6682 }
6683 case 2: {
6684 $t1_2 = { $value: $rt.builtin.makeSlice(8, 8, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
6685 $t2_3 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, 8, undefined);
6686 $t3_4 = $rt.builtin.len($t2_3);
6687 $t11_12 = n;
6688 $t12_13 = $t3_4;
6689 $block = 5; break;
6690 break;
6691 }
6692 case 3: {
6693 $t4_5 = ($t12_13 - 1);
6694 $t5_6 = ($t11_12 % 10);
6695 $t6_7 = (48 + $t5_6);
6696 $t7_8 = ($t6_7 & 0xFF);
6697 $t8_9 = $t2_3.addr($t4_5);
6698 $t8_9.$set($t7_8);
6699 $t9_10 = Math.trunc($t11_12 / 10);
6700 $t11_12 = $t9_10;
6701 $t12_13 = $t4_5;
6702 $block = 5; break;
6703 break;
6704 }
6705 case 4: {
6706 $t10_11 = $rt.builtin.sliceSlice($t2_3, $t12_13, undefined, undefined);
6707 return $t10_11;
6708 break;
6709 }
6710 case 5: {
6711 $t13_14 = ($t11_12 > 0);
6712 if ($t13_14) {
6713 $block = 3; break;
6714 }
6715 else {
6716 $block = 4; break;
6717 }
6718 break;
6719 }
6720 }
6721 }
6722 }
6723
6724 export function TestMessageProtection() {
6725 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41;
6726 let $block = 0;
6727 while (true) {
6728 switch ($block) {
6729 case 0: {
6730 $t0_1 = hexb('fdbada2ddce02e7493673caab793308bdeb5cdb0558f151f647ab6e2ca0c63cf');
6731 $t1_2 = $t0_1;
6732 $t2_3 = hexb('5ae6ee5f282786b753d55f15938248f6212c69b2f677319e5fcdb2ce0bfbf48a');
6733 $t3_4 = hexb('0ba35f0d36007bc44df41db074b9d98a1314e3c690cb345ceeae152fbe5b6afe');
6734 $t4_5 = hexb('b1d7f2e45d6c94fa8bff3b63308bbba38024c5b70c22234834ee24294b6e0a28');
6735 $t5_6 = $t4_5;
6736 $t6_7 = hexb('ce02c4dd80a8ed57503e3a50ec11b926a549d65e840417c0635427a838b3cf29');
6737 $t7_8 = hexb('85fc31fac878dbe2850e30a8fa88bdc63dacd890756aade03433791b50a510f5');
6738 $t8_9 = hexb('82f73c829938c5d1a19e19de2b2c109214455ee6671cf918af426f364162678e');
6739 $t9_10 = hexb('000300000002');
6740 $t10_11 = hexb('0001000220fdbada2ddce02e7493673caab793308bdeb5cdb0558f151f647ab6e2ca0c63cf000000000012121202001cc15e1b90a18448376191078a6b66567941ce2472f110def1215eb1114058f9bf6e2c2dd19ff11b450ce94d9990ca3dbaf94edf8873c0f7cbf8feeefd362ac674b32d4c1c6ca646b8282fec7aaa51dcdd402345792aa77d98eaa97da5bf13969e44845f33114c10e1edd765d1c738059757570366687b');
6741 $t11_12 = hexb('0001000120fdbada2ddce02e7493673caab793308bdeb5cdb0558f151f647ab6e2ca0c63cf00000000001212120100000001000200030000000240402aef68e55e2092800105a0a963c84afb2039093f5431f9c59fce19d3f2bca20689a617deb8fa59085f21b609649b0373e62c0c099e9bfc66f939e623a851d3022048451581d2796c68ca95ddbf06fe4cc69f5b1360f12dce5947e095ab26c259a3');
6742 $t12_13 = hexb('4046010004012017e89d9ff20be622654e2b82b1e55d5b51c9e01d3b02cf0fa179c14e8697c11620d3ad3e549ffe3fe157d4d2e6627b8d35be6b5b8f37ffb10ed358bfb47c6c829500');
6743 $t13_14 = hexb('0001000220fdbada2ddce02e7493673caab793308bdeb5cdb0558f151f647ab6e2ca0c63cf000000000012121203001c71db9299c28f6e4feec4ddd63660f8ee186769ba51f2721953c48b9440bc32b3c5b162267da077973a9966c1c1bf6406d4326d9b0649bffeceec9ebe4dcf8603aa291254ce1954471cb01670b8e8e2f111ed54f8c818b348bd0300eb174602b484899f2fa95bbebdae6807de23355e2a988cf30cdeb2327759b2274205f485ff15b668b00a4f36ead53e21091be1133c2dd9a635bd6a942509921e33647e864a26af80aa5e54e15e695d2156209c2da2a7b8fe1938632192fce5e75736249c2fb6a7c2af46b29bfb5a83699d568f6b5614bf4edca36dc290f71d');
6744 $t14_15 = hexb('0001000120fdbada2ddce02e7493673caab793308bdeb5cdb0558f151f647ab6e2ca0c63cf0000000000121212010000000100034046010004012017e89d9ff20be622654e2b82b1e55d5b51c9e01d3b02cf0fa179c14e8697c11620d3ad3e549ffe3fe157d4d2e6627b8d35be6b5b8f37ffb10ed358bfb47c6c82950040402ad9df6c6e068cfb07cd8a6e49455f256ca630341744128cdc2bd180c8dd76b8e2b3affc5e8c0b3a70d55e349e46adf95e2641299b6c1ac78336e69ec243860520b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad20aa0af8115702fcd155306e3f0091dbc40c772a97547ee9398157106ad10e9bf1');
6745 $t15_16 = hexb('725b6517ff1e5ed74224de23777a9b5f4a2dd74fe4a816d19ea71baa069d74c0975b7f10e61b7c3ef339');
6746 $t16_17 = hexb('0001000220fdbada2ddce02e7493673caab793308bdeb5cdb0558f151f647ab6e2ca0c63cf000000000012121201001c22d286c12043af1e8093bd213bf707b9b675ee98a171d0eeb206de91407d9d099e17b2aa1de37065098feb8efa598721128ec5bada3a6a07e06123eb61ced1dd265a0e7468f05f39b549ede80606f4795425de91acaee0b0bd840d0eabd284ae30adf04a5bf97027180836adee1203636c2cfd36f477747e9f0549dc99f5b3ef3a3db4f4def426625757365cf871061383a6dbd516127a11f83cc4');
6747 $t17_18 = { $value: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
6748 $t18_19 = { $get() { return $t17_18.$get().version; }, $set(v) { const obj = $t17_18.$get(); obj.version = v; $t17_18.$set(obj); } };
6749 $t19_20 = { $get() { return $t17_18.$get().cipherSuite; }, $set(v) { const obj = $t17_18.$get(); obj.cipherSuite = v; $t17_18.$set(obj); } };
6750 $t20_21 = { $get() { return $t17_18.$get().groupID; }, $set(v) { const obj = $t17_18.$get(); obj.groupID = v; $t17_18.$set(obj); } };
6751 $t21_22 = { $get() { return $t17_18.$get().epoch; }, $set(v) { const obj = $t17_18.$get(); obj.epoch = v; $t17_18.$set(obj); } };
6752 $t22_23 = { $get() { return $t17_18.$get().treeHash; }, $set(v) { const obj = $t17_18.$get(); obj.treeHash = v; $t17_18.$set(obj); } };
6753 $t23_24 = { $get() { return $t17_18.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t17_18.$get(); obj.confirmedTranscriptHash = v; $t17_18.$set(obj); } };
6754 $t18_19.$set(1);
6755 $t19_20.$set(3);
6756 $t20_21.$set($t1_2);
6757 $t21_22.$set(1184274n);
6758 $t22_23.$set($t2_3);
6759 $t23_24.$set($t3_4);
6760 $t24_25 = checkPublicMessage($t17_18, $t11_12, $t9_10, 2, $t5_6, $t8_9, 'proposal');
6761 $t25_26 = ($t24_25 !== null);
6762 if ($t25_26) {
6763 $block = 1; break;
6764 }
6765 else {
6766 $block = 2; break;
6767 }
6768 break;
6769 }
6770 case 1: {
6771 return $t24_25;
6772 break;
6773 }
6774 case 2: {
6775 $t26_27 = checkPublicMessage($t17_18, $t14_15, $t12_13, 3, $t5_6, $t8_9, 'commit');
6776 $t27_28 = ($t26_27 !== null);
6777 if ($t27_28) {
6778 $block = 3; break;
6779 }
6780 else {
6781 $block = 4; break;
6782 }
6783 break;
6784 }
6785 case 3: {
6786 return $t26_27;
6787 break;
6788 }
6789 case 4: {
6790 $t28_29 = deriveSecretTree(3, 2, $t6_7);
6791 $t29_30 = $t28_29[0];
6792 $t30_31 = $t28_29[1];
6793 $t31_32 = ($t30_31 !== null);
6794 if ($t31_32) {
6795 $block = 5; break;
6796 }
6797 else {
6798 $block = 6; break;
6799 }
6800 break;
6801 }
6802 case 5: {
6803 $t32_33 = $rt.types.methodCall($t30_31, 'Error', []);
6804 $t33_34 = ('deriveSecretTree: ' + $t32_33);
6805 $t34_35 = errors.New($t33_34);
6806 return $t34_35;
6807 break;
6808 }
6809 case 6: {
6810 $t35_36 = checkPrivateMessage($t17_18, $t29_30, $t7_8, $t10_11, $t9_10, 2, $t5_6, 'proposal_priv');
6811 $t36_37 = ($t35_36 !== null);
6812 if ($t36_37) {
6813 $block = 7; break;
6814 }
6815 else {
6816 $block = 8; break;
6817 }
6818 break;
6819 }
6820 case 7: {
6821 return $t35_36;
6822 break;
6823 }
6824 case 8: {
6825 $t37_38 = checkPrivateMessage($t17_18, $t29_30, $t7_8, $t13_14, $t12_13, 3, $t5_6, 'commit_priv');
6826 $t38_39 = ($t37_38 !== null);
6827 if ($t38_39) {
6828 $block = 9; break;
6829 }
6830 else {
6831 $block = 10; break;
6832 }
6833 break;
6834 }
6835 case 9: {
6836 return $t37_38;
6837 break;
6838 }
6839 case 10: {
6840 $t39_40 = checkPrivateMessage($t17_18, $t29_30, $t7_8, $t16_17, $t15_16, 1, $t5_6, 'application_priv');
6841 $t40_41 = ($t39_40 !== null);
6842 if ($t40_41) {
6843 $block = 11; break;
6844 }
6845 else {
6846 $block = 12; break;
6847 }
6848 break;
6849 }
6850 case 11: {
6851 return $t39_40;
6852 break;
6853 }
6854 case 12: {
6855 return null;
6856 break;
6857 }
6858 }
6859 }
6860 }
6861
6862 export function checkPublicMessage(ctx, wire, wantBody, wantCT, sigPub, membershipKey, tag) {
6863 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60;
6864 let $block = 0;
6865 while (true) {
6866 switch ($block) {
6867 case 0: {
6868 $t0_1 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
6869 $t1_2 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t0_1);
6870 $t2_3 = unmarshalRaw(wire, $t1_2);
6871 $t3_4 = ($t2_3 !== null);
6872 if ($t3_4) {
6873 $block = 1; break;
6874 }
6875 else {
6876 $block = 2; break;
6877 }
6878 break;
6879 }
6880 case 1: {
6881 $t4_5 = (tag + ': unmarshal mlsMessage: ');
6882 $t5_6 = $rt.types.methodCall($t2_3, 'Error', []);
6883 $t6_7 = ($t4_5 + $t5_6);
6884 $t7_8 = errors.New($t6_7);
6885 return $t7_8;
6886 break;
6887 }
6888 case 2: {
6889 $t8_9 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
6890 $t9_10 = $t8_9.$get();
6891 $t10_11 = ($t9_10 !== 1);
6892 if ($t10_11) {
6893 $block = 3; break;
6894 }
6895 else {
6896 $block = 5; break;
6897 }
6898 break;
6899 }
6900 case 3: {
6901 $t11_12 = (tag + ': wireFormat is not public');
6902 $t12_13 = errors.New($t11_12);
6903 return $t12_13;
6904 break;
6905 }
6906 case 4: {
6907 $t13_14 = { $get() { return $t0_1.$get().publicMessage; }, $set(v) { const obj = $t0_1.$get(); obj.publicMessage = v; $t0_1.$set(obj); } };
6908 $t14_15 = $t13_14.$get();
6909 $t15_16 = { $get() { return $t14_15.$get().content; }, $set(v) { const obj = $t14_15.$get(); obj.content = v; $t14_15.$set(obj); } };
6910 $t16_17 = { $get() { return $t15_16.$get().contentType; }, $set(v) { const obj = $t15_16.$get(); obj.contentType = v; $t15_16.$set(obj); } };
6911 $t17_18 = $t16_17.$get();
6912 $t18_19 = ($t17_18 !== wantCT);
6913 if ($t18_19) {
6914 $block = 6; break;
6915 }
6916 else {
6917 $block = 7; break;
6918 }
6919 break;
6920 }
6921 case 5: {
6922 $t19_20 = { $get() { return $t0_1.$get().publicMessage; }, $set(v) { const obj = $t0_1.$get(); obj.publicMessage = v; $t0_1.$set(obj); } };
6923 $t20_21 = $t19_20.$get();
6924 $t21_22 = ($t20_21 === null);
6925 if ($t21_22) {
6926 $block = 3; break;
6927 }
6928 else {
6929 $block = 4; break;
6930 }
6931 break;
6932 }
6933 case 6: {
6934 $t22_23 = (tag + ': unexpected contentType');
6935 $t23_24 = errors.New($t22_23);
6936 return $t23_24;
6937 break;
6938 }
6939 case 7: {
6940 $t24_25 = publicMessage$authenticatedContent($t14_15);
6941 $t25_26 = authenticatedContent$verifySignature($t24_25, sigPub, ctx);
6942 if ($t25_26) {
6943 $block = 9; break;
6944 }
6945 else {
6946 $block = 8; break;
6947 }
6948 break;
6949 }
6950 case 8: {
6951 $t26_27 = (tag + ': verifySignature failed');
6952 $t27_28 = errors.New($t26_27);
6953 return $t27_28;
6954 break;
6955 }
6956 case 9: {
6957 $t28_29 = publicMessage$verifyMembershipTag($t14_15, membershipKey, ctx);
6958 if ($t28_29) {
6959 $block = 11; break;
6960 }
6961 else {
6962 $block = 10; break;
6963 }
6964 break;
6965 }
6966 case 10: {
6967 $t29_30 = (tag + ': verifyMembershipTag failed');
6968 $t30_31 = errors.New($t29_30);
6969 return $t30_31;
6970 break;
6971 }
6972 case 11: {
6973 $t31_32 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
6974 $t32_33 = (wantCT === 2);
6975 if ($t32_33) {
6976 $block = 13; break;
6977 }
6978 else {
6979 $block = 15; break;
6980 }
6981 break;
6982 }
6983 case 12: {
6984 $t33_34 = Writer$bytes($t31_32);
6985 $t34_35 = $t33_34[0];
6986 $t35_36 = $t33_34[1];
6987 $t36_37 = ($t35_36 !== null);
6988 if ($t36_37) {
6989 $block = 17; break;
6990 }
6991 else {
6992 $block = 18; break;
6993 }
6994 break;
6995 }
6996 case 13: {
6997 $t37_38 = { $get() { return $t14_15.$get().content; }, $set(v) { const obj = $t14_15.$get(); obj.content = v; $t14_15.$set(obj); } };
6998 $t38_39 = { $get() { return $t37_38.$get().proposal; }, $set(v) { const obj = $t37_38.$get(); obj.proposal = v; $t37_38.$set(obj); } };
6999 $t39_40 = $t38_39.$get();
7000 $t40_41 = proposal$marshal($t39_40, $t31_32);
7001 $block = 12; break;
7002 break;
7003 }
7004 case 14: {
7005 $t41_42 = { $get() { return $t14_15.$get().content; }, $set(v) { const obj = $t14_15.$get(); obj.content = v; $t14_15.$set(obj); } };
7006 $t42_43 = { $get() { return $t41_42.$get().commit; }, $set(v) { const obj = $t41_42.$get(); obj.commit = v; $t41_42.$set(obj); } };
7007 $t43_44 = $t42_43.$get();
7008 $t44_45 = commit$marshal($t43_44, $t31_32);
7009 $block = 12; break;
7010 break;
7011 }
7012 case 15: {
7013 $t45_46 = (wantCT === 3);
7014 if ($t45_46) {
7015 $block = 14; break;
7016 }
7017 else {
7018 $block = 16; break;
7019 }
7020 break;
7021 }
7022 case 16: {
7023 $t46_47 = (tag + ': unsupported contentType for public message');
7024 $t47_48 = errors.New($t46_47);
7025 return $t47_48;
7026 break;
7027 }
7028 case 17: {
7029 $t48_49 = (tag + ': marshal content body: ');
7030 $t49_50 = $rt.types.methodCall($t35_36, 'Error', []);
7031 $t50_51 = ($t48_49 + $t49_50);
7032 $t51_52 = errors.New($t50_51);
7033 return $t51_52;
7034 break;
7035 }
7036 case 18: {
7037 $t52_53 = bytesEqual($t34_35, wantBody);
7038 if ($t52_53) {
7039 $block = 20; break;
7040 }
7041 else {
7042 $block = 19; break;
7043 }
7044 break;
7045 }
7046 case 19: {
7047 $t53_54 = (tag + ': content body mismatch: got ');
7048 $t54_55 = hexenc($t34_35);
7049 $t55_56 = ($t53_54 + $t54_55);
7050 $t56_57 = ($t55_56 + ' want ');
7051 $t57_58 = hexenc(wantBody);
7052 $t58_59 = ($t56_57 + $t57_58);
7053 $t59_60 = errors.New($t58_59);
7054 return $t59_60;
7055 break;
7056 }
7057 case 20: {
7058 return null;
7059 break;
7060 }
7061 }
7062 }
7063 }
7064
7065 export function checkPrivateMessage(ctx, tree, senderDataSecret, wire, wantBody, wantCT, sigPub, tag) {
7066 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139;
7067 let $block = 0;
7068 while (true) {
7069 switch ($block) {
7070 case 0: {
7071 $t0_1 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
7072 $t1_2 = $t0_1.$get();
7073 $t2_3 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7074 $t3_4 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t2_3);
7075 $t4_5 = unmarshalRaw(wire, $t3_4);
7076 $t5_6 = ($t4_5 !== null);
7077 if ($t5_6) {
7078 $block = 1; break;
7079 }
7080 else {
7081 $block = 2; break;
7082 }
7083 break;
7084 }
7085 case 1: {
7086 $t6_7 = (tag + ': unmarshal mlsMessage: ');
7087 $t7_8 = $rt.types.methodCall($t4_5, 'Error', []);
7088 $t8_9 = ($t6_7 + $t7_8);
7089 $t9_10 = errors.New($t8_9);
7090 return $t9_10;
7091 break;
7092 }
7093 case 2: {
7094 $t10_11 = { $get() { return $t2_3.$get().wireFormat; }, $set(v) { const obj = $t2_3.$get(); obj.wireFormat = v; $t2_3.$set(obj); } };
7095 $t11_12 = $t10_11.$get();
7096 $t12_13 = ($t11_12 !== 2);
7097 if ($t12_13) {
7098 $block = 3; break;
7099 }
7100 else {
7101 $block = 5; break;
7102 }
7103 break;
7104 }
7105 case 3: {
7106 $t13_14 = (tag + ': wireFormat is not private');
7107 $t14_15 = errors.New($t13_14);
7108 return $t14_15;
7109 break;
7110 }
7111 case 4: {
7112 $t15_16 = { $get() { return $t2_3.$get().privateMessage; }, $set(v) { const obj = $t2_3.$get(); obj.privateMessage = v; $t2_3.$set(obj); } };
7113 $t16_17 = $t15_16.$get();
7114 $t17_18 = { $get() { return $t16_17.$get().contentType; }, $set(v) { const obj = $t16_17.$get(); obj.contentType = v; $t16_17.$set(obj); } };
7115 $t18_19 = $t17_18.$get();
7116 $t19_20 = ($t18_19 !== wantCT);
7117 if ($t19_20) {
7118 $block = 6; break;
7119 }
7120 else {
7121 $block = 7; break;
7122 }
7123 break;
7124 }
7125 case 5: {
7126 $t20_21 = { $get() { return $t2_3.$get().privateMessage; }, $set(v) { const obj = $t2_3.$get(); obj.privateMessage = v; $t2_3.$set(obj); } };
7127 $t21_22 = $t20_21.$get();
7128 $t22_23 = ($t21_22 === null);
7129 if ($t22_23) {
7130 $block = 3; break;
7131 }
7132 else {
7133 $block = 4; break;
7134 }
7135 break;
7136 }
7137 case 6: {
7138 $t23_24 = (tag + ': unexpected contentType');
7139 $t24_25 = errors.New($t23_24);
7140 return $t24_25;
7141 break;
7142 }
7143 case 7: {
7144 $t25_26 = privateMessage$decryptSenderData($t16_17, $t1_2, senderDataSecret);
7145 $t26_27 = $t25_26[0];
7146 $t27_28 = $t25_26[1];
7147 $t28_29 = ($t27_28 !== null);
7148 if ($t28_29) {
7149 $block = 8; break;
7150 }
7151 else {
7152 $block = 9; break;
7153 }
7154 break;
7155 }
7156 case 8: {
7157 $t29_30 = (tag + ': decryptSenderData: ');
7158 $t30_31 = $rt.types.methodCall($t27_28, 'Error', []);
7159 $t31_32 = ($t29_30 + $t30_31);
7160 $t32_33 = errors.New($t31_32);
7161 return $t32_33;
7162 break;
7163 }
7164 case 9: {
7165 $t33_34 = ratchetLabelFromContentType(wantCT);
7166 $t34_35 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7167 $t35_36 = { $get() { return $t26_27.$get().leafIndex; }, $set(v) { const obj = $t26_27.$get(); obj.leafIndex = v; $t26_27.$set(obj); } };
7168 $t36_37 = $t35_36.$get();
7169 $t37_38 = leafIndex$nodeIndex($t36_37);
7170 $t38_39 = secretTree$deriveRatchetRoot(tree, $t1_2, $t37_38, $t33_34);
7171 $t39_40 = $t38_39[0];
7172 $t34_35.$set($rt.builtin.cloneValue($t39_40));
7173 $t40_41 = $t38_39[1];
7174 $t41_42 = ($t40_41 !== null);
7175 if ($t41_42) {
7176 $block = 10; break;
7177 }
7178 else {
7179 $block = 13; break;
7180 }
7181 break;
7182 }
7183 case 10: {
7184 $t42_43 = (tag + ': deriveRatchetRoot: ');
7185 $t43_44 = $rt.types.methodCall($t40_41, 'Error', []);
7186 $t44_45 = ($t42_43 + $t43_44);
7187 $t45_46 = errors.New($t44_45);
7188 return $t45_46;
7189 break;
7190 }
7191 case 11: {
7192 $t46_47 = $t34_35.$get();
7193 $t47_48 = ratchetSecret$deriveNext($t46_47, $t1_2);
7194 $t48_49 = $t47_48[0];
7195 $t34_35.$set($rt.builtin.cloneValue($t48_49));
7196 $t49_50 = $t47_48[1];
7197 $t50_51 = ($t49_50 !== null);
7198 if ($t50_51) {
7199 $block = 14; break;
7200 }
7201 else {
7202 $block = 13; break;
7203 }
7204 break;
7205 }
7206 case 12: {
7207 $t51_52 = $t34_35.$get();
7208 $t52_53 = { $get() { return $t26_27.$get().reuseGuard; }, $set(v) { const obj = $t26_27.$get(); obj.reuseGuard = v; $t26_27.$set(obj); } };
7209 $t53_54 = $t52_53.$get();
7210 $t54_55 = privateMessage$decryptContent($t16_17, $t1_2, $t51_52, $t53_54);
7211 $t55_56 = $t54_55[0];
7212 $t56_57 = $t54_55[1];
7213 $t57_58 = ($t56_57 !== null);
7214 if ($t57_58) {
7215 $block = 15; break;
7216 }
7217 else {
7218 $block = 16; break;
7219 }
7220 break;
7221 }
7222 case 13: {
7223 $t58_59 = { $get() { return $t34_35.$get().generation; }, $set(v) { const obj = $t34_35.$get(); obj.generation = v; $t34_35.$set(obj); } };
7224 $t59_60 = $t58_59.$get();
7225 $t60_61 = { $get() { return $t26_27.$get().generation; }, $set(v) { const obj = $t26_27.$get(); obj.generation = v; $t26_27.$set(obj); } };
7226 $t61_62 = $t60_61.$get();
7227 $t62_63 = ($t59_60 < $t61_62);
7228 if ($t62_63) {
7229 $block = 11; break;
7230 }
7231 else {
7232 $block = 12; break;
7233 }
7234 break;
7235 }
7236 case 14: {
7237 $t63_64 = (tag + ': deriveNext: ');
7238 $t64_65 = $rt.types.methodCall($t49_50, 'Error', []);
7239 $t65_66 = ($t63_64 + $t64_65);
7240 $t66_67 = errors.New($t65_66);
7241 return $t66_67;
7242 break;
7243 }
7244 case 15: {
7245 $t67_68 = (tag + ': decryptContent: ');
7246 $t68_69 = $rt.types.methodCall($t56_57, 'Error', []);
7247 $t69_70 = ($t67_68 + $t68_69);
7248 $t70_71 = errors.New($t69_70);
7249 return $t70_71;
7250 break;
7251 }
7252 case 16: {
7253 $t71_72 = { $value: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7254 $t72_73 = { $get() { return $t71_72.$get().groupID; }, $set(v) { const obj = $t71_72.$get(); obj.groupID = v; $t71_72.$set(obj); } };
7255 $t73_74 = { $get() { return $t16_17.$get().groupID; }, $set(v) { const obj = $t16_17.$get(); obj.groupID = v; $t16_17.$set(obj); } };
7256 $t74_75 = $t73_74.$get();
7257 $t75_76 = { $get() { return $t71_72.$get().epoch; }, $set(v) { const obj = $t71_72.$get(); obj.epoch = v; $t71_72.$set(obj); } };
7258 $t76_77 = { $get() { return $t16_17.$get().epoch; }, $set(v) { const obj = $t16_17.$get(); obj.epoch = v; $t16_17.$set(obj); } };
7259 $t77_78 = $t76_77.$get();
7260 $t78_79 = { $get() { return $t71_72.$get().sender; }, $set(v) { const obj = $t71_72.$get(); obj.sender = v; $t71_72.$set(obj); } };
7261 $t79_80 = { $get() { return $t78_79.$get().senderType; }, $set(v) { const obj = $t78_79.$get(); obj.senderType = v; $t78_79.$set(obj); } };
7262 $t80_81 = { $get() { return $t78_79.$get().leafIndex; }, $set(v) { const obj = $t78_79.$get(); obj.leafIndex = v; $t78_79.$set(obj); } };
7263 $t81_82 = { $get() { return $t26_27.$get().leafIndex; }, $set(v) { const obj = $t26_27.$get(); obj.leafIndex = v; $t26_27.$set(obj); } };
7264 $t82_83 = $t81_82.$get();
7265 $t83_84 = { $get() { return $t71_72.$get().authenticatedData; }, $set(v) { const obj = $t71_72.$get(); obj.authenticatedData = v; $t71_72.$set(obj); } };
7266 $t84_85 = { $get() { return $t16_17.$get().authenticatedData; }, $set(v) { const obj = $t16_17.$get(); obj.authenticatedData = v; $t16_17.$set(obj); } };
7267 $t85_86 = $t84_85.$get();
7268 $t86_87 = { $get() { return $t71_72.$get().contentType; }, $set(v) { const obj = $t71_72.$get(); obj.contentType = v; $t71_72.$set(obj); } };
7269 $t87_88 = { $get() { return $t16_17.$get().contentType; }, $set(v) { const obj = $t16_17.$get(); obj.contentType = v; $t16_17.$set(obj); } };
7270 $t88_89 = $t87_88.$get();
7271 $t89_90 = { $get() { return $t71_72.$get().applicationData; }, $set(v) { const obj = $t71_72.$get(); obj.applicationData = v; $t71_72.$set(obj); } };
7272 $t90_91 = { $get() { return $t55_56.$get().applicationData; }, $set(v) { const obj = $t55_56.$get(); obj.applicationData = v; $t55_56.$set(obj); } };
7273 $t91_92 = $t90_91.$get();
7274 $t92_93 = { $get() { return $t71_72.$get().proposal; }, $set(v) { const obj = $t71_72.$get(); obj.proposal = v; $t71_72.$set(obj); } };
7275 $t93_94 = { $get() { return $t55_56.$get().proposal; }, $set(v) { const obj = $t55_56.$get(); obj.proposal = v; $t55_56.$set(obj); } };
7276 $t94_95 = $t93_94.$get();
7277 $t95_96 = { $get() { return $t71_72.$get().commit; }, $set(v) { const obj = $t71_72.$get(); obj.commit = v; $t71_72.$set(obj); } };
7278 $t96_97 = { $get() { return $t55_56.$get().commit; }, $set(v) { const obj = $t55_56.$get(); obj.commit = v; $t55_56.$set(obj); } };
7279 $t97_98 = $t96_97.$get();
7280 $t72_73.$set($t74_75);
7281 $t75_76.$set($t77_78);
7282 $t79_80.$set(1);
7283 $t80_81.$set($t82_83);
7284 $t83_84.$set($t85_86);
7285 $t86_87.$set($t88_89);
7286 $t89_90.$set($t91_92);
7287 $t92_93.$set($t94_95);
7288 $t95_96.$set($t97_98);
7289 $t98_99 = { $value: { wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7290 $t99_100 = { $get() { return $t98_99.$get().wireFormat; }, $set(v) { const obj = $t98_99.$get(); obj.wireFormat = v; $t98_99.$set(obj); } };
7291 $t100_101 = { $get() { return $t98_99.$get().content; }, $set(v) { const obj = $t98_99.$get(); obj.content = v; $t98_99.$set(obj); } };
7292 $t101_102 = $t71_72.$get();
7293 $t102_103 = { $get() { return $t98_99.$get().auth; }, $set(v) { const obj = $t98_99.$get(); obj.auth = v; $t98_99.$set(obj); } };
7294 $t103_104 = { $get() { return $t55_56.$get().auth; }, $set(v) { const obj = $t55_56.$get(); obj.auth = v; $t55_56.$set(obj); } };
7295 $t104_105 = $t103_104.$get();
7296 $t99_100.$set(2);
7297 $t100_101.$set($rt.builtin.cloneValue($t101_102));
7298 $t102_103.$set($rt.builtin.cloneValue($t104_105));
7299 $t105_106 = authenticatedContent$verifySignature($t98_99, sigPub, ctx);
7300 if ($t105_106) {
7301 $block = 18; break;
7302 }
7303 else {
7304 $block = 17; break;
7305 }
7306 break;
7307 }
7308 case 17: {
7309 $t106_107 = (tag + ': verifySignature failed');
7310 $t107_108 = errors.New($t106_107);
7311 return $t107_108;
7312 break;
7313 }
7314 case 18: {
7315 $t108_109 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7316 $t109_110 = (wantCT === 1);
7317 if ($t109_110) {
7318 $block = 20; break;
7319 }
7320 else {
7321 $block = 22; break;
7322 }
7323 break;
7324 }
7325 case 19: {
7326 $t110_111 = Writer$bytes($t108_109);
7327 $t111_112 = $t110_111[0];
7328 $t112_113 = $t110_111[1];
7329 $t113_114 = ($t112_113 !== null);
7330 if ($t113_114) {
7331 $block = 26; break;
7332 }
7333 else {
7334 $block = 27; break;
7335 }
7336 break;
7337 }
7338 case 20: {
7339 $t114_115 = { $get() { return $t55_56.$get().applicationData; }, $set(v) { const obj = $t55_56.$get(); obj.applicationData = v; $t55_56.$set(obj); } };
7340 $t115_116 = $t114_115.$get();
7341 $t116_117 = Writer$addBytes($t108_109, $t115_116);
7342 $block = 19; break;
7343 break;
7344 }
7345 case 21: {
7346 $t117_118 = { $get() { return $t55_56.$get().proposal; }, $set(v) { const obj = $t55_56.$get(); obj.proposal = v; $t55_56.$set(obj); } };
7347 $t118_119 = $t117_118.$get();
7348 $t119_120 = proposal$marshal($t118_119, $t108_109);
7349 $block = 19; break;
7350 break;
7351 }
7352 case 22: {
7353 $t120_121 = (wantCT === 2);
7354 if ($t120_121) {
7355 $block = 21; break;
7356 }
7357 else {
7358 $block = 24; break;
7359 }
7360 break;
7361 }
7362 case 23: {
7363 $t121_122 = { $get() { return $t55_56.$get().commit; }, $set(v) { const obj = $t55_56.$get(); obj.commit = v; $t55_56.$set(obj); } };
7364 $t122_123 = $t121_122.$get();
7365 $t123_124 = commit$marshal($t122_123, $t108_109);
7366 $block = 19; break;
7367 break;
7368 }
7369 case 24: {
7370 $t124_125 = (wantCT === 3);
7371 if ($t124_125) {
7372 $block = 23; break;
7373 }
7374 else {
7375 $block = 25; break;
7376 }
7377 break;
7378 }
7379 case 25: {
7380 $t125_126 = (tag + ': unsupported contentType');
7381 $t126_127 = errors.New($t125_126);
7382 return $t126_127;
7383 break;
7384 }
7385 case 26: {
7386 $t127_128 = (tag + ': marshal content body: ');
7387 $t128_129 = $rt.types.methodCall($t112_113, 'Error', []);
7388 $t129_130 = ($t127_128 + $t128_129);
7389 $t130_131 = errors.New($t129_130);
7390 return $t130_131;
7391 break;
7392 }
7393 case 27: {
7394 $t131_132 = bytesEqual($t111_112, wantBody);
7395 if ($t131_132) {
7396 $block = 29; break;
7397 }
7398 else {
7399 $block = 28; break;
7400 }
7401 break;
7402 }
7403 case 28: {
7404 $t132_133 = (tag + ': content body mismatch: got ');
7405 $t133_134 = hexenc($t111_112);
7406 $t134_135 = ($t132_133 + $t133_134);
7407 $t135_136 = ($t134_135 + ' want ');
7408 $t136_137 = hexenc(wantBody);
7409 $t137_138 = ($t135_136 + $t136_137);
7410 $t138_139 = errors.New($t137_138);
7411 return $t138_139;
7412 break;
7413 }
7414 case 29: {
7415 return null;
7416 break;
7417 }
7418 }
7419 }
7420 }
7421
7422 export function TestSecretTree() {
7423 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197, $t197_198, $t198_199, $t199_200, $t200_201, $t201_202;
7424 let $block = 0;
7425 while (true) {
7426 switch ($block) {
7427 case 0: {
7428 $t0_1 = stEntries.$get();
7429 $t1_2 = $rt.builtin.len($t0_1);
7430 $t2_3 = -1;
7431 $block = 1; break;
7432 break;
7433 }
7434 case 1: {
7435 $t3_4 = ($t2_3 + 1);
7436 $t4_5 = ($t3_4 < $t1_2);
7437 if ($t4_5) {
7438 $block = 2; break;
7439 }
7440 else {
7441 $block = 3; break;
7442 }
7443 break;
7444 }
7445 case 2: {
7446 $t5_6 = $t0_1.addr($t3_4);
7447 $t6_7 = $t5_6.$get();
7448 $t7_8 = { $value: { numLeaves: 0, encryptionSecret: null, sdSecret: null, sdCiphertext: null, sdKey: null, sdNonce: null, leaves: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7449 $t7_8.$set($rt.builtin.cloneValue($t6_7));
7450 $t8_9 = { $get() { return $t7_8.$get().sdSecret; }, $set(v) { const obj = $t7_8.$get(); obj.sdSecret = v; $t7_8.$set(obj); } };
7451 $t9_10 = $t8_9.$get();
7452 $t10_11 = { $get() { return $t7_8.$get().sdCiphertext; }, $set(v) { const obj = $t7_8.$get(); obj.sdCiphertext = v; $t7_8.$set(obj); } };
7453 $t11_12 = $t10_11.$get();
7454 $t12_13 = expandSenderDataKey(3, $t9_10, $t11_12);
7455 $t13_14 = $t12_13[0];
7456 $t14_15 = $t12_13[1];
7457 $t15_16 = ($t14_15 !== null);
7458 if ($t15_16) {
7459 $block = 4; break;
7460 }
7461 else {
7462 $block = 5; break;
7463 }
7464 break;
7465 }
7466 case 3: {
7467 return null;
7468 break;
7469 }
7470 case 4: {
7471 $t16_17 = itoa($t3_4);
7472 $t17_18 = ('entry ' + $t16_17);
7473 $t18_19 = ($t17_18 + ': expandSenderDataKey: ');
7474 $t19_20 = $rt.types.methodCall($t14_15, 'Error', []);
7475 $t20_21 = ($t18_19 + $t19_20);
7476 $t21_22 = errors.New($t20_21);
7477 return $t21_22;
7478 break;
7479 }
7480 case 5: {
7481 $t22_23 = { $get() { return $t7_8.$get().sdKey; }, $set(v) { const obj = $t7_8.$get(); obj.sdKey = v; $t7_8.$set(obj); } };
7482 $t23_24 = $t22_23.$get();
7483 $t24_25 = bytesEqual($t13_14, $t23_24);
7484 if ($t24_25) {
7485 $block = 7; break;
7486 }
7487 else {
7488 $block = 6; break;
7489 }
7490 break;
7491 }
7492 case 6: {
7493 $t25_26 = itoa($t3_4);
7494 $t26_27 = ('entry ' + $t25_26);
7495 $t27_28 = ($t26_27 + ': sender data key mismatch');
7496 $t28_29 = errors.New($t27_28);
7497 return $t28_29;
7498 break;
7499 }
7500 case 7: {
7501 $t29_30 = { $get() { return $t7_8.$get().sdSecret; }, $set(v) { const obj = $t7_8.$get(); obj.sdSecret = v; $t7_8.$set(obj); } };
7502 $t30_31 = $t29_30.$get();
7503 $t31_32 = { $get() { return $t7_8.$get().sdCiphertext; }, $set(v) { const obj = $t7_8.$get(); obj.sdCiphertext = v; $t7_8.$set(obj); } };
7504 $t32_33 = $t31_32.$get();
7505 $t33_34 = expandSenderDataNonce(3, $t30_31, $t32_33);
7506 $t34_35 = $t33_34[0];
7507 $t35_36 = $t33_34[1];
7508 $t36_37 = ($t35_36 !== null);
7509 if ($t36_37) {
7510 $block = 8; break;
7511 }
7512 else {
7513 $block = 9; break;
7514 }
7515 break;
7516 }
7517 case 8: {
7518 $t37_38 = itoa($t3_4);
7519 $t38_39 = ('entry ' + $t37_38);
7520 $t39_40 = ($t38_39 + ': expandSenderDataNonce: ');
7521 $t40_41 = $rt.types.methodCall($t35_36, 'Error', []);
7522 $t41_42 = ($t39_40 + $t40_41);
7523 $t42_43 = errors.New($t41_42);
7524 return $t42_43;
7525 break;
7526 }
7527 case 9: {
7528 $t43_44 = { $get() { return $t7_8.$get().sdNonce; }, $set(v) { const obj = $t7_8.$get(); obj.sdNonce = v; $t7_8.$set(obj); } };
7529 $t44_45 = $t43_44.$get();
7530 $t45_46 = bytesEqual($t34_35, $t44_45);
7531 if ($t45_46) {
7532 $block = 11; break;
7533 }
7534 else {
7535 $block = 10; break;
7536 }
7537 break;
7538 }
7539 case 10: {
7540 $t46_47 = itoa($t3_4);
7541 $t47_48 = ('entry ' + $t46_47);
7542 $t48_49 = ($t47_48 + ': sender data nonce mismatch');
7543 $t49_50 = errors.New($t48_49);
7544 return $t49_50;
7545 break;
7546 }
7547 case 11: {
7548 $t50_51 = { $get() { return $t7_8.$get().numLeaves; }, $set(v) { const obj = $t7_8.$get(); obj.numLeaves = v; $t7_8.$set(obj); } };
7549 $t51_52 = $t50_51.$get();
7550 $t52_53 = ($t51_52 >>> 0);
7551 $t53_54 = { $get() { return $t7_8.$get().encryptionSecret; }, $set(v) { const obj = $t7_8.$get(); obj.encryptionSecret = v; $t7_8.$set(obj); } };
7552 $t54_55 = $t53_54.$get();
7553 $t55_56 = deriveSecretTree(3, $t52_53, $t54_55);
7554 $t56_57 = $t55_56[0];
7555 $t57_58 = $t55_56[1];
7556 $t58_59 = ($t57_58 !== null);
7557 if ($t58_59) {
7558 $block = 12; break;
7559 }
7560 else {
7561 $block = 13; break;
7562 }
7563 break;
7564 }
7565 case 12: {
7566 $t59_60 = itoa($t3_4);
7567 $t60_61 = ('entry ' + $t59_60);
7568 $t61_62 = ($t60_61 + ': deriveSecretTree: ');
7569 $t62_63 = $rt.types.methodCall($t57_58, 'Error', []);
7570 $t63_64 = ($t61_62 + $t62_63);
7571 $t64_65 = errors.New($t63_64);
7572 return $t64_65;
7573 break;
7574 }
7575 case 13: {
7576 $t65_66 = { $get() { return $t7_8.$get().leaves; }, $set(v) { const obj = $t7_8.$get(); obj.leaves = v; $t7_8.$set(obj); } };
7577 $t66_67 = $t65_66.$get();
7578 $t67_68 = $rt.builtin.len($t66_67);
7579 $t68_69 = -1;
7580 $block = 14; break;
7581 break;
7582 }
7583 case 14: {
7584 $t69_70 = ($t68_69 + 1);
7585 $t70_71 = ($t69_70 < $t67_68);
7586 if ($t70_71) {
7587 $block = 15; break;
7588 }
7589 else {
7590 $t2_3 = $t3_4;
7591 $block = 1; break;
7592 }
7593 break;
7594 }
7595 case 15: {
7596 $t71_72 = $t66_67.addr($t69_70);
7597 $t72_73 = $t71_72.$get();
7598 $t73_74 = { $value: { gens: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7599 $t73_74.$set($rt.builtin.cloneValue($t72_73));
7600 $t74_75 = ($t69_70 >>> 0);
7601 $t75_76 = leafIndex$nodeIndex($t74_75);
7602 $t76_77 = { $value: $rt.builtin.makeSlice(2, 2, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
7603 $t77_78 = $t76_77.$get().addr(0);
7604 $t78_79 = ratchetLabelHandshake.$get();
7605 $t77_78.$set($t78_79);
7606 $t79_80 = $t76_77.$get().addr(1);
7607 $t80_81 = ratchetLabelApplication.$get();
7608 $t79_80.$set($t80_81);
7609 $t81_82 = $rt.builtin.sliceSlice($t76_77.$get(), undefined, undefined, undefined);
7610 $t82_83 = $rt.builtin.len($t81_82);
7611 $t83_84 = -1;
7612 $block = 16; break;
7613 break;
7614 }
7615 case 16: {
7616 $t84_85 = ($t83_84 + 1);
7617 $t85_86 = ($t84_85 < $t82_83);
7618 if ($t85_86) {
7619 $block = 17; break;
7620 }
7621 else {
7622 $t68_69 = $t69_70;
7623 $block = 14; break;
7624 }
7625 break;
7626 }
7627 case 17: {
7628 $t86_87 = $t81_82.addr($t84_85);
7629 $t87_88 = $t86_87.$get();
7630 $t88_89 = secretTree$deriveRatchetRoot($t56_57, 3, $t75_76, $t87_88);
7631 $t89_90 = $t88_89[0];
7632 $t90_91 = $t88_89[1];
7633 $t91_92 = ($t90_91 !== null);
7634 if ($t91_92) {
7635 $block = 18; break;
7636 }
7637 else {
7638 $block = 19; break;
7639 }
7640 break;
7641 }
7642 case 18: {
7643 $t92_93 = itoa($t3_4);
7644 $t93_94 = ('entry ' + $t92_93);
7645 $t94_95 = ($t93_94 + ' leaf ');
7646 $t95_96 = itoa($t69_70);
7647 $t96_97 = ($t94_95 + $t95_96);
7648 $t97_98 = ($t96_97 + ': deriveRatchetRoot: ');
7649 $t98_99 = $rt.types.methodCall($t90_91, 'Error', []);
7650 $t99_100 = ($t97_98 + $t98_99);
7651 $t100_101 = errors.New($t99_100);
7652 return $t100_101;
7653 break;
7654 }
7655 case 19: {
7656 $t101_102 = { $get() { return $t73_74.$get().gens; }, $set(v) { const obj = $t73_74.$get(); obj.gens = v; $t73_74.$set(obj); } };
7657 $t102_103 = $t101_102.$get();
7658 $t103_104 = $rt.builtin.len($t102_103);
7659 $t104_105 = -1;
7660 $block = 20; break;
7661 break;
7662 }
7663 case 20: {
7664 $t105_106 = ($t104_105 + 1);
7665 $t106_107 = ($t105_106 < $t103_104);
7666 if ($t106_107) {
7667 $block = 21; break;
7668 }
7669 else {
7670 $t83_84 = $t84_85;
7671 $block = 16; break;
7672 }
7673 break;
7674 }
7675 case 21: {
7676 $t107_108 = $t102_103.addr($t105_106);
7677 $t108_109 = $t107_108.$get();
7678 $t109_110 = { $value: { generation: 0, appKey: null, appNonce: null, hsKey: null, hsNonce: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7679 $t109_110.$set($rt.builtin.cloneValue($t108_109));
7680 $t110_111 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7681 $t110_111.$set($rt.builtin.cloneValue($t89_90));
7682 $block = 24; break;
7683 break;
7684 }
7685 case 22: {
7686 $t111_112 = $t110_111.$get();
7687 $t112_113 = ratchetSecret$deriveNext($t111_112, 3);
7688 $t113_114 = $t112_113[0];
7689 $t110_111.$set($rt.builtin.cloneValue($t113_114));
7690 $t114_115 = $t112_113[1];
7691 $t115_116 = ($t114_115 !== null);
7692 if ($t115_116) {
7693 $block = 25; break;
7694 }
7695 else {
7696 $block = 24; break;
7697 }
7698 break;
7699 }
7700 case 23: {
7701 $t116_117 = $t110_111.$get();
7702 $t117_118 = ratchetSecret$deriveKey($t116_117, 3);
7703 $t118_119 = $t117_118[0];
7704 $t119_120 = $t117_118[1];
7705 $t120_121 = ($t119_120 !== null);
7706 if ($t120_121) {
7707 $block = 26; break;
7708 }
7709 else {
7710 $block = 27; break;
7711 }
7712 break;
7713 }
7714 case 24: {
7715 $t121_122 = { $get() { return $t110_111.$get().generation; }, $set(v) { const obj = $t110_111.$get(); obj.generation = v; $t110_111.$set(obj); } };
7716 $t122_123 = $t121_122.$get();
7717 $t123_124 = { $get() { return $t109_110.$get().generation; }, $set(v) { const obj = $t109_110.$get(); obj.generation = v; $t109_110.$set(obj); } };
7718 $t124_125 = $t123_124.$get();
7719 $t125_126 = ($t122_123 < $t124_125);
7720 if ($t125_126) {
7721 $block = 22; break;
7722 }
7723 else {
7724 $block = 23; break;
7725 }
7726 break;
7727 }
7728 case 25: {
7729 $t126_127 = itoa($t3_4);
7730 $t127_128 = ('entry ' + $t126_127);
7731 $t128_129 = ($t127_128 + ' leaf ');
7732 $t129_130 = itoa($t69_70);
7733 $t130_131 = ($t128_129 + $t129_130);
7734 $t131_132 = ($t130_131 + ': deriveNext: ');
7735 $t132_133 = $rt.types.methodCall($t114_115, 'Error', []);
7736 $t133_134 = ($t131_132 + $t132_133);
7737 $t134_135 = errors.New($t133_134);
7738 return $t134_135;
7739 break;
7740 }
7741 case 26: {
7742 $t135_136 = itoa($t3_4);
7743 $t136_137 = ('entry ' + $t135_136);
7744 $t137_138 = ($t136_137 + ' leaf ');
7745 $t138_139 = itoa($t69_70);
7746 $t139_140 = ($t137_138 + $t138_139);
7747 $t140_141 = ($t139_140 + ': deriveKey: ');
7748 $t141_142 = $rt.types.methodCall($t119_120, 'Error', []);
7749 $t142_143 = ($t140_141 + $t141_142);
7750 $t143_144 = errors.New($t142_143);
7751 return $t143_144;
7752 break;
7753 }
7754 case 27: {
7755 $t144_145 = $t110_111.$get();
7756 $t145_146 = ratchetSecret$deriveNonce($t144_145, 3);
7757 $t146_147 = $t145_146[0];
7758 $t147_148 = $t145_146[1];
7759 $t148_149 = ($t147_148 !== null);
7760 if ($t148_149) {
7761 $block = 28; break;
7762 }
7763 else {
7764 $block = 29; break;
7765 }
7766 break;
7767 }
7768 case 28: {
7769 $t149_150 = itoa($t3_4);
7770 $t150_151 = ('entry ' + $t149_150);
7771 $t151_152 = ($t150_151 + ' leaf ');
7772 $t152_153 = itoa($t69_70);
7773 $t153_154 = ($t151_152 + $t152_153);
7774 $t154_155 = ($t153_154 + ': deriveNonce: ');
7775 $t155_156 = $rt.types.methodCall($t147_148, 'Error', []);
7776 $t156_157 = ($t154_155 + $t155_156);
7777 $t157_158 = errors.New($t156_157);
7778 return $t157_158;
7779 break;
7780 }
7781 case 29: {
7782 $t158_159 = ratchetLabelHandshake.$get();
7783 $t159_160 = $rt.builtin.stringEqual($t87_88, $t158_159);
7784 if ($t159_160) {
7785 $block = 30; break;
7786 }
7787 else {
7788 $block = 32; break;
7789 }
7790 break;
7791 }
7792 case 30: {
7793 $t160_161 = { $get() { return $t109_110.$get().hsKey; }, $set(v) { const obj = $t109_110.$get(); obj.hsKey = v; $t109_110.$set(obj); } };
7794 $t161_162 = $t160_161.$get();
7795 $t162_163 = { $get() { return $t109_110.$get().hsNonce; }, $set(v) { const obj = $t109_110.$get(); obj.hsNonce = v; $t109_110.$set(obj); } };
7796 $t163_164 = $t162_163.$get();
7797 $t164_165 = $t161_162;
7798 $t165_166 = $t163_164;
7799 $block = 31; break;
7800 break;
7801 }
7802 case 31: {
7803 $t166_167 = bytesEqual($t118_119, $t164_165);
7804 if ($t166_167) {
7805 $block = 34; break;
7806 }
7807 else {
7808 $block = 33; break;
7809 }
7810 break;
7811 }
7812 case 32: {
7813 $t167_168 = { $get() { return $t109_110.$get().appKey; }, $set(v) { const obj = $t109_110.$get(); obj.appKey = v; $t109_110.$set(obj); } };
7814 $t168_169 = $t167_168.$get();
7815 $t169_170 = { $get() { return $t109_110.$get().appNonce; }, $set(v) { const obj = $t109_110.$get(); obj.appNonce = v; $t109_110.$set(obj); } };
7816 $t170_171 = $t169_170.$get();
7817 $t164_165 = $t168_169;
7818 $t165_166 = $t170_171;
7819 $block = 31; break;
7820 break;
7821 }
7822 case 33: {
7823 $t171_172 = itoa($t3_4);
7824 $t172_173 = ('entry ' + $t171_172);
7825 $t173_174 = ($t172_173 + ' leaf ');
7826 $t174_175 = itoa($t69_70);
7827 $t175_176 = ($t173_174 + $t174_175);
7828 $t176_177 = ($t175_176 + ' gen ');
7829 $t177_178 = { $get() { return $t109_110.$get().generation; }, $set(v) { const obj = $t109_110.$get(); obj.generation = v; $t109_110.$set(obj); } };
7830 $t178_179 = $t177_178.$get();
7831 $t179_180 = $t178_179;
7832 $t180_181 = itoa($t179_180);
7833 $t181_182 = ($t176_177 + $t180_181);
7834 $t182_183 = ($t181_182 + ' ');
7835 $t183_184 = ($t182_183 + $t87_88);
7836 $t184_185 = ($t183_184 + ' key mismatch');
7837 $t185_186 = errors.New($t184_185);
7838 return $t185_186;
7839 break;
7840 }
7841 case 34: {
7842 $t186_187 = bytesEqual($t146_147, $t165_166);
7843 if ($t186_187) {
7844 $t104_105 = $t105_106;
7845 $block = 20; break;
7846 }
7847 else {
7848 $block = 35; break;
7849 }
7850 break;
7851 }
7852 case 35: {
7853 $t187_188 = itoa($t3_4);
7854 $t188_189 = ('entry ' + $t187_188);
7855 $t189_190 = ($t188_189 + ' leaf ');
7856 $t190_191 = itoa($t69_70);
7857 $t191_192 = ($t189_190 + $t190_191);
7858 $t192_193 = ($t191_192 + ' gen ');
7859 $t193_194 = { $get() { return $t109_110.$get().generation; }, $set(v) { const obj = $t109_110.$get(); obj.generation = v; $t109_110.$set(obj); } };
7860 $t194_195 = $t193_194.$get();
7861 $t195_196 = $t194_195;
7862 $t196_197 = itoa($t195_196);
7863 $t197_198 = ($t192_193 + $t196_197);
7864 $t198_199 = ($t197_198 + ' ');
7865 $t199_200 = ($t198_199 + $t87_88);
7866 $t200_201 = ($t199_200 + ' nonce mismatch');
7867 $t201_202 = errors.New($t200_201);
7868 return $t201_202;
7869 break;
7870 }
7871 }
7872 }
7873 }
7874
7875 export function TestTreeMath() {
7876 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90;
7877 let $block = 0;
7878 while (true) {
7879 switch ($block) {
7880 case 0: {
7881 $t0_1 = treeMathVectors.$get();
7882 $t1_2 = $rt.builtin.len($t0_1);
7883 $t2_3 = -1;
7884 $block = 1; break;
7885 break;
7886 }
7887 case 1: {
7888 $t3_4 = ($t2_3 + 1);
7889 $t4_5 = ($t3_4 < $t1_2);
7890 if ($t4_5) {
7891 $block = 2; break;
7892 }
7893 else {
7894 $block = 3; break;
7895 }
7896 break;
7897 }
7898 case 2: {
7899 $t5_6 = $t0_1.addr($t3_4);
7900 $t6_7 = $t5_6.$get();
7901 $t7_8 = { $value: { nLeaves: 0, nNodes: 0, root: 0, left: null, right: null, parent: null, sibling: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
7902 $t7_8.$set($rt.builtin.cloneValue($t6_7));
7903 $t8_9 = { $get() { return $t7_8.$get().nLeaves; }, $set(v) { const obj = $t7_8.$get(); obj.nLeaves = v; $t7_8.$set(obj); } };
7904 $t9_10 = $t8_9.$get();
7905 $t10_11 = ($t9_10 >>> 0);
7906 $t11_12 = numLeaves$width($t10_11);
7907 $t12_13 = { $get() { return $t7_8.$get().nNodes; }, $set(v) { const obj = $t7_8.$get(); obj.nNodes = v; $t7_8.$set(obj); } };
7908 $t13_14 = $t12_13.$get();
7909 $t14_15 = ($t11_12 !== $t13_14);
7910 if ($t14_15) {
7911 $block = 4; break;
7912 }
7913 else {
7914 $block = 5; break;
7915 }
7916 break;
7917 }
7918 case 3: {
7919 return null;
7920 break;
7921 }
7922 case 4: {
7923 $t15_16 = errors.New('width mismatch');
7924 return $t15_16;
7925 break;
7926 }
7927 case 5: {
7928 $t16_17 = numLeaves$root($t10_11);
7929 $t17_18 = $t16_17;
7930 $t18_19 = { $get() { return $t7_8.$get().root; }, $set(v) { const obj = $t7_8.$get(); obj.root = v; $t7_8.$set(obj); } };
7931 $t19_20 = $t18_19.$get();
7932 $t20_21 = ($t17_18 !== $t19_20);
7933 if ($t20_21) {
7934 $block = 6; break;
7935 }
7936 else {
7937 $block = 7; break;
7938 }
7939 break;
7940 }
7941 case 6: {
7942 $t21_22 = errors.New('root mismatch');
7943 return $t21_22;
7944 break;
7945 }
7946 case 7: {
7947 $t22_23 = { $get() { return $t7_8.$get().left; }, $set(v) { const obj = $t7_8.$get(); obj.left = v; $t7_8.$set(obj); } };
7948 $t23_24 = $t22_23.$get();
7949 $t24_25 = $rt.builtin.len($t23_24);
7950 $t25_26 = -1;
7951 $block = 8; break;
7952 break;
7953 }
7954 case 8: {
7955 $t26_27 = ($t25_26 + 1);
7956 $t27_28 = ($t26_27 < $t24_25);
7957 if ($t27_28) {
7958 $block = 9; break;
7959 }
7960 else {
7961 $block = 10; break;
7962 }
7963 break;
7964 }
7965 case 9: {
7966 $t28_29 = $t23_24.addr($t26_27);
7967 $t29_30 = $t28_29.$get();
7968 $t30_31 = ($t26_27 >>> 0);
7969 $t31_32 = nodeIndex$left($t30_31);
7970 $t32_33 = $t31_32[0];
7971 $t33_34 = $t31_32[1];
7972 $t34_35 = ($t29_30 < 0);
7973 if ($t34_35) {
7974 $block = 11; break;
7975 }
7976 else {
7977 $block = 12; break;
7978 }
7979 break;
7980 }
7981 case 10: {
7982 $t35_36 = { $get() { return $t7_8.$get().right; }, $set(v) { const obj = $t7_8.$get(); obj.right = v; $t7_8.$set(obj); } };
7983 $t36_37 = $t35_36.$get();
7984 $t37_38 = $rt.builtin.len($t36_37);
7985 $t42_43 = -1;
7986 $block = 16; break;
7987 break;
7988 }
7989 case 11: {
7990 if ($t33_34) {
7991 $block = 13; break;
7992 }
7993 else {
7994 $t25_26 = $t26_27;
7995 $block = 8; break;
7996 }
7997 break;
7998 }
7999 case 12: {
8000 if ($t33_34) {
8001 $block = 15; break;
8002 }
8003 else {
8004 $block = 14; break;
8005 }
8006 break;
8007 }
8008 case 13: {
8009 $t38_39 = errors.New('left should be nil');
8010 return $t38_39;
8011 break;
8012 }
8013 case 14: {
8014 $t39_40 = errors.New('left mismatch');
8015 return $t39_40;
8016 break;
8017 }
8018 case 15: {
8019 $t40_41 = $t32_33;
8020 $t41_42 = ($t40_41 !== $t29_30);
8021 if ($t41_42) {
8022 $block = 14; break;
8023 }
8024 else {
8025 $t25_26 = $t26_27;
8026 $block = 8; break;
8027 }
8028 break;
8029 }
8030 case 16: {
8031 $t43_44 = ($t42_43 + 1);
8032 $t44_45 = ($t43_44 < $t37_38);
8033 if ($t44_45) {
8034 $block = 17; break;
8035 }
8036 else {
8037 $block = 18; break;
8038 }
8039 break;
8040 }
8041 case 17: {
8042 $t45_46 = $t36_37.addr($t43_44);
8043 $t46_47 = $t45_46.$get();
8044 $t47_48 = ($t43_44 >>> 0);
8045 $t48_49 = nodeIndex$right($t47_48);
8046 $t49_50 = $t48_49[0];
8047 $t50_51 = $t48_49[1];
8048 $t51_52 = ($t46_47 < 0);
8049 if ($t51_52) {
8050 $block = 19; break;
8051 }
8052 else {
8053 $block = 20; break;
8054 }
8055 break;
8056 }
8057 case 18: {
8058 $t52_53 = { $get() { return $t7_8.$get().parent; }, $set(v) { const obj = $t7_8.$get(); obj.parent = v; $t7_8.$set(obj); } };
8059 $t53_54 = $t52_53.$get();
8060 $t54_55 = $rt.builtin.len($t53_54);
8061 $t59_60 = -1;
8062 $block = 24; break;
8063 break;
8064 }
8065 case 19: {
8066 if ($t50_51) {
8067 $block = 21; break;
8068 }
8069 else {
8070 $t42_43 = $t43_44;
8071 $block = 16; break;
8072 }
8073 break;
8074 }
8075 case 20: {
8076 if ($t50_51) {
8077 $block = 23; break;
8078 }
8079 else {
8080 $block = 22; break;
8081 }
8082 break;
8083 }
8084 case 21: {
8085 $t55_56 = errors.New('right should be nil');
8086 return $t55_56;
8087 break;
8088 }
8089 case 22: {
8090 $t56_57 = errors.New('right mismatch');
8091 return $t56_57;
8092 break;
8093 }
8094 case 23: {
8095 $t57_58 = $t49_50;
8096 $t58_59 = ($t57_58 !== $t46_47);
8097 if ($t58_59) {
8098 $block = 22; break;
8099 }
8100 else {
8101 $t42_43 = $t43_44;
8102 $block = 16; break;
8103 }
8104 break;
8105 }
8106 case 24: {
8107 $t60_61 = ($t59_60 + 1);
8108 $t61_62 = ($t60_61 < $t54_55);
8109 if ($t61_62) {
8110 $block = 25; break;
8111 }
8112 else {
8113 $block = 26; break;
8114 }
8115 break;
8116 }
8117 case 25: {
8118 $t62_63 = $t53_54.addr($t60_61);
8119 $t63_64 = $t62_63.$get();
8120 $t64_65 = ($t60_61 >>> 0);
8121 $t65_66 = numLeaves$parent($t10_11, $t64_65);
8122 $t66_67 = $t65_66[0];
8123 $t67_68 = $t65_66[1];
8124 $t68_69 = ($t63_64 < 0);
8125 if ($t68_69) {
8126 $block = 27; break;
8127 }
8128 else {
8129 $block = 28; break;
8130 }
8131 break;
8132 }
8133 case 26: {
8134 $t69_70 = { $get() { return $t7_8.$get().sibling; }, $set(v) { const obj = $t7_8.$get(); obj.sibling = v; $t7_8.$set(obj); } };
8135 $t70_71 = $t69_70.$get();
8136 $t71_72 = $rt.builtin.len($t70_71);
8137 $t76_77 = -1;
8138 $block = 32; break;
8139 break;
8140 }
8141 case 27: {
8142 if ($t67_68) {
8143 $block = 29; break;
8144 }
8145 else {
8146 $t59_60 = $t60_61;
8147 $block = 24; break;
8148 }
8149 break;
8150 }
8151 case 28: {
8152 if ($t67_68) {
8153 $block = 31; break;
8154 }
8155 else {
8156 $block = 30; break;
8157 }
8158 break;
8159 }
8160 case 29: {
8161 $t72_73 = errors.New('parent should be nil');
8162 return $t72_73;
8163 break;
8164 }
8165 case 30: {
8166 $t73_74 = errors.New('parent mismatch');
8167 return $t73_74;
8168 break;
8169 }
8170 case 31: {
8171 $t74_75 = $t66_67;
8172 $t75_76 = ($t74_75 !== $t63_64);
8173 if ($t75_76) {
8174 $block = 30; break;
8175 }
8176 else {
8177 $t59_60 = $t60_61;
8178 $block = 24; break;
8179 }
8180 break;
8181 }
8182 case 32: {
8183 $t77_78 = ($t76_77 + 1);
8184 $t78_79 = ($t77_78 < $t71_72);
8185 if ($t78_79) {
8186 $block = 33; break;
8187 }
8188 else {
8189 $t2_3 = $t3_4;
8190 $block = 1; break;
8191 }
8192 break;
8193 }
8194 case 33: {
8195 $t79_80 = $t70_71.addr($t77_78);
8196 $t80_81 = $t79_80.$get();
8197 $t81_82 = ($t77_78 >>> 0);
8198 $t82_83 = numLeaves$sibling($t10_11, $t81_82);
8199 $t83_84 = $t82_83[0];
8200 $t84_85 = $t82_83[1];
8201 $t85_86 = ($t80_81 < 0);
8202 if ($t85_86) {
8203 $block = 34; break;
8204 }
8205 else {
8206 $block = 35; break;
8207 }
8208 break;
8209 }
8210 case 34: {
8211 if ($t84_85) {
8212 $block = 36; break;
8213 }
8214 else {
8215 $t76_77 = $t77_78;
8216 $block = 32; break;
8217 }
8218 break;
8219 }
8220 case 35: {
8221 if ($t84_85) {
8222 $block = 38; break;
8223 }
8224 else {
8225 $block = 37; break;
8226 }
8227 break;
8228 }
8229 case 36: {
8230 $t86_87 = errors.New('sibling should be nil');
8231 return $t86_87;
8232 break;
8233 }
8234 case 37: {
8235 $t87_88 = errors.New('sibling mismatch');
8236 return $t87_88;
8237 break;
8238 }
8239 case 38: {
8240 $t88_89 = $t83_84;
8241 $t89_90 = ($t88_89 !== $t80_81);
8242 if ($t89_90) {
8243 $block = 37; break;
8244 }
8245 else {
8246 $t76_77 = $t77_78;
8247 $block = 32; break;
8248 }
8249 break;
8250 }
8251 }
8252 }
8253 }
8254
8255 export function TestCryptoBasics() {
8256 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116;
8257 let $block = 0;
8258 while (true) {
8259 switch ($block) {
8260 case 0: {
8261 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
8262 $t1_2 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
8263 $t2_3 = 0;
8264 $block = 1; break;
8265 break;
8266 }
8267 case 1: {
8268 $t3_4 = ($t2_3 < 32);
8269 if ($t3_4) {
8270 $block = 2; break;
8271 }
8272 else {
8273 $block = 3; break;
8274 }
8275 break;
8276 }
8277 case 2: {
8278 $t4_5 = ($t2_3 & 0xFF);
8279 $t5_6 = $t0_1.$get().addr($t2_3);
8280 $t5_6.$set($t4_5);
8281 $t6_7 = ($t2_3 + 1);
8282 $t2_3 = $t6_7;
8283 $block = 1; break;
8284 break;
8285 }
8286 case 3: {
8287 $t7_8 = 0;
8288 $block = 4; break;
8289 break;
8290 }
8291 case 4: {
8292 $t8_9 = ($t7_8 < 12);
8293 if ($t8_9) {
8294 $block = 5; break;
8295 }
8296 else {
8297 $block = 6; break;
8298 }
8299 break;
8300 }
8301 case 5: {
8302 $t9_10 = ($t7_8 + 1);
8303 $t10_11 = ($t9_10 & 0xFF);
8304 $t11_12 = $t1_2.$get().addr($t7_8);
8305 $t11_12.$set($t10_11);
8306 $t12_13 = ($t7_8 + 1);
8307 $t7_8 = $t12_13;
8308 $block = 4; break;
8309 break;
8310 }
8311 case 6: {
8312 $t13_14 = $t0_1.$get();
8313 $t14_15 = $t1_2.$get();
8314 $t15_16 = smesh$lol$web$common$crypto$chacha20poly1305.Seal($t13_14, $t14_15, 'Hello, MLS!', null);
8315 $t16_17 = $t0_1.$get();
8316 $t17_18 = $t1_2.$get();
8317 $t18_19 = smesh$lol$web$common$crypto$chacha20poly1305.Open($t16_17, $t17_18, $t15_16, null);
8318 $t19_20 = $t18_19[0];
8319 $t20_21 = $t18_19[1];
8320 if ($t20_21) {
8321 $block = 8; break;
8322 }
8323 else {
8324 $block = 7; break;
8325 }
8326 break;
8327 }
8328 case 7: {
8329 $t21_22 = errors.New('aead roundtrip: Open returned !ok');
8330 return $t21_22;
8331 break;
8332 }
8333 case 8: {
8334 $t22_23 = bytesEqual($t19_20, 'Hello, MLS!');
8335 if ($t22_23) {
8336 $block = 10; break;
8337 }
8338 else {
8339 $block = 9; break;
8340 }
8341 break;
8342 }
8343 case 9: {
8344 $t23_24 = errors.New('aead roundtrip: plaintext mismatch');
8345 return $t23_24;
8346 break;
8347 }
8348 case 10: {
8349 $t24_25 = hexb('808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f');
8350 $t25_26 = hexb('070000004041424344454647');
8351 $t26_27 = hexb('50515253c0c1c2c3c4c5c6c7');
8352 $t27_28 = hexb('4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e');
8353 $t28_29 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
8354 $t29_30 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
8355 $t30_31 = $rt.builtin.sliceSlice($t28_29.$get(), undefined, undefined, undefined);
8356 $t31_32 = $rt.builtin.copy($t30_31, $t24_25);
8357 $t32_33 = $rt.builtin.sliceSlice($t29_30.$get(), undefined, undefined, undefined);
8358 $t33_34 = $rt.builtin.copy($t32_33, $t25_26);
8359 $t34_35 = hexb('d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116');
8360 $t35_36 = hexb('1ae10b594f09e26a7e902ecbd0600691');
8361 $t36_37 = $rt.builtin.appendSlice($t34_35, $t35_36);
8362 $t37_38 = $t28_29.$get();
8363 $t38_39 = $t29_30.$get();
8364 $t39_40 = smesh$lol$web$common$crypto$chacha20poly1305.Seal($t37_38, $t38_39, $t27_28, $t26_27);
8365 $t40_41 = bytesEqual($t39_40, $t36_37);
8366 if ($t40_41) {
8367 $block = 12; break;
8368 }
8369 else {
8370 $block = 11; break;
8371 }
8372 break;
8373 }
8374 case 11: {
8375 $t41_42 = errors.New('rfc8439 AEAD Seal mismatch');
8376 return $t41_42;
8377 break;
8378 }
8379 case 12: {
8380 $t42_43 = $t28_29.$get();
8381 $t43_44 = $t29_30.$get();
8382 $t44_45 = smesh$lol$web$common$crypto$chacha20poly1305.Open($t42_43, $t43_44, $t39_40, $t26_27);
8383 $t45_46 = $t44_45[0];
8384 $t46_47 = $t44_45[1];
8385 if ($t46_47) {
8386 $block = 14; break;
8387 }
8388 else {
8389 $block = 13; break;
8390 }
8391 break;
8392 }
8393 case 13: {
8394 $t47_48 = errors.New('rfc8439 AEAD Open failed');
8395 return $t47_48;
8396 break;
8397 }
8398 case 14: {
8399 $t48_49 = bytesEqual($t45_46, $t27_28);
8400 if ($t48_49) {
8401 $block = 16; break;
8402 }
8403 else {
8404 $block = 15; break;
8405 }
8406 break;
8407 }
8408 case 15: {
8409 $t49_50 = errors.New('rfc8439 AEAD Open mismatch');
8410 return $t49_50;
8411 break;
8412 }
8413 case 16: {
8414 $t50_51 = hexb('4f0c86f9c82fba0a896bd7eecf79a29856e98a7e4f13b9f841ae285d70ed8b68');
8415 $t51_52 = CipherSuite$refHash(3, 'RefHash', $t50_51);
8416 $t52_53 = $t51_52[0];
8417 $t53_54 = $t51_52[1];
8418 $t54_55 = ($t53_54 !== null);
8419 if ($t54_55) {
8420 $block = 17; break;
8421 }
8422 else {
8423 $block = 18; break;
8424 }
8425 break;
8426 }
8427 case 17: {
8428 return $t53_54;
8429 break;
8430 }
8431 case 18: {
8432 $t55_56 = hexb('f11019703c8b630060839b12a475fd39c6a30f8a866790ff46a35f9c65e1df3c');
8433 $t56_57 = bytesEqual($t52_53, $t55_56);
8434 if ($t56_57) {
8435 $block = 20; break;
8436 }
8437 else {
8438 $block = 19; break;
8439 }
8440 break;
8441 }
8442 case 19: {
8443 $t57_58 = errors.New('refHash mismatch');
8444 return $t57_58;
8445 break;
8446 }
8447 case 20: {
8448 $t58_59 = hexb('55aa3ae5242564782567ce097beafe19510230660008b2cc064a78387fa16f36');
8449 $t59_60 = hexb('2e07148f4340c62a55e7608c20d73fddf1f3b8dafb2c7ef24eceb70e136c0d8c');
8450 $t60_61 = CipherSuite$expandWithLabel(3, $t58_59, 'ExpandWithLabel', $t59_60, 32);
8451 $t61_62 = $t60_61[0];
8452 $t62_63 = $t60_61[1];
8453 $t63_64 = ($t62_63 !== null);
8454 if ($t63_64) {
8455 $block = 21; break;
8456 }
8457 else {
8458 $block = 22; break;
8459 }
8460 break;
8461 }
8462 case 21: {
8463 return $t62_63;
8464 break;
8465 }
8466 case 22: {
8467 $t64_65 = hexb('1df5ba7996a34f75d717916a094a14083c03a75e80f0330a8095f5f11cfe1e1f');
8468 $t65_66 = bytesEqual($t61_62, $t64_65);
8469 if ($t65_66) {
8470 $block = 24; break;
8471 }
8472 else {
8473 $block = 23; break;
8474 }
8475 break;
8476 }
8477 case 23: {
8478 $t66_67 = errors.New('expandWithLabel mismatch');
8479 return $t66_67;
8480 break;
8481 }
8482 case 24: {
8483 $t67_68 = hexb('cae460c779ebaa3e81c061a371486dff1ed1ff273bea369cc0fc46550b83c407');
8484 $t68_69 = CipherSuite$deriveSecret(3, $t67_68, 'DeriveSecret');
8485 $t69_70 = $t68_69[0];
8486 $t70_71 = $t68_69[1];
8487 $t71_72 = ($t70_71 !== null);
8488 if ($t71_72) {
8489 $block = 25; break;
8490 }
8491 else {
8492 $block = 26; break;
8493 }
8494 break;
8495 }
8496 case 25: {
8497 return $t70_71;
8498 break;
8499 }
8500 case 26: {
8501 $t72_73 = hexb('aad859818ca5f2a9896d4d3ee2dccc0cefcd69b666bdb16b52f1de15fb1a5567');
8502 $t73_74 = bytesEqual($t69_70, $t72_73);
8503 if ($t73_74) {
8504 $block = 28; break;
8505 }
8506 else {
8507 $block = 27; break;
8508 }
8509 break;
8510 }
8511 case 27: {
8512 $t74_75 = errors.New('deriveSecret mismatch');
8513 return $t74_75;
8514 break;
8515 }
8516 case 28: {
8517 $t75_76 = hexb('c994e257b53f726087ddd7121876f558f1fbd6f807e5ff010830d618d7bab6f2');
8518 $t76_77 = deriveTreeSecret(3, $t75_76, 'DeriveTreeSecret', 2694881440, 32);
8519 $t77_78 = $t76_77[0];
8520 $t78_79 = $t76_77[1];
8521 $t79_80 = ($t78_79 !== null);
8522 if ($t79_80) {
8523 $block = 29; break;
8524 }
8525 else {
8526 $block = 30; break;
8527 }
8528 break;
8529 }
8530 case 29: {
8531 return $t78_79;
8532 break;
8533 }
8534 case 30: {
8535 $t80_81 = hexb('2095d6a81ab87095d1df26f6bdf012ec06f197e418381c1795a7b758603c936d');
8536 $t81_82 = bytesEqual($t77_78, $t80_81);
8537 if ($t81_82) {
8538 $block = 32; break;
8539 }
8540 else {
8541 $block = 31; break;
8542 }
8543 break;
8544 }
8545 case 31: {
8546 $t82_83 = errors.New('deriveTreeSecret mismatch');
8547 return $t82_83;
8548 break;
8549 }
8550 case 32: {
8551 $t83_84 = hexb('18275f892ee0ca6f4687ff26c990776387502646ff658c3f572b324faecb05c5');
8552 $t84_85 = hexb('df308cf2dbf471edf2c29d30e3daf161b5b87d350ee3b2c715c298ec3d10d432');
8553 $t85_86 = hexb('4f56851c2c47f5115a61ff0ab6121b4a4732d4e94805fc7135a5132f87d5ca5f1dc7408816c1ea4f25887725cf5914b48c427a52cabcfeb746a2b8a12e821f08');
8554 $t86_87 = $t83_84;
8555 $t87_88 = CipherSuite$verifyWithLabel(3, $t86_87, 'SignWithLabel', $t84_85, $t85_86);
8556 if ($t87_88) {
8557 $block = 34; break;
8558 }
8559 else {
8560 $block = 33; break;
8561 }
8562 break;
8563 }
8564 case 33: {
8565 $t88_89 = errors.New('signWithLabel: reference signature verify failed');
8566 return $t88_89;
8567 break;
8568 }
8569 case 34: {
8570 $t89_90 = hexb('4e312160ee4981358db479aa877412847abc7f7054b5605511256c395404d054');
8571 $t90_91 = hexb('df308cf2dbf471edf2c29d30e3daf161b5b87d350ee3b2c715c298ec3d10d432');
8572 $t91_92 = $t89_90;
8573 $t92_93 = CipherSuite$signWithLabel(3, $t91_92, 'SignWithLabel', $t90_91);
8574 $t93_94 = $t92_93[0];
8575 $t94_95 = $t92_93[1];
8576 $t95_96 = ($t94_95 !== null);
8577 if ($t95_96) {
8578 $block = 35; break;
8579 }
8580 else {
8581 $block = 36; break;
8582 }
8583 break;
8584 }
8585 case 35: {
8586 return $t94_95;
8587 break;
8588 }
8589 case 36: {
8590 $t96_97 = hexb('18275f892ee0ca6f4687ff26c990776387502646ff658c3f572b324faecb05c5');
8591 $t97_98 = hexb('df308cf2dbf471edf2c29d30e3daf161b5b87d350ee3b2c715c298ec3d10d432');
8592 $t98_99 = $t96_97;
8593 $t99_100 = CipherSuite$verifyWithLabel(3, $t98_99, 'SignWithLabel', $t97_98, $t93_94);
8594 if ($t99_100) {
8595 $block = 38; break;
8596 }
8597 else {
8598 $block = 37; break;
8599 }
8600 break;
8601 }
8602 case 37: {
8603 $t100_101 = errors.New('signWithLabel: round-trip verify failed');
8604 return $t100_101;
8605 break;
8606 }
8607 case 38: {
8608 $t101_102 = hexb('9d122ad4638fcb301b6eb5f4073414afb44bb34d37b4ddee9975b2941d700edb');
8609 $t102_103 = hexb('0d6a5cf9ee88b1f8c79d8512477d9bfc5496c207c8173f8dcac0368b4dba7407');
8610 $t103_104 = hexb('f26e9e5a94396a90f85a5f72eedf3dacfb1b7f4164e0573edeb9c6c912e1cb49');
8611 $t104_105 = hexb('40dd09ad4c5dc29d373f814bf054c9359cb75a468bc4d2c8bbcffb072a73105c4d9416ebd4fafeb62e59a9dea55da3cd');
8612 $t105_106 = $t101_102;
8613 $t106_107 = CipherSuite$decryptWithLabel(3, $t105_106, 'EncryptWithLabel', $t102_103, $t103_104, $t104_105);
8614 $t107_108 = $t106_107[0];
8615 $t108_109 = $t106_107[1];
8616 $t109_110 = ($t108_109 !== null);
8617 if ($t109_110) {
8618 $block = 39; break;
8619 }
8620 else {
8621 $block = 40; break;
8622 }
8623 break;
8624 }
8625 case 39: {
8626 $t110_111 = $rt.types.methodCall($t108_109, 'Error', []);
8627 $t111_112 = ('decryptWithLabel error: ' + $t110_111);
8628 $t112_113 = errors.New($t111_112);
8629 return $t112_113;
8630 break;
8631 }
8632 case 40: {
8633 $t113_114 = hexb('1dd4c1904996ce7d42cee7de68881459fa7a345da59a02040ade37103505baf6');
8634 $t114_115 = bytesEqual($t107_108, $t113_114);
8635 if ($t114_115) {
8636 $block = 42; break;
8637 }
8638 else {
8639 $block = 41; break;
8640 }
8641 break;
8642 }
8643 case 41: {
8644 $t115_116 = errors.New('decryptWithLabel mismatch');
8645 return $t115_116;
8646 break;
8647 }
8648 case 42: {
8649 return null;
8650 break;
8651 }
8652 }
8653 }
8654 }
8655
8656 export function hexb(s) {
8657 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
8658 let $block = 0;
8659 while (true) {
8660 switch ($block) {
8661 case 0: {
8662 $t0_1 = $rt.builtin.len(s);
8663 $t1_2 = Math.trunc($t0_1 / 2);
8664 $t2_3 = $rt.builtin.makeSlice($t1_2, $t1_2, 0);
8665 $t3_4 = 0;
8666 $block = 1; break;
8667 break;
8668 }
8669 case 1: {
8670 $t4_5 = ($t3_4 < $t1_2);
8671 if ($t4_5) {
8672 $block = 2; break;
8673 }
8674 else {
8675 $block = 3; break;
8676 }
8677 break;
8678 }
8679 case 2: {
8680 $t5_6 = (2 * $t3_4);
8681 $t6_7 = s.addr($t5_6);
8682 $t7_8 = $t6_7.$get();
8683 $t8_9 = hexdig($t7_8);
8684 $t9_10 = (($t8_9 << 4) & 0xFF);
8685 $t10_11 = (2 * $t3_4);
8686 $t11_12 = ($t10_11 + 1);
8687 $t12_13 = s.addr($t11_12);
8688 $t13_14 = $t12_13.$get();
8689 $t14_15 = hexdig($t13_14);
8690 $t15_16 = (($t9_10 + $t14_15) & 0xFF);
8691 $t16_17 = $t2_3.addr($t3_4);
8692 $t16_17.$set($t15_16);
8693 $t17_18 = ($t3_4 + 1);
8694 $t3_4 = $t17_18;
8695 $block = 1; break;
8696 break;
8697 }
8698 case 3: {
8699 return $t2_3;
8700 break;
8701 }
8702 }
8703 }
8704 }
8705
8706 export function hexenc(b) {
8707 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
8708 let $block = 0;
8709 while (true) {
8710 switch ($block) {
8711 case 0: {
8712 $t0_1 = $rt.builtin.len(b);
8713 $t1_2 = ($t0_1 * 2);
8714 $t2_3 = $rt.builtin.makeSlice($t1_2, $t1_2, 0);
8715 $t3_4 = 0;
8716 $block = 1; break;
8717 break;
8718 }
8719 case 1: {
8720 $t4_5 = $rt.builtin.len(b);
8721 $t5_6 = ($t3_4 < $t4_5);
8722 if ($t5_6) {
8723 $block = 2; break;
8724 }
8725 else {
8726 $block = 3; break;
8727 }
8728 break;
8729 }
8730 case 2: {
8731 $t6_7 = (2 * $t3_4);
8732 $t7_8 = hexchars.$get();
8733 $t8_9 = b.addr($t3_4);
8734 $t9_10 = $t8_9.$get();
8735 $t10_11 = (($t9_10 & 0xFF) >> 4);
8736 $t11_12 = $t7_8.addr($t10_11);
8737 $t12_13 = $t11_12.$get();
8738 $t13_14 = $t2_3.addr($t6_7);
8739 $t13_14.$set($t12_13);
8740 $t14_15 = (2 * $t3_4);
8741 $t15_16 = ($t14_15 + 1);
8742 $t16_17 = hexchars.$get();
8743 $t17_18 = b.addr($t3_4);
8744 $t18_19 = $t17_18.$get();
8745 $t19_20 = ($t18_19 & 15);
8746 $t20_21 = $t16_17.addr($t19_20);
8747 $t21_22 = $t20_21.$get();
8748 $t22_23 = $t2_3.addr($t15_16);
8749 $t22_23.$set($t21_22);
8750 $t23_24 = ($t3_4 + 1);
8751 $t3_4 = $t23_24;
8752 $block = 1; break;
8753 break;
8754 }
8755 case 3: {
8756 return $t2_3;
8757 break;
8758 }
8759 }
8760 }
8761 }
8762
8763 export function hexdig(c) {
8764 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
8765 let $block = 0;
8766 while (true) {
8767 switch ($block) {
8768 case 0: {
8769 $t0_1 = (c >= 48);
8770 if ($t0_1) {
8771 $block = 3; break;
8772 }
8773 else {
8774 $block = 2; break;
8775 }
8776 break;
8777 }
8778 case 1: {
8779 $t1_2 = ((c - 48) & 0xFF);
8780 return $t1_2;
8781 break;
8782 }
8783 case 2: {
8784 $t2_3 = (c >= 97);
8785 if ($t2_3) {
8786 $block = 6; break;
8787 }
8788 else {
8789 $block = 5; break;
8790 }
8791 break;
8792 }
8793 case 3: {
8794 $t3_4 = (c <= 57);
8795 if ($t3_4) {
8796 $block = 1; break;
8797 }
8798 else {
8799 $block = 2; break;
8800 }
8801 break;
8802 }
8803 case 4: {
8804 $t4_5 = ((c - 97) & 0xFF);
8805 $t5_6 = (($t4_5 + 10) & 0xFF);
8806 return $t5_6;
8807 break;
8808 }
8809 case 5: {
8810 return 0;
8811 break;
8812 }
8813 case 6: {
8814 $t6_7 = (c <= 102);
8815 if ($t6_7) {
8816 $block = 4; break;
8817 }
8818 else {
8819 $block = 5; break;
8820 }
8821 break;
8822 }
8823 }
8824 }
8825 }
8826
8827 export function TestTranscriptHashes() {
8828 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52;
8829 let $block = 0;
8830 while (true) {
8831 switch ($block) {
8832 case 0: {
8833 $t0_1 = hexb('45eb25e0f6024d7dca9a319bbb5d86d22d156613e6319507b54f4844f71bc858');
8834 $t1_2 = hexb('00010567726f7570000000000000345601000000000003220220e740a6faf2db65f5853148d75d9a335d7c4b94ab106fe5f237bc34fdcfc745840040406d0a302c5106ea9d31f3aec1d43df3fff47c1c0b059f4a0b1884798c5f6c973b4e3933b927b7e5f841813e1c14d8513c579b3662a3ce5e4c50adf53c4d60df022043646bfab3e0513b627b89997a2c3192afec8c9b6e9ef839dbb5fc7c0b90c9cd');
8835 $t2_3 = hexb('0a56a7ac12b2fdab74b9356d100f5458dbce550c1fe69d43283001496fd08901');
8836 $t3_4 = hexb('93e90c899f8a485dad5521123de058cefde35d5659521efd9b19c16fbdd8b42c');
8837 $t4_5 = hexb('4184f0b59dc75aa1771efb5601124785ed6d590fe8cd58c398f4ccdbef46f3f0');
8838 $t5_6 = { $value: { wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
8839 $t6_7 = $rt.types.makeInterface('*smesh.lol/web/common/mls.authenticatedContent', $t5_6);
8840 $t7_8 = unmarshalRaw($t1_2, $t6_7);
8841 $t8_9 = ($t7_8 !== null);
8842 if ($t8_9) {
8843 $block = 1; break;
8844 }
8845 else {
8846 $block = 2; break;
8847 }
8848 break;
8849 }
8850 case 1: {
8851 $t9_10 = $rt.types.methodCall($t7_8, 'Error', []);
8852 $t10_11 = ('unmarshal authContent: ' + $t9_10);
8853 $t11_12 = errors.New($t10_11);
8854 return $t11_12;
8855 break;
8856 }
8857 case 2: {
8858 $t12_13 = { $get() { return $t5_6.$get().content; }, $set(v) { const obj = $t5_6.$get(); obj.content = v; $t5_6.$set(obj); } };
8859 $t13_14 = { $get() { return $t12_13.$get().contentType; }, $set(v) { const obj = $t12_13.$get(); obj.contentType = v; $t12_13.$set(obj); } };
8860 $t14_15 = $t13_14.$get();
8861 $t15_16 = ($t14_15 !== 3);
8862 if ($t15_16) {
8863 $block = 3; break;
8864 }
8865 else {
8866 $block = 4; break;
8867 }
8868 break;
8869 }
8870 case 3: {
8871 $t16_17 = errors.New('authContent is not a commit');
8872 return $t16_17;
8873 break;
8874 }
8875 case 4: {
8876 $t17_18 = authenticatedContent$confirmedTranscriptHashInput($t5_6);
8877 $t18_19 = confirmedTranscriptHashInput$hashValue($t17_18, 3, $t2_3);
8878 $t19_20 = $t18_19[0];
8879 $t20_21 = $t18_19[1];
8880 $t21_22 = ($t20_21 !== null);
8881 if ($t21_22) {
8882 $block = 5; break;
8883 }
8884 else {
8885 $block = 6; break;
8886 }
8887 break;
8888 }
8889 case 5: {
8890 $t22_23 = $rt.types.methodCall($t20_21, 'Error', []);
8891 $t23_24 = ('confirmedTranscriptHashInput.hashValue: ' + $t22_23);
8892 $t24_25 = errors.New($t23_24);
8893 return $t24_25;
8894 break;
8895 }
8896 case 6: {
8897 $t25_26 = bytesEqual($t19_20, $t3_4);
8898 if ($t25_26) {
8899 $block = 8; break;
8900 }
8901 else {
8902 $block = 7; break;
8903 }
8904 break;
8905 }
8906 case 7: {
8907 $t26_27 = hexenc($t19_20);
8908 $t27_28 = ('confirmed_transcript_hash_after mismatch: got ' + $t26_27);
8909 $t28_29 = ($t27_28 + ' want ');
8910 $t29_30 = hexenc($t3_4);
8911 $t30_31 = ($t28_29 + $t29_30);
8912 $t31_32 = errors.New($t30_31);
8913 return $t31_32;
8914 break;
8915 }
8916 case 8: {
8917 $t32_33 = { $get() { return $t5_6.$get().auth; }, $set(v) { const obj = $t5_6.$get(); obj.auth = v; $t5_6.$set(obj); } };
8918 $t33_34 = { $get() { return $t32_33.$get().confirmationTag; }, $set(v) { const obj = $t32_33.$get(); obj.confirmationTag = v; $t32_33.$set(obj); } };
8919 $t34_35 = $t33_34.$get();
8920 $t35_36 = nextInterimTranscriptHash(3, $t3_4, $t34_35);
8921 $t36_37 = $t35_36[0];
8922 $t37_38 = $t35_36[1];
8923 $t38_39 = ($t37_38 !== null);
8924 if ($t38_39) {
8925 $block = 9; break;
8926 }
8927 else {
8928 $block = 10; break;
8929 }
8930 break;
8931 }
8932 case 9: {
8933 $t39_40 = $rt.types.methodCall($t37_38, 'Error', []);
8934 $t40_41 = ('nextInterimTranscriptHash: ' + $t39_40);
8935 $t41_42 = errors.New($t40_41);
8936 return $t41_42;
8937 break;
8938 }
8939 case 10: {
8940 $t42_43 = bytesEqual($t36_37, $t4_5);
8941 if ($t42_43) {
8942 $block = 12; break;
8943 }
8944 else {
8945 $block = 11; break;
8946 }
8947 break;
8948 }
8949 case 11: {
8950 $t43_44 = hexenc($t36_37);
8951 $t44_45 = ('interim_transcript_hash_after mismatch: got ' + $t43_44);
8952 $t45_46 = ($t44_45 + ' want ');
8953 $t46_47 = hexenc($t4_5);
8954 $t47_48 = ($t45_46 + $t46_47);
8955 $t48_49 = errors.New($t47_48);
8956 return $t48_49;
8957 break;
8958 }
8959 case 12: {
8960 $t49_50 = { $get() { return $t5_6.$get().auth; }, $set(v) { const obj = $t5_6.$get(); obj.auth = v; $t5_6.$set(obj); } };
8961 $t50_51 = framedContentAuthData$verifyConfirmationTag($t49_50, 3, $t0_1, $t3_4);
8962 if ($t50_51) {
8963 $block = 14; break;
8964 }
8965 else {
8966 $block = 13; break;
8967 }
8968 break;
8969 }
8970 case 13: {
8971 $t51_52 = errors.New('verifyConfirmationTag failed');
8972 return $t51_52;
8973 break;
8974 }
8975 case 14: {
8976 return null;
8977 break;
8978 }
8979 }
8980 }
8981 }
8982
8983 export function bytesEqual(a, b) {
8984 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
8985 let $block = 0;
8986 while (true) {
8987 switch ($block) {
8988 case 0: {
8989 $t0_1 = $rt.builtin.len(a);
8990 $t1_2 = $rt.builtin.len(b);
8991 $t2_3 = ($t0_1 !== $t1_2);
8992 if ($t2_3) {
8993 $block = 1; break;
8994 }
8995 else {
8996 $block = 2; break;
8997 }
8998 break;
8999 }
9000 case 1: {
9001 return false;
9002 break;
9003 }
9004 case 2: {
9005 $t3_4 = $rt.builtin.len(a);
9006 $t4_5 = -1;
9007 $block = 3; break;
9008 break;
9009 }
9010 case 3: {
9011 $t5_6 = ($t4_5 + 1);
9012 $t6_7 = ($t5_6 < $t3_4);
9013 if ($t6_7) {
9014 $block = 4; break;
9015 }
9016 else {
9017 $block = 5; break;
9018 }
9019 break;
9020 }
9021 case 4: {
9022 $t7_8 = a.addr($t5_6);
9023 $t8_9 = $t7_8.$get();
9024 $t9_10 = b.addr($t5_6);
9025 $t10_11 = $t9_10.$get();
9026 $t11_12 = ($t8_9 !== $t10_11);
9027 if ($t11_12) {
9028 $block = 6; break;
9029 }
9030 else {
9031 $t4_5 = $t5_6;
9032 $block = 3; break;
9033 }
9034 break;
9035 }
9036 case 5: {
9037 return true;
9038 break;
9039 }
9040 case 6: {
9041 return false;
9042 break;
9043 }
9044 }
9045 }
9046 }
9047
9048 export function NewExtension(t, data) {
9049 let $t0_1, $t1_2, $t2_3, $t3_4;
9050 $t0_1 = { $value: { extensionType: 0, extensionData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9051 $t1_2 = { $get() { return $t0_1.$get().extensionType; }, $set(v) { const obj = $t0_1.$get(); obj.extensionType = v; $t0_1.$set(obj); } };
9052 $t2_3 = { $get() { return $t0_1.$get().extensionData; }, $set(v) { const obj = $t0_1.$get(); obj.extensionData = v; $t0_1.$set(obj); } };
9053 $t1_2.$set(t);
9054 $t2_3.$set(data);
9055 $t3_4 = $t0_1.$get();
9056 return $t3_4;
9057 }
9058
9059 export function unmarshalExtensionVec(r) {
9060 let $t0_1, $t1_2, $t2_3, $t3_4;
9061 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9062 $t1_2 = unmarshalExtensionVec$1.bind(null, $t0_1);
9063 $t2_3 = Reader$readVector(r, $t1_2);
9064 $t3_4 = $t0_1.$get();
9065 return [$t3_4, $t2_3];
9066 }
9067
9068 function unmarshalExtensionVec$1(exts, r) {
9069 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
9070 let $block = 0;
9071 while (true) {
9072 switch ($block) {
9073 case 0: {
9074 $t0_1 = { $value: { extensionType: 0, extensionData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9075 $t1_2 = Reader$readUint16(r);
9076 $t2_3 = $t1_2[0];
9077 $t3_4 = $t1_2[1];
9078 if ($t3_4) {
9079 $block = 2; break;
9080 }
9081 else {
9082 $block = 1; break;
9083 }
9084 break;
9085 }
9086 case 1: {
9087 $t4_5 = errUnexpectedEOF.$get();
9088 return $t4_5;
9089 break;
9090 }
9091 case 2: {
9092 $t5_6 = $t2_3;
9093 $t6_7 = { $get() { return $t0_1.$get().extensionType; }, $set(v) { const obj = $t0_1.$get(); obj.extensionType = v; $t0_1.$set(obj); } };
9094 $t6_7.$set($t5_6);
9095 $t7_8 = Reader$readOpaqueVec(r);
9096 $t8_9 = $t7_8[0];
9097 $t9_10 = { $get() { return $t0_1.$get().extensionData; }, $set(v) { const obj = $t0_1.$get(); obj.extensionData = v; $t0_1.$set(obj); } };
9098 $t9_10.$set($t8_9);
9099 $t10_11 = $t7_8[1];
9100 if ($t10_11) {
9101 $block = 4; break;
9102 }
9103 else {
9104 $block = 3; break;
9105 }
9106 break;
9107 }
9108 case 3: {
9109 $t11_12 = errUnexpectedEOF.$get();
9110 return $t11_12;
9111 break;
9112 }
9113 case 4: {
9114 $t12_13 = exts.$get();
9115 $t13_14 = $t0_1.$get();
9116 $t14_15 = { $value: $rt.builtin.makeSlice(1, 1, { extensionType: 0, extensionData: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
9117 $t15_16 = $t14_15.$get().addr(0);
9118 $t15_16.$set($rt.builtin.cloneValue($t13_14));
9119 $t16_17 = $rt.builtin.sliceSlice($t14_15.$get(), undefined, undefined, undefined);
9120 $t17_18 = $rt.builtin.appendSlice($t12_13, $t16_17);
9121 exts.$set($t17_18);
9122 return null;
9123 break;
9124 }
9125 }
9126 }
9127 }
9128
9129 export function marshalExtensionVec(w, exts) {
9130 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
9131 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9132 $t0_1.$set(exts);
9133 $t1_2 = $t0_1.$get();
9134 $t2_3 = $rt.builtin.len($t1_2);
9135 $t3_4 = marshalExtensionVec$1.bind(null, $t0_1);
9136 $t4_5 = Writer$writeVector(w, $t2_3, $t3_4);
9137 return;
9138 }
9139
9140 function marshalExtensionVec$1(exts, w, i) {
9141 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
9142 $t0_1 = { $value: { extensionType: 0, extensionData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9143 $t1_2 = exts.$get();
9144 $t2_3 = $t1_2.addr(i);
9145 $t3_4 = $t2_3.$get();
9146 $t0_1.$set($rt.builtin.cloneValue($t3_4));
9147 $t4_5 = { $get() { return $t0_1.$get().extensionType; }, $set(v) { const obj = $t0_1.$get(); obj.extensionType = v; $t0_1.$set(obj); } };
9148 $t5_6 = $t4_5.$get();
9149 $t6_7 = $t5_6;
9150 $t7_8 = Writer$addUint16(w, $t6_7);
9151 $t8_9 = { $get() { return $t0_1.$get().extensionData; }, $set(v) { const obj = $t0_1.$get(); obj.extensionData = v; $t0_1.$set(obj); } };
9152 $t9_10 = $t8_9.$get();
9153 $t10_11 = Writer$writeOpaqueVec(w, $t9_10);
9154 return;
9155 }
9156
9157 export function findExtensionData(exts, t) {
9158 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
9159 let $block = 0;
9160 while (true) {
9161 switch ($block) {
9162 case 0: {
9163 $t0_1 = $rt.builtin.len(exts);
9164 $t1_2 = -1;
9165 $block = 1; break;
9166 break;
9167 }
9168 case 1: {
9169 $t2_3 = ($t1_2 + 1);
9170 $t3_4 = ($t2_3 < $t0_1);
9171 if ($t3_4) {
9172 $block = 2; break;
9173 }
9174 else {
9175 $block = 3; break;
9176 }
9177 break;
9178 }
9179 case 2: {
9180 $t4_5 = exts.addr($t2_3);
9181 $t5_6 = $t4_5.$get();
9182 $t6_7 = { $value: { extensionType: 0, extensionData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9183 $t6_7.$set($rt.builtin.cloneValue($t5_6));
9184 $t7_8 = { $get() { return $t6_7.$get().extensionType; }, $set(v) { const obj = $t6_7.$get(); obj.extensionType = v; $t6_7.$set(obj); } };
9185 $t8_9 = $t7_8.$get();
9186 $t9_10 = ($t8_9 === t);
9187 if ($t9_10) {
9188 $block = 4; break;
9189 }
9190 else {
9191 $t1_2 = $t2_3;
9192 $block = 1; break;
9193 }
9194 break;
9195 }
9196 case 3: {
9197 return null;
9198 break;
9199 }
9200 case 4: {
9201 $t10_11 = { $get() { return $t6_7.$get().extensionData; }, $set(v) { const obj = $t6_7.$get(); obj.extensionData = v; $t6_7.$set(obj); } };
9202 $t11_12 = $t10_11.$get();
9203 return $t11_12;
9204 break;
9205 }
9206 }
9207 }
9208 }
9209
9210 export function hasUnmergedLeaf(pn, target) {
9211 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
9212 let $block = 0;
9213 while (true) {
9214 switch ($block) {
9215 case 0: {
9216 $t0_1 = { $get() { return pn.$get().unmergedLeaves; }, $set(v) { const obj = pn.$get(); obj.unmergedLeaves = v; pn.$set(obj); } };
9217 $t1_2 = $t0_1.$get();
9218 $t2_3 = $rt.builtin.len($t1_2);
9219 $t3_4 = -1;
9220 $block = 1; break;
9221 break;
9222 }
9223 case 1: {
9224 $t4_5 = ($t3_4 + 1);
9225 $t5_6 = ($t4_5 < $t2_3);
9226 if ($t5_6) {
9227 $block = 2; break;
9228 }
9229 else {
9230 $block = 3; break;
9231 }
9232 break;
9233 }
9234 case 2: {
9235 $t6_7 = $t1_2.addr($t4_5);
9236 $t7_8 = $t6_7.$get();
9237 $t8_9 = ($t7_8 === target);
9238 if ($t8_9) {
9239 $block = 4; break;
9240 }
9241 else {
9242 $t3_4 = $t4_5;
9243 $block = 1; break;
9244 }
9245 break;
9246 }
9247 case 3: {
9248 return false;
9249 break;
9250 }
9251 case 4: {
9252 return true;
9253 break;
9254 }
9255 }
9256 }
9257 }
9258
9259 export function marshalParentHashInput(encryptionKey, parentHash, originalSiblingTreeHash) {
9260 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
9261 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9262 $t1_2 = encryptionKey;
9263 $t2_3 = Writer$writeOpaqueVec($t0_1, $t1_2);
9264 $t3_4 = Writer$writeOpaqueVec($t0_1, parentHash);
9265 $t4_5 = Writer$writeOpaqueVec($t0_1, originalSiblingTreeHash);
9266 $t5_6 = Writer$bytes($t0_1);
9267 $t6_7 = $t5_6[0];
9268 $t7_8 = $t5_6[1];
9269 return [$t6_7, $t7_8];
9270 }
9271
9272 export function decryptPathSecret(cs, nodePriv, ctx, ct) {
9273 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
9274 let $block = 0;
9275 while (true) {
9276 switch ($block) {
9277 case 0: {
9278 $t0_1 = { $value: { kemOutput: null, ciphertext: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9279 $t0_1.$set($rt.builtin.cloneValue(ct));
9280 $t1_2 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupContext', ctx);
9281 $t2_3 = marshalRaw($t1_2);
9282 $t3_4 = $t2_3[0];
9283 $t4_5 = $t2_3[1];
9284 $t5_6 = ($t4_5 !== null);
9285 if ($t5_6) {
9286 $block = 1; break;
9287 }
9288 else {
9289 $block = 2; break;
9290 }
9291 break;
9292 }
9293 case 1: {
9294 return [null, $t4_5];
9295 break;
9296 }
9297 case 2: {
9298 $t6_7 = { $get() { return $t0_1.$get().kemOutput; }, $set(v) { const obj = $t0_1.$get(); obj.kemOutput = v; $t0_1.$set(obj); } };
9299 $t7_8 = $t6_7.$get();
9300 $t8_9 = { $get() { return $t0_1.$get().ciphertext; }, $set(v) { const obj = $t0_1.$get(); obj.ciphertext = v; $t0_1.$set(obj); } };
9301 $t9_10 = $t8_9.$get();
9302 $t10_11 = CipherSuite$decryptWithLabel(cs, nodePriv, 'UpdatePathNode', $t3_4, $t7_8, $t9_10);
9303 $t11_12 = $t10_11[0];
9304 $t12_13 = $t10_11[1];
9305 return [$t11_12, $t12_13];
9306 break;
9307 }
9308 }
9309 }
9310 }
9311
9312 export function nodePrivFromPathSecret(cs, pathSecret, nodePub) {
9313 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
9314 let $block = 0;
9315 while (true) {
9316 switch ($block) {
9317 case 0: {
9318 $t0_1 = CipherSuite$deriveSecret(cs, pathSecret, 'node');
9319 $t1_2 = $t0_1[0];
9320 $t2_3 = $t0_1[1];
9321 $t3_4 = ($t2_3 !== null);
9322 if ($t3_4) {
9323 $block = 1; break;
9324 }
9325 else {
9326 $block = 2; break;
9327 }
9328 break;
9329 }
9330 case 1: {
9331 return [null, $t2_3];
9332 break;
9333 }
9334 case 2: {
9335 $t4_5 = CipherSuite$deriveEncryptionKeyPair(cs, $t1_2);
9336 $t5_6 = $t4_5[0];
9337 $t6_7 = $t4_5[1];
9338 $t7_8 = $t4_5[2];
9339 $t8_9 = ($t7_8 !== null);
9340 if ($t8_9) {
9341 $block = 3; break;
9342 }
9343 else {
9344 $block = 4; break;
9345 }
9346 break;
9347 }
9348 case 3: {
9349 return [null, $t7_8];
9350 break;
9351 }
9352 case 4: {
9353 $t9_10 = $t5_6;
9354 $t10_11 = nodePub;
9355 $t11_12 = bytesEqual($t9_10, $t10_11);
9356 if ($t11_12) {
9357 $block = 6; break;
9358 }
9359 else {
9360 $block = 5; break;
9361 }
9362 break;
9363 }
9364 case 5: {
9365 $t12_13 = errNodeKeyMismatch.$get();
9366 return [null, $t12_13];
9367 break;
9368 }
9369 case 6: {
9370 return [$t6_7, null];
9371 break;
9372 }
9373 }
9374 }
9375 }
9376
9377 export function numLeavesFromWidth(w) {
9378 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
9379 let $block = 0;
9380 while (true) {
9381 switch ($block) {
9382 case 0: {
9383 $t0_1 = (w === 0);
9384 if ($t0_1) {
9385 $block = 1; break;
9386 }
9387 else {
9388 $block = 2; break;
9389 }
9390 break;
9391 }
9392 case 1: {
9393 return 0;
9394 break;
9395 }
9396 case 2: {
9397 $t1_2 = ((w - 1) >>> 0);
9398 $t2_3 = ((Math.trunc($t1_2 / 2)) >>> 0);
9399 $t3_4 = (($t2_3 + 1) >>> 0);
9400 $t4_5 = ($t3_4 >>> 0);
9401 return $t4_5;
9402 break;
9403 }
9404 }
9405 }
9406 }
9407
9408 export function commonAncestor(x, y) {
9409 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
9410 let $block = 0;
9411 while (true) {
9412 switch ($block) {
9413 case 0: {
9414 $t0_1 = nodeIndex$level(x);
9415 $t1_2 = (($t0_1 + 1) >>> 0);
9416 $t2_3 = nodeIndex$level(y);
9417 $t3_4 = (($t2_3 + 1) >>> 0);
9418 $t4_5 = ($t1_2 <= $t3_4);
9419 if ($t4_5) {
9420 $block = 3; break;
9421 }
9422 else {
9423 $block = 2; break;
9424 }
9425 break;
9426 }
9427 case 1: {
9428 return y;
9429 break;
9430 }
9431 case 2: {
9432 $t5_6 = ($t3_4 <= $t1_2);
9433 if ($t5_6) {
9434 $block = 6; break;
9435 }
9436 else {
9437 $block = 5; break;
9438 }
9439 break;
9440 }
9441 case 3: {
9442 $t6_7 = (x >>> $t3_4);
9443 $t7_8 = (y >>> $t3_4);
9444 $t8_9 = ($t6_7 === $t7_8);
9445 if ($t8_9) {
9446 $block = 1; break;
9447 }
9448 else {
9449 $block = 2; break;
9450 }
9451 break;
9452 }
9453 case 4: {
9454 return x;
9455 break;
9456 }
9457 case 5: {
9458 $t20_21 = x;
9459 $t21_22 = y;
9460 $t22_23 = 0;
9461 $block = 9; break;
9462 break;
9463 }
9464 case 6: {
9465 $t9_10 = (x >>> $t1_2);
9466 $t10_11 = (y >>> $t1_2);
9467 $t11_12 = ($t9_10 === $t10_11);
9468 if ($t11_12) {
9469 $block = 4; break;
9470 }
9471 else {
9472 $block = 5; break;
9473 }
9474 break;
9475 }
9476 case 7: {
9477 $t12_13 = ($t20_21 >>> 1);
9478 $t13_14 = ($t21_22 >>> 1);
9479 $t14_15 = (($t22_23 + 1) >>> 0);
9480 $t20_21 = $t12_13;
9481 $t21_22 = $t13_14;
9482 $t22_23 = $t14_15;
9483 $block = 9; break;
9484 break;
9485 }
9486 case 8: {
9487 $t15_16 = (($t20_21 << $t22_23) >>> 0);
9488 $t16_17 = (($t22_23 - 1) >>> 0);
9489 $t17_18 = ((1 << $t16_17) >>> 0);
9490 $t18_19 = (($t15_16 + $t17_18) >>> 0);
9491 $t19_20 = (($t18_19 - 1) >>> 0);
9492 return $t19_20;
9493 break;
9494 }
9495 case 9: {
9496 $t23_24 = ($t20_21 !== $t21_22);
9497 if ($t23_24) {
9498 $block = 7; break;
9499 }
9500 else {
9501 $block = 8; break;
9502 }
9503 break;
9504 }
9505 }
9506 }
9507 }
9508
9509 export function log2(x) {
9510 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
9511 let $block = 0;
9512 while (true) {
9513 switch ($block) {
9514 case 0: {
9515 $t0_1 = (x === 0);
9516 if ($t0_1) {
9517 $block = 1; break;
9518 }
9519 else {
9520 $block = 2; break;
9521 }
9522 break;
9523 }
9524 case 1: {
9525 return 0;
9526 break;
9527 }
9528 case 2: {
9529 $t3_4 = 0;
9530 $block = 5; break;
9531 break;
9532 }
9533 case 3: {
9534 $t1_2 = (($t3_4 + 1) >>> 0);
9535 $t3_4 = $t1_2;
9536 $block = 5; break;
9537 break;
9538 }
9539 case 4: {
9540 $t2_3 = (($t3_4 - 1) >>> 0);
9541 return $t2_3;
9542 break;
9543 }
9544 case 5: {
9545 $t4_5 = (x >>> $t3_4);
9546 $t5_6 = ($t4_5 > 0);
9547 if ($t5_6) {
9548 $block = 3; break;
9549 }
9550 else {
9551 $block = 4; break;
9552 }
9553 break;
9554 }
9555 }
9556 }
9557 }
9558
9559 export function isPowerOf2(x) {
9560 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
9561 let $block = 0;
9562 while (true) {
9563 switch ($block) {
9564 case 0: {
9565 $t0_1 = (x !== 0);
9566 if ($t0_1) {
9567 $block = 1; break;
9568 }
9569 else {
9570 $t4_5 = false;
9571 $block = 2; break;
9572 }
9573 break;
9574 }
9575 case 1: {
9576 $t1_2 = ((x - 1) >>> 0);
9577 $t2_3 = ((x & $t1_2) >>> 0);
9578 $t3_4 = ($t2_3 === 0);
9579 $t4_5 = $t3_4;
9580 $block = 2; break;
9581 break;
9582 }
9583 case 2: {
9584 return $t4_5;
9585 break;
9586 }
9587 }
9588 }
9589 }
9590
9591 export function NewBasicCredential(identity) {
9592 let $t0_1, $t1_2, $t2_3;
9593 $t0_1 = { $value: { credentialType: 0, identity: null, certificates: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
9594 $t1_2 = { $get() { return $t0_1.$get().credentialType; }, $set(v) { const obj = $t0_1.$get(); obj.credentialType = v; $t0_1.$set(obj); } };
9595 $t2_3 = { $get() { return $t0_1.$get().identity; }, $set(v) { const obj = $t0_1.$get(); obj.identity = v; $t0_1.$set(obj); } };
9596 $t1_2.$set(1);
9597 $t2_3.$set(identity);
9598 return $t0_1;
9599 }
9600
9601 export function hpkeSealer$seal(s, plaintext, aad) {
9602 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
9603 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
9604 $t1_2 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
9605 $t2_3 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
9606 $t3_4 = { $get() { return s.$get().key; }, $set(v) { const obj = s.$get(); obj.key = v; s.$set(obj); } };
9607 $t4_5 = $t3_4.$get();
9608 $t5_6 = $rt.builtin.copy($t2_3, $t4_5);
9609 $t6_7 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, undefined, undefined);
9610 $t7_8 = { $get() { return s.$get().nonce; }, $set(v) { const obj = s.$get(); obj.nonce = v; s.$set(obj); } };
9611 $t8_9 = $t7_8.$get();
9612 $t9_10 = $rt.builtin.copy($t6_7, $t8_9);
9613 $t10_11 = $t0_1.$get();
9614 $t11_12 = $t1_2.$get();
9615 $t12_13 = smesh$lol$web$common$crypto$chacha20poly1305.Seal($t10_11, $t11_12, plaintext, aad);
9616 return $t12_13;
9617 }
9618
9619 $rt.types.getType('smesh.lol/web/common/mls.hpkeSealer')?.methods?.set('seal', hpkeSealer$seal);
9620 export function hpkeOpener$open(o, ciphertext, aad) {
9621 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
9622 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
9623 $t1_2 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
9624 $t2_3 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
9625 $t3_4 = { $get() { return o.$get().key; }, $set(v) { const obj = o.$get(); obj.key = v; o.$set(obj); } };
9626 $t4_5 = $t3_4.$get();
9627 $t5_6 = $rt.builtin.copy($t2_3, $t4_5);
9628 $t6_7 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, undefined, undefined);
9629 $t7_8 = { $get() { return o.$get().nonce; }, $set(v) { const obj = o.$get(); obj.nonce = v; o.$set(obj); } };
9630 $t8_9 = $t7_8.$get();
9631 $t9_10 = $rt.builtin.copy($t6_7, $t8_9);
9632 $t10_11 = $t0_1.$get();
9633 $t11_12 = $t1_2.$get();
9634 $t12_13 = smesh$lol$web$common$crypto$chacha20poly1305.Open($t10_11, $t11_12, ciphertext, aad);
9635 $t13_14 = $t12_13[0];
9636 $t14_15 = $t12_13[1];
9637 return [$t13_14, $t14_15];
9638 }
9639
9640 $rt.types.getType('smesh.lol/web/common/mls.hpkeOpener')?.methods?.set('open', hpkeOpener$open);
9641 export function Reader$empty(r) {
9642 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
9643 $t0_1 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9644 $t1_2 = $t0_1.$get();
9645 $t2_3 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9646 $t3_4 = $t2_3.$get();
9647 $t4_5 = $rt.builtin.len($t3_4);
9648 $t5_6 = ($t1_2 >= $t4_5);
9649 return $t5_6;
9650 }
9651
9652 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('empty', Reader$empty);
9653 export function Reader$readByte(r) {
9654 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
9655 let $block = 0;
9656 while (true) {
9657 switch ($block) {
9658 case 0: {
9659 $t0_1 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9660 $t1_2 = $t0_1.$get();
9661 $t2_3 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9662 $t3_4 = $t2_3.$get();
9663 $t4_5 = $rt.builtin.len($t3_4);
9664 $t5_6 = ($t1_2 >= $t4_5);
9665 if ($t5_6) {
9666 $block = 1; break;
9667 }
9668 else {
9669 $block = 2; break;
9670 }
9671 break;
9672 }
9673 case 1: {
9674 return [0, false];
9675 break;
9676 }
9677 case 2: {
9678 $t6_7 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9679 $t7_8 = $t6_7.$get();
9680 $t8_9 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9681 $t9_10 = $t8_9.$get();
9682 $t10_11 = $t7_8.addr($t9_10);
9683 $t11_12 = $t10_11.$get();
9684 $t12_13 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9685 $t13_14 = $t12_13.$get();
9686 $t14_15 = ($t13_14 + 1);
9687 $t15_16 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9688 $t15_16.$set($t14_15);
9689 return [$t11_12, true];
9690 break;
9691 }
9692 }
9693 }
9694 }
9695
9696 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readByte', Reader$readByte);
9697 export function Reader$readN(r, n) {
9698 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
9699 let $block = 0;
9700 while (true) {
9701 switch ($block) {
9702 case 0: {
9703 $t0_1 = Reader$remaining(r);
9704 $t1_2 = ($t0_1 < n);
9705 if ($t1_2) {
9706 $block = 1; break;
9707 }
9708 else {
9709 $block = 2; break;
9710 }
9711 break;
9712 }
9713 case 1: {
9714 return [null, false];
9715 break;
9716 }
9717 case 2: {
9718 $t2_3 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9719 $t3_4 = $t2_3.$get();
9720 $t4_5 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9721 $t5_6 = $t4_5.$get();
9722 $t6_7 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9723 $t7_8 = $t6_7.$get();
9724 $t8_9 = ($t7_8 + n);
9725 $t9_10 = $rt.builtin.sliceSlice($t3_4, $t5_6, $t8_9, undefined);
9726 $t10_11 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9727 $t11_12 = $t10_11.$get();
9728 $t12_13 = ($t11_12 + n);
9729 $t13_14 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9730 $t13_14.$set($t12_13);
9731 return [$t9_10, true];
9732 break;
9733 }
9734 }
9735 }
9736 }
9737
9738 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readN', Reader$readN);
9739 export function Reader$readOpaqueVec(r) {
9740 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
9741 let $block = 0;
9742 while (true) {
9743 switch ($block) {
9744 case 0: {
9745 $t0_1 = Reader$readVarint(r);
9746 $t1_2 = $t0_1[0];
9747 $t2_3 = $t0_1[1];
9748 if ($t2_3) {
9749 $block = 2; break;
9750 }
9751 else {
9752 $block = 1; break;
9753 }
9754 break;
9755 }
9756 case 1: {
9757 return [null, false];
9758 break;
9759 }
9760 case 2: {
9761 $t3_4 = $t1_2;
9762 $t4_5 = Reader$readN(r, $t3_4);
9763 $t5_6 = $t4_5[0];
9764 $t6_7 = $t4_5[1];
9765 if ($t6_7) {
9766 $block = 4; break;
9767 }
9768 else {
9769 $block = 3; break;
9770 }
9771 break;
9772 }
9773 case 3: {
9774 return [null, false];
9775 break;
9776 }
9777 case 4: {
9778 $t7_8 = $t1_2;
9779 $t8_9 = $rt.builtin.makeSlice($t7_8, $t7_8, 0);
9780 $t9_10 = $rt.builtin.copy($t8_9, $t5_6);
9781 return [$t8_9, true];
9782 break;
9783 }
9784 }
9785 }
9786 }
9787
9788 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readOpaqueVec', Reader$readOpaqueVec);
9789 export function Reader$readOptional(r) {
9790 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
9791 let $block = 0;
9792 while (true) {
9793 switch ($block) {
9794 case 0: {
9795 $t0_1 = Reader$readByte(r);
9796 $t1_2 = $t0_1[0];
9797 $t2_3 = $t0_1[1];
9798 if ($t2_3) {
9799 $block = 2; break;
9800 }
9801 else {
9802 $block = 1; break;
9803 }
9804 break;
9805 }
9806 case 1: {
9807 return [false, false];
9808 break;
9809 }
9810 case 2: {
9811 $t3_4 = ($t1_2 === 0);
9812 if ($t3_4) {
9813 $block = 3; break;
9814 }
9815 else {
9816 $block = 5; break;
9817 }
9818 break;
9819 }
9820 case 3: {
9821 return [false, true];
9822 break;
9823 }
9824 case 4: {
9825 return [true, true];
9826 break;
9827 }
9828 case 5: {
9829 $t4_5 = ($t1_2 === 1);
9830 if ($t4_5) {
9831 $block = 4; break;
9832 }
9833 else {
9834 $block = 6; break;
9835 }
9836 break;
9837 }
9838 case 6: {
9839 return [false, false];
9840 break;
9841 }
9842 }
9843 }
9844 }
9845
9846 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readOptional', Reader$readOptional);
9847 export function Reader$readUint16(r) {
9848 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
9849 let $block = 0;
9850 while (true) {
9851 switch ($block) {
9852 case 0: {
9853 $t0_1 = Reader$remaining(r);
9854 $t1_2 = ($t0_1 < 2);
9855 if ($t1_2) {
9856 $block = 1; break;
9857 }
9858 else {
9859 $block = 2; break;
9860 }
9861 break;
9862 }
9863 case 1: {
9864 return [0, false];
9865 break;
9866 }
9867 case 2: {
9868 $t2_3 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9869 $t3_4 = $t2_3.$get();
9870 $t4_5 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9871 $t5_6 = $t4_5.$get();
9872 $t6_7 = $t3_4.addr($t5_6);
9873 $t7_8 = $t6_7.$get();
9874 $t8_9 = ($t7_8 & 0xFFFF);
9875 $t9_10 = (($t8_9 << 8) & 0xFFFF);
9876 $t10_11 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9877 $t11_12 = $t10_11.$get();
9878 $t12_13 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9879 $t13_14 = $t12_13.$get();
9880 $t14_15 = ($t13_14 + 1);
9881 $t15_16 = $t11_12.addr($t14_15);
9882 $t16_17 = $t15_16.$get();
9883 $t17_18 = ($t16_17 & 0xFFFF);
9884 $t18_19 = (($t9_10 + $t17_18) & 0xFFFF);
9885 $t19_20 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9886 $t20_21 = $t19_20.$get();
9887 $t21_22 = ($t20_21 + 2);
9888 $t22_23 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9889 $t22_23.$set($t21_22);
9890 return [$t18_19, true];
9891 break;
9892 }
9893 }
9894 }
9895 }
9896
9897 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readUint16', Reader$readUint16);
9898 export function Reader$readUint32(r) {
9899 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43;
9900 let $block = 0;
9901 while (true) {
9902 switch ($block) {
9903 case 0: {
9904 $t0_1 = Reader$remaining(r);
9905 $t1_2 = ($t0_1 < 4);
9906 if ($t1_2) {
9907 $block = 1; break;
9908 }
9909 else {
9910 $block = 2; break;
9911 }
9912 break;
9913 }
9914 case 1: {
9915 return [0, false];
9916 break;
9917 }
9918 case 2: {
9919 $t2_3 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9920 $t3_4 = $t2_3.$get();
9921 $t4_5 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9922 $t5_6 = $t4_5.$get();
9923 $t6_7 = $t3_4.addr($t5_6);
9924 $t7_8 = $t6_7.$get();
9925 $t8_9 = ($t7_8 >>> 0);
9926 $t9_10 = (($t8_9 << 24) >>> 0);
9927 $t10_11 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9928 $t11_12 = $t10_11.$get();
9929 $t12_13 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9930 $t13_14 = $t12_13.$get();
9931 $t14_15 = ($t13_14 + 1);
9932 $t15_16 = $t11_12.addr($t14_15);
9933 $t16_17 = $t15_16.$get();
9934 $t17_18 = ($t16_17 >>> 0);
9935 $t18_19 = (($t17_18 << 16) >>> 0);
9936 $t19_20 = (($t9_10 + $t18_19) >>> 0);
9937 $t20_21 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9938 $t21_22 = $t20_21.$get();
9939 $t22_23 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9940 $t23_24 = $t22_23.$get();
9941 $t24_25 = ($t23_24 + 2);
9942 $t25_26 = $t21_22.addr($t24_25);
9943 $t26_27 = $t25_26.$get();
9944 $t27_28 = ($t26_27 >>> 0);
9945 $t28_29 = (($t27_28 << 8) >>> 0);
9946 $t29_30 = (($t19_20 + $t28_29) >>> 0);
9947 $t30_31 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9948 $t31_32 = $t30_31.$get();
9949 $t32_33 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9950 $t33_34 = $t32_33.$get();
9951 $t34_35 = ($t33_34 + 3);
9952 $t35_36 = $t31_32.addr($t34_35);
9953 $t36_37 = $t35_36.$get();
9954 $t37_38 = ($t36_37 >>> 0);
9955 $t38_39 = (($t29_30 + $t37_38) >>> 0);
9956 $t39_40 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9957 $t40_41 = $t39_40.$get();
9958 $t41_42 = ($t40_41 + 4);
9959 $t42_43 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9960 $t42_43.$set($t41_42);
9961 return [$t38_39, true];
9962 break;
9963 }
9964 }
9965 }
9966 }
9967
9968 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readUint32', Reader$readUint32);
9969 export function Reader$readUint64(r) {
9970 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83;
9971 let $block = 0;
9972 while (true) {
9973 switch ($block) {
9974 case 0: {
9975 $t0_1 = Reader$remaining(r);
9976 $t1_2 = ($t0_1 < 8);
9977 if ($t1_2) {
9978 $block = 1; break;
9979 }
9980 else {
9981 $block = 2; break;
9982 }
9983 break;
9984 }
9985 case 1: {
9986 return [0n, false];
9987 break;
9988 }
9989 case 2: {
9990 $t2_3 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9991 $t3_4 = $t2_3.$get();
9992 $t4_5 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
9993 $t5_6 = $t4_5.$get();
9994 $t6_7 = $t3_4.addr($t5_6);
9995 $t7_8 = $t6_7.$get();
9996 $t8_9 = BigInt.asUintN(64, BigInt($t7_8));
9997 $t9_10 = BigInt.asUintN(64, $t8_9 << BigInt(56));
9998 $t10_11 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
9999 $t11_12 = $t10_11.$get();
10000 $t12_13 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10001 $t13_14 = $t12_13.$get();
10002 $t14_15 = ($t13_14 + 1);
10003 $t15_16 = $t11_12.addr($t14_15);
10004 $t16_17 = $t15_16.$get();
10005 $t17_18 = BigInt.asUintN(64, BigInt($t16_17));
10006 $t18_19 = BigInt.asUintN(64, $t17_18 << BigInt(48));
10007 $t19_20 = BigInt.asUintN(64, $t9_10 + $t18_19);
10008 $t20_21 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10009 $t21_22 = $t20_21.$get();
10010 $t22_23 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10011 $t23_24 = $t22_23.$get();
10012 $t24_25 = ($t23_24 + 2);
10013 $t25_26 = $t21_22.addr($t24_25);
10014 $t26_27 = $t25_26.$get();
10015 $t27_28 = BigInt.asUintN(64, BigInt($t26_27));
10016 $t28_29 = BigInt.asUintN(64, $t27_28 << BigInt(40));
10017 $t29_30 = BigInt.asUintN(64, $t19_20 + $t28_29);
10018 $t30_31 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10019 $t31_32 = $t30_31.$get();
10020 $t32_33 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10021 $t33_34 = $t32_33.$get();
10022 $t34_35 = ($t33_34 + 3);
10023 $t35_36 = $t31_32.addr($t34_35);
10024 $t36_37 = $t35_36.$get();
10025 $t37_38 = BigInt.asUintN(64, BigInt($t36_37));
10026 $t38_39 = BigInt.asUintN(64, $t37_38 << BigInt(32));
10027 $t39_40 = BigInt.asUintN(64, $t29_30 + $t38_39);
10028 $t40_41 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10029 $t41_42 = $t40_41.$get();
10030 $t42_43 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10031 $t43_44 = $t42_43.$get();
10032 $t44_45 = ($t43_44 + 4);
10033 $t45_46 = $t41_42.addr($t44_45);
10034 $t46_47 = $t45_46.$get();
10035 $t47_48 = BigInt.asUintN(64, BigInt($t46_47));
10036 $t48_49 = BigInt.asUintN(64, $t47_48 << BigInt(24));
10037 $t49_50 = BigInt.asUintN(64, $t39_40 + $t48_49);
10038 $t50_51 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10039 $t51_52 = $t50_51.$get();
10040 $t52_53 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10041 $t53_54 = $t52_53.$get();
10042 $t54_55 = ($t53_54 + 5);
10043 $t55_56 = $t51_52.addr($t54_55);
10044 $t56_57 = $t55_56.$get();
10045 $t57_58 = BigInt.asUintN(64, BigInt($t56_57));
10046 $t58_59 = BigInt.asUintN(64, $t57_58 << BigInt(16));
10047 $t59_60 = BigInt.asUintN(64, $t49_50 + $t58_59);
10048 $t60_61 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10049 $t61_62 = $t60_61.$get();
10050 $t62_63 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10051 $t63_64 = $t62_63.$get();
10052 $t64_65 = ($t63_64 + 6);
10053 $t65_66 = $t61_62.addr($t64_65);
10054 $t66_67 = $t65_66.$get();
10055 $t67_68 = BigInt.asUintN(64, BigInt($t66_67));
10056 $t68_69 = BigInt.asUintN(64, $t67_68 << BigInt(8));
10057 $t69_70 = BigInt.asUintN(64, $t59_60 + $t68_69);
10058 $t70_71 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10059 $t71_72 = $t70_71.$get();
10060 $t72_73 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10061 $t73_74 = $t72_73.$get();
10062 $t74_75 = ($t73_74 + 7);
10063 $t75_76 = $t71_72.addr($t74_75);
10064 $t76_77 = $t75_76.$get();
10065 $t77_78 = BigInt.asUintN(64, BigInt($t76_77));
10066 $t78_79 = BigInt.asUintN(64, $t69_70 + $t77_78);
10067 $t79_80 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10068 $t80_81 = $t79_80.$get();
10069 $t81_82 = ($t80_81 + 8);
10070 $t82_83 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10071 $t82_83.$set($t81_82);
10072 return [$t78_79, true];
10073 break;
10074 }
10075 }
10076 }
10077 }
10078
10079 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readUint64', Reader$readUint64);
10080 export function Reader$readVarint(r) {
10081 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27;
10082 let $block = 0;
10083 while (true) {
10084 switch ($block) {
10085 case 0: {
10086 $t0_1 = Reader$readByte(r);
10087 $t1_2 = $t0_1[0];
10088 $t2_3 = $t0_1[1];
10089 if ($t2_3) {
10090 $block = 2; break;
10091 }
10092 else {
10093 $block = 1; break;
10094 }
10095 break;
10096 }
10097 case 1: {
10098 return [0, false];
10099 break;
10100 }
10101 case 2: {
10102 $t3_4 = (($t1_2 & 0xFF) >> 6);
10103 $t4_5 = ($t3_4 === 3);
10104 if ($t4_5) {
10105 $block = 3; break;
10106 }
10107 else {
10108 $block = 4; break;
10109 }
10110 break;
10111 }
10112 case 3: {
10113 return [0, false];
10114 break;
10115 }
10116 case 4: {
10117 $t5_6 = $t3_4;
10118 $t6_7 = (1 << $t5_6);
10119 $t7_8 = ($t1_2 & 63);
10120 $t8_9 = ($t7_8 >>> 0);
10121 $t9_10 = $t8_9;
10122 $t10_11 = 0;
10123 $block = 5; break;
10124 break;
10125 }
10126 case 5: {
10127 $t11_12 = ($t6_7 - 1);
10128 $t12_13 = ($t10_11 < $t11_12);
10129 if ($t12_13) {
10130 $block = 6; break;
10131 }
10132 else {
10133 $block = 7; break;
10134 }
10135 break;
10136 }
10137 case 6: {
10138 $t13_14 = Reader$readByte(r);
10139 $t14_15 = $t13_14[0];
10140 $t15_16 = $t13_14[1];
10141 if ($t15_16) {
10142 $block = 9; break;
10143 }
10144 else {
10145 $block = 8; break;
10146 }
10147 break;
10148 }
10149 case 7: {
10150 $t16_17 = ($t3_4 >= 1);
10151 if ($t16_17) {
10152 $block = 12; break;
10153 }
10154 else {
10155 $block = 11; break;
10156 }
10157 break;
10158 }
10159 case 8: {
10160 return [0, false];
10161 break;
10162 }
10163 case 9: {
10164 $t17_18 = (($t9_10 << 8) >>> 0);
10165 $t18_19 = ($t14_15 >>> 0);
10166 $t19_20 = (($t17_18 + $t18_19) >>> 0);
10167 $t20_21 = ($t10_11 + 1);
10168 $t9_10 = $t19_20;
10169 $t10_11 = $t20_21;
10170 $block = 5; break;
10171 break;
10172 }
10173 case 10: {
10174 return [0, false];
10175 break;
10176 }
10177 case 11: {
10178 return [$t9_10, true];
10179 break;
10180 }
10181 case 12: {
10182 $t21_22 = Math.trunc($t6_7 / 2);
10183 $t22_23 = (8 * $t21_22);
10184 $t23_24 = ($t22_23 - 2);
10185 $t24_25 = ($t23_24 >>> 0);
10186 $t25_26 = ((1 << $t24_25) >>> 0);
10187 $t26_27 = ($t9_10 < $t25_26);
10188 if ($t26_27) {
10189 $block = 10; break;
10190 }
10191 else {
10192 $block = 11; break;
10193 }
10194 break;
10195 }
10196 }
10197 }
10198 }
10199
10200 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readVarint', Reader$readVarint);
10201 export function Reader$readVector(r, f) {
10202 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
10203 let $block = 0;
10204 while (true) {
10205 switch ($block) {
10206 case 0: {
10207 $t0_1 = Reader$readVarint(r);
10208 $t1_2 = $t0_1[0];
10209 $t2_3 = $t0_1[1];
10210 if ($t2_3) {
10211 $block = 2; break;
10212 }
10213 else {
10214 $block = 1; break;
10215 }
10216 break;
10217 }
10218 case 1: {
10219 $t3_4 = errUnexpectedEOF.$get();
10220 return $t3_4;
10221 break;
10222 }
10223 case 2: {
10224 $t4_5 = $t1_2;
10225 $t5_6 = Reader$readN(r, $t4_5);
10226 $t6_7 = $t5_6[0];
10227 $t7_8 = $t5_6[1];
10228 if ($t7_8) {
10229 $block = 4; break;
10230 }
10231 else {
10232 $block = 3; break;
10233 }
10234 break;
10235 }
10236 case 3: {
10237 $t8_9 = errUnexpectedEOF.$get();
10238 return $t8_9;
10239 break;
10240 }
10241 case 4: {
10242 $t9_10 = { $value: { data: null, pos: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
10243 $t10_11 = newReader($t6_7);
10244 $t9_10.$set($rt.builtin.cloneValue($t10_11));
10245 $block = 7; break;
10246 break;
10247 }
10248 case 5: {
10249 $t11_12 = f($t9_10);
10250 $t12_13 = ($t11_12 !== null);
10251 if ($t12_13) {
10252 $block = 8; break;
10253 }
10254 else {
10255 $block = 7; break;
10256 }
10257 break;
10258 }
10259 case 6: {
10260 return null;
10261 break;
10262 }
10263 case 7: {
10264 $t13_14 = Reader$empty($t9_10);
10265 if ($t13_14) {
10266 $block = 6; break;
10267 }
10268 else {
10269 $block = 5; break;
10270 }
10271 break;
10272 }
10273 case 8: {
10274 return $t11_12;
10275 break;
10276 }
10277 }
10278 }
10279 }
10280
10281 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('readVector', Reader$readVector);
10282 export function Reader$remaining(r) {
10283 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
10284 $t0_1 = { $get() { return r.$get().data; }, $set(v) { const obj = r.$get(); obj.data = v; r.$set(obj); } };
10285 $t1_2 = $t0_1.$get();
10286 $t2_3 = $rt.builtin.len($t1_2);
10287 $t3_4 = { $get() { return r.$get().pos; }, $set(v) { const obj = r.$get(); obj.pos = v; r.$set(obj); } };
10288 $t4_5 = $t3_4.$get();
10289 $t5_6 = ($t2_3 - $t4_5);
10290 return $t5_6;
10291 }
10292
10293 $rt.types.getType('smesh.lol/web/common/mls.Reader')?.methods?.set('remaining', Reader$remaining);
10294 export function Writer$addByte(w, v) {
10295 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
10296 let $block = 0;
10297 while (true) {
10298 switch ($block) {
10299 case 0: {
10300 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10301 $t1_2 = $t0_1.$get();
10302 $t2_3 = ($t1_2 !== null);
10303 if ($t2_3) {
10304 $block = 1; break;
10305 }
10306 else {
10307 $block = 2; break;
10308 }
10309 break;
10310 }
10311 case 1: {
10312 return;
10313 break;
10314 }
10315 case 2: {
10316 $t3_4 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10317 $t4_5 = $t3_4.$get();
10318 $t5_6 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10319 $t6_7 = $t5_6.$get().addr(0);
10320 $t6_7.$set(v);
10321 $t7_8 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
10322 $t8_9 = $rt.builtin.appendSlice($t4_5, $t7_8);
10323 $t9_10 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10324 $t9_10.$set($t8_9);
10325 return;
10326 break;
10327 }
10328 }
10329 }
10330 }
10331
10332 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('addByte', Writer$addByte);
10333 export function Writer$addBytes(w, v) {
10334 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
10335 let $block = 0;
10336 while (true) {
10337 switch ($block) {
10338 case 0: {
10339 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10340 $t1_2 = $t0_1.$get();
10341 $t2_3 = ($t1_2 !== null);
10342 if ($t2_3) {
10343 $block = 1; break;
10344 }
10345 else {
10346 $block = 2; break;
10347 }
10348 break;
10349 }
10350 case 1: {
10351 return;
10352 break;
10353 }
10354 case 2: {
10355 $t3_4 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10356 $t4_5 = $t3_4.$get();
10357 $t5_6 = $rt.builtin.appendSlice($t4_5, v);
10358 $t6_7 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10359 $t6_7.$set($t5_6);
10360 return;
10361 break;
10362 }
10363 }
10364 }
10365 }
10366
10367 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('addBytes', Writer$addBytes);
10368 export function Writer$addUint16(w, v) {
10369 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
10370 let $block = 0;
10371 while (true) {
10372 switch ($block) {
10373 case 0: {
10374 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10375 $t1_2 = $t0_1.$get();
10376 $t2_3 = ($t1_2 !== null);
10377 if ($t2_3) {
10378 $block = 1; break;
10379 }
10380 else {
10381 $block = 2; break;
10382 }
10383 break;
10384 }
10385 case 1: {
10386 return;
10387 break;
10388 }
10389 case 2: {
10390 $t3_4 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10391 $t4_5 = $t3_4.$get();
10392 $t5_6 = ((v & 0xFFFF) >> 8);
10393 $t6_7 = ($t5_6 & 0xFF);
10394 $t7_8 = (v & 0xFF);
10395 $t8_9 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10396 $t9_10 = $t8_9.$get().addr(0);
10397 $t9_10.$set($t6_7);
10398 $t10_11 = $t8_9.$get().addr(1);
10399 $t10_11.$set($t7_8);
10400 $t11_12 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
10401 $t12_13 = $rt.builtin.appendSlice($t4_5, $t11_12);
10402 $t13_14 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10403 $t13_14.$set($t12_13);
10404 return;
10405 break;
10406 }
10407 }
10408 }
10409 }
10410
10411 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('addUint16', Writer$addUint16);
10412 export function Writer$addUint32(w, v) {
10413 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
10414 let $block = 0;
10415 while (true) {
10416 switch ($block) {
10417 case 0: {
10418 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10419 $t1_2 = $t0_1.$get();
10420 $t2_3 = ($t1_2 !== null);
10421 if ($t2_3) {
10422 $block = 1; break;
10423 }
10424 else {
10425 $block = 2; break;
10426 }
10427 break;
10428 }
10429 case 1: {
10430 return;
10431 break;
10432 }
10433 case 2: {
10434 $t3_4 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10435 $t4_5 = $t3_4.$get();
10436 $t5_6 = (v >>> 24);
10437 $t6_7 = ($t5_6 & 0xFF);
10438 $t7_8 = (v >>> 16);
10439 $t8_9 = ($t7_8 & 0xFF);
10440 $t9_10 = (v >>> 8);
10441 $t10_11 = ($t9_10 & 0xFF);
10442 $t11_12 = (v & 0xFF);
10443 $t12_13 = { $value: $rt.builtin.makeSlice(4, 4, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10444 $t13_14 = $t12_13.$get().addr(0);
10445 $t13_14.$set($t6_7);
10446 $t14_15 = $t12_13.$get().addr(1);
10447 $t14_15.$set($t8_9);
10448 $t15_16 = $t12_13.$get().addr(2);
10449 $t15_16.$set($t10_11);
10450 $t16_17 = $t12_13.$get().addr(3);
10451 $t16_17.$set($t11_12);
10452 $t17_18 = $rt.builtin.sliceSlice($t12_13.$get(), undefined, undefined, undefined);
10453 $t18_19 = $rt.builtin.appendSlice($t4_5, $t17_18);
10454 $t19_20 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10455 $t19_20.$set($t18_19);
10456 return;
10457 break;
10458 }
10459 }
10460 }
10461 }
10462
10463 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('addUint32', Writer$addUint32);
10464 export function Writer$addUint64(w, v) {
10465 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32;
10466 let $block = 0;
10467 while (true) {
10468 switch ($block) {
10469 case 0: {
10470 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10471 $t1_2 = $t0_1.$get();
10472 $t2_3 = ($t1_2 !== null);
10473 if ($t2_3) {
10474 $block = 1; break;
10475 }
10476 else {
10477 $block = 2; break;
10478 }
10479 break;
10480 }
10481 case 1: {
10482 return;
10483 break;
10484 }
10485 case 2: {
10486 $t3_4 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10487 $t4_5 = $t3_4.$get();
10488 $t5_6 = (v >> BigInt(56));
10489 $t6_7 = (Number($t5_6) & 0xFF);
10490 $t7_8 = (v >> BigInt(48));
10491 $t8_9 = (Number($t7_8) & 0xFF);
10492 $t9_10 = (v >> BigInt(40));
10493 $t10_11 = (Number($t9_10) & 0xFF);
10494 $t11_12 = (v >> BigInt(32));
10495 $t12_13 = (Number($t11_12) & 0xFF);
10496 $t13_14 = (v >> BigInt(24));
10497 $t14_15 = (Number($t13_14) & 0xFF);
10498 $t15_16 = (v >> BigInt(16));
10499 $t16_17 = (Number($t15_16) & 0xFF);
10500 $t17_18 = (v >> BigInt(8));
10501 $t18_19 = (Number($t17_18) & 0xFF);
10502 $t19_20 = (Number(v) & 0xFF);
10503 $t20_21 = { $value: $rt.builtin.makeSlice(8, 8, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10504 $t21_22 = $t20_21.$get().addr(0);
10505 $t21_22.$set($t6_7);
10506 $t22_23 = $t20_21.$get().addr(1);
10507 $t22_23.$set($t8_9);
10508 $t23_24 = $t20_21.$get().addr(2);
10509 $t23_24.$set($t10_11);
10510 $t24_25 = $t20_21.$get().addr(3);
10511 $t24_25.$set($t12_13);
10512 $t25_26 = $t20_21.$get().addr(4);
10513 $t25_26.$set($t14_15);
10514 $t26_27 = $t20_21.$get().addr(5);
10515 $t26_27.$set($t16_17);
10516 $t27_28 = $t20_21.$get().addr(6);
10517 $t27_28.$set($t18_19);
10518 $t28_29 = $t20_21.$get().addr(7);
10519 $t28_29.$set($t19_20);
10520 $t29_30 = $rt.builtin.sliceSlice($t20_21.$get(), undefined, undefined, undefined);
10521 $t30_31 = $rt.builtin.appendSlice($t4_5, $t29_30);
10522 $t31_32 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10523 $t31_32.$set($t30_31);
10524 return;
10525 break;
10526 }
10527 }
10528 }
10529 }
10530
10531 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('addUint64', Writer$addUint64);
10532 export function Writer$bytes(w) {
10533 let $t0_1, $t1_2, $t2_3, $t3_4;
10534 $t0_1 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10535 $t1_2 = $t0_1.$get();
10536 $t2_3 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10537 $t3_4 = $t2_3.$get();
10538 return [$t1_2, $t3_4];
10539 }
10540
10541 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('bytes', Writer$bytes);
10542 export function Writer$setError(w, err) {
10543 let $t0_1, $t1_2, $t2_3, $t3_4;
10544 let $block = 0;
10545 while (true) {
10546 switch ($block) {
10547 case 0: {
10548 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10549 $t1_2 = $t0_1.$get();
10550 $t2_3 = ($t1_2 === null);
10551 if ($t2_3) {
10552 $block = 1; break;
10553 }
10554 else {
10555 $block = 2; break;
10556 }
10557 break;
10558 }
10559 case 1: {
10560 $t3_4 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10561 $t3_4.$set(err);
10562 $block = 2; break;
10563 break;
10564 }
10565 case 2: {
10566 return;
10567 break;
10568 }
10569 }
10570 }
10571 }
10572
10573 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('setError', Writer$setError);
10574 export function Writer$writeOpaqueVec(w, data) {
10575 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
10576 let $block = 0;
10577 while (true) {
10578 switch ($block) {
10579 case 0: {
10580 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10581 $t1_2 = $t0_1.$get();
10582 $t2_3 = ($t1_2 !== null);
10583 if ($t2_3) {
10584 $block = 1; break;
10585 }
10586 else {
10587 $block = 2; break;
10588 }
10589 break;
10590 }
10591 case 1: {
10592 return;
10593 break;
10594 }
10595 case 2: {
10596 $t3_4 = $rt.builtin.len(data);
10597 $t4_5 = ($t3_4 >>> 0);
10598 $t5_6 = Writer$writeVarint(w, $t4_5);
10599 $t6_7 = Writer$addBytes(w, data);
10600 return;
10601 break;
10602 }
10603 }
10604 }
10605 }
10606
10607 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('writeOpaqueVec', Writer$writeOpaqueVec);
10608 export function Writer$writeOptional(w, present) {
10609 let $t0_1, $t1_2;
10610 let $block = 0;
10611 while (true) {
10612 switch ($block) {
10613 case 0: {
10614 if (present) {
10615 $block = 1; break;
10616 }
10617 else {
10618 $block = 3; break;
10619 }
10620 break;
10621 }
10622 case 1: {
10623 $t0_1 = Writer$addByte(w, 1);
10624 $block = 2; break;
10625 break;
10626 }
10627 case 2: {
10628 return;
10629 break;
10630 }
10631 case 3: {
10632 $t1_2 = Writer$addByte(w, 0);
10633 $block = 2; break;
10634 break;
10635 }
10636 }
10637 }
10638 }
10639
10640 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('writeOptional', Writer$writeOptional);
10641 export function Writer$writeVarint(w, n) {
10642 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46;
10643 let $block = 0;
10644 while (true) {
10645 switch ($block) {
10646 case 0: {
10647 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10648 $t1_2 = $t0_1.$get();
10649 $t2_3 = ($t1_2 !== null);
10650 if ($t2_3) {
10651 $block = 1; break;
10652 }
10653 else {
10654 $block = 2; break;
10655 }
10656 break;
10657 }
10658 case 1: {
10659 return;
10660 break;
10661 }
10662 case 2: {
10663 $t3_4 = (n < 64);
10664 if ($t3_4) {
10665 $block = 4; break;
10666 }
10667 else {
10668 $block = 6; break;
10669 }
10670 break;
10671 }
10672 case 3: {
10673 return;
10674 break;
10675 }
10676 case 4: {
10677 $t4_5 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10678 $t5_6 = $t4_5.$get();
10679 $t6_7 = (n & 0xFF);
10680 $t7_8 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10681 $t8_9 = $t7_8.$get().addr(0);
10682 $t8_9.$set($t6_7);
10683 $t9_10 = $rt.builtin.sliceSlice($t7_8.$get(), undefined, undefined, undefined);
10684 $t10_11 = $rt.builtin.appendSlice($t5_6, $t9_10);
10685 $t11_12 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10686 $t11_12.$set($t10_11);
10687 $block = 3; break;
10688 break;
10689 }
10690 case 5: {
10691 $t12_13 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10692 $t13_14 = $t12_13.$get();
10693 $t14_15 = (n >>> 8);
10694 $t15_16 = ($t14_15 & 0xFF);
10695 $t16_17 = ((64 + $t15_16) & 0xFF);
10696 $t17_18 = (n & 0xFF);
10697 $t18_19 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10698 $t19_20 = $t18_19.$get().addr(0);
10699 $t19_20.$set($t16_17);
10700 $t20_21 = $t18_19.$get().addr(1);
10701 $t20_21.$set($t17_18);
10702 $t21_22 = $rt.builtin.sliceSlice($t18_19.$get(), undefined, undefined, undefined);
10703 $t22_23 = $rt.builtin.appendSlice($t13_14, $t21_22);
10704 $t23_24 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10705 $t23_24.$set($t22_23);
10706 $block = 3; break;
10707 break;
10708 }
10709 case 6: {
10710 $t24_25 = (n < 16384);
10711 if ($t24_25) {
10712 $block = 5; break;
10713 }
10714 else {
10715 $block = 8; break;
10716 }
10717 break;
10718 }
10719 case 7: {
10720 $t25_26 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10721 $t26_27 = $t25_26.$get();
10722 $t27_28 = (n >>> 24);
10723 $t28_29 = ($t27_28 & 0xFF);
10724 $t29_30 = ((128 + $t28_29) & 0xFF);
10725 $t30_31 = (n >>> 16);
10726 $t31_32 = ($t30_31 & 0xFF);
10727 $t32_33 = (n >>> 8);
10728 $t33_34 = ($t32_33 & 0xFF);
10729 $t34_35 = (n & 0xFF);
10730 $t35_36 = { $value: $rt.builtin.makeSlice(4, 4, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
10731 $t36_37 = $t35_36.$get().addr(0);
10732 $t36_37.$set($t29_30);
10733 $t37_38 = $t35_36.$get().addr(1);
10734 $t37_38.$set($t31_32);
10735 $t38_39 = $t35_36.$get().addr(2);
10736 $t38_39.$set($t33_34);
10737 $t39_40 = $t35_36.$get().addr(3);
10738 $t39_40.$set($t34_35);
10739 $t40_41 = $rt.builtin.sliceSlice($t35_36.$get(), undefined, undefined, undefined);
10740 $t41_42 = $rt.builtin.appendSlice($t26_27, $t40_41);
10741 $t42_43 = { $get() { return w.$get().buf; }, $set(v) { const obj = w.$get(); obj.buf = v; w.$set(obj); } };
10742 $t42_43.$set($t41_42);
10743 $block = 3; break;
10744 break;
10745 }
10746 case 8: {
10747 $t43_44 = (n < 1073741824);
10748 if ($t43_44) {
10749 $block = 7; break;
10750 }
10751 else {
10752 $block = 9; break;
10753 }
10754 break;
10755 }
10756 case 9: {
10757 $t44_45 = errVarintOverflow.$get();
10758 $t45_46 = Writer$setError(w, $t44_45);
10759 $block = 3; break;
10760 break;
10761 }
10762 }
10763 }
10764 }
10765
10766 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('writeVarint', Writer$writeVarint);
10767 export function Writer$writeVector(w, n, f) {
10768 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
10769 let $block = 0;
10770 while (true) {
10771 switch ($block) {
10772 case 0: {
10773 $t0_1 = { $get() { return w.$get().err; }, $set(v) { const obj = w.$get(); obj.err = v; w.$set(obj); } };
10774 $t1_2 = $t0_1.$get();
10775 $t2_3 = ($t1_2 !== null);
10776 if ($t2_3) {
10777 $block = 1; break;
10778 }
10779 else {
10780 $block = 2; break;
10781 }
10782 break;
10783 }
10784 case 1: {
10785 return;
10786 break;
10787 }
10788 case 2: {
10789 $t3_4 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
10790 $t4_5 = 0;
10791 $block = 3; break;
10792 break;
10793 }
10794 case 3: {
10795 $t5_6 = ($t4_5 < n);
10796 if ($t5_6) {
10797 $block = 4; break;
10798 }
10799 else {
10800 $block = 5; break;
10801 }
10802 break;
10803 }
10804 case 4: {
10805 $t6_7 = f($t3_4, $t4_5);
10806 $t7_8 = { $get() { return $t3_4.$get().err; }, $set(v) { const obj = $t3_4.$get(); obj.err = v; $t3_4.$set(obj); } };
10807 $t8_9 = $t7_8.$get();
10808 $t9_10 = ($t8_9 !== null);
10809 if ($t9_10) {
10810 $block = 6; break;
10811 }
10812 else {
10813 $block = 7; break;
10814 }
10815 break;
10816 }
10817 case 5: {
10818 $t10_11 = { $get() { return $t3_4.$get().buf; }, $set(v) { const obj = $t3_4.$get(); obj.buf = v; $t3_4.$set(obj); } };
10819 $t11_12 = $t10_11.$get();
10820 $t12_13 = Writer$writeOpaqueVec(w, $t11_12);
10821 return;
10822 break;
10823 }
10824 case 6: {
10825 $t13_14 = { $get() { return $t3_4.$get().err; }, $set(v) { const obj = $t3_4.$get(); obj.err = v; $t3_4.$set(obj); } };
10826 $t14_15 = $t13_14.$get();
10827 $t15_16 = Writer$setError(w, $t14_15);
10828 return;
10829 break;
10830 }
10831 case 7: {
10832 $t16_17 = ($t4_5 + 1);
10833 $t4_5 = $t16_17;
10834 $block = 3; break;
10835 break;
10836 }
10837 }
10838 }
10839 }
10840
10841 $rt.types.getType('smesh.lol/web/common/mls.Writer')?.methods?.set('writeVector', Writer$writeVector);
10842 export function contentType$marshal(ct, w) {
10843 let $t0_1, $t1_2;
10844 $t0_1 = ct;
10845 $t1_2 = Writer$addByte(w, $t0_1);
10846 return;
10847 }
10848
10849 $rt.types.getType('smesh.lol/web/common/mls.contentType')?.methods?.set('marshal', contentType$marshal);
10850 export function contentType$unmarshal(ct, r) {
10851 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
10852 let $block = 0;
10853 while (true) {
10854 switch ($block) {
10855 case 0: {
10856 $t0_1 = Reader$readByte(r);
10857 $t1_2 = $t0_1[0];
10858 $t2_3 = $t0_1[1];
10859 if ($t2_3) {
10860 $block = 2; break;
10861 }
10862 else {
10863 $block = 1; break;
10864 }
10865 break;
10866 }
10867 case 1: {
10868 $t3_4 = errUnexpectedEOF.$get();
10869 return $t3_4;
10870 break;
10871 }
10872 case 2: {
10873 $t4_5 = $t1_2;
10874 ct.$set($t4_5);
10875 $t5_6 = ct.$get();
10876 $t6_7 = ($t5_6 === 1);
10877 if ($t6_7) {
10878 $block = 3; break;
10879 }
10880 else {
10881 $block = 4; break;
10882 }
10883 break;
10884 }
10885 case 3: {
10886 return null;
10887 break;
10888 }
10889 case 4: {
10890 $t7_8 = ($t5_6 === 2);
10891 if ($t7_8) {
10892 $block = 3; break;
10893 }
10894 else {
10895 $block = 5; break;
10896 }
10897 break;
10898 }
10899 case 5: {
10900 $t8_9 = ($t5_6 === 3);
10901 if ($t8_9) {
10902 $block = 3; break;
10903 }
10904 else {
10905 $block = 6; break;
10906 }
10907 break;
10908 }
10909 case 6: {
10910 $t9_10 = errInvalidContentType.$get();
10911 return $t9_10;
10912 break;
10913 }
10914 }
10915 }
10916 }
10917
10918 $rt.types.getType('smesh.lol/web/common/mls.contentType')?.methods?.set('unmarshal', contentType$unmarshal);
10919 export function senderType$marshal(st, w) {
10920 let $t0_1, $t1_2;
10921 $t0_1 = st;
10922 $t1_2 = Writer$addByte(w, $t0_1);
10923 return;
10924 }
10925
10926 $rt.types.getType('smesh.lol/web/common/mls.senderType')?.methods?.set('marshal', senderType$marshal);
10927 export function senderType$unmarshal(st, r) {
10928 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
10929 let $block = 0;
10930 while (true) {
10931 switch ($block) {
10932 case 0: {
10933 $t0_1 = Reader$readByte(r);
10934 $t1_2 = $t0_1[0];
10935 $t2_3 = $t0_1[1];
10936 if ($t2_3) {
10937 $block = 2; break;
10938 }
10939 else {
10940 $block = 1; break;
10941 }
10942 break;
10943 }
10944 case 1: {
10945 $t3_4 = errUnexpectedEOF.$get();
10946 return $t3_4;
10947 break;
10948 }
10949 case 2: {
10950 $t4_5 = $t1_2;
10951 st.$set($t4_5);
10952 $t5_6 = st.$get();
10953 $t6_7 = ($t5_6 === 1);
10954 if ($t6_7) {
10955 $block = 3; break;
10956 }
10957 else {
10958 $block = 4; break;
10959 }
10960 break;
10961 }
10962 case 3: {
10963 return null;
10964 break;
10965 }
10966 case 4: {
10967 $t7_8 = ($t5_6 === 2);
10968 if ($t7_8) {
10969 $block = 3; break;
10970 }
10971 else {
10972 $block = 5; break;
10973 }
10974 break;
10975 }
10976 case 5: {
10977 $t8_9 = ($t5_6 === 3);
10978 if ($t8_9) {
10979 $block = 3; break;
10980 }
10981 else {
10982 $block = 6; break;
10983 }
10984 break;
10985 }
10986 case 6: {
10987 $t9_10 = ($t5_6 === 4);
10988 if ($t9_10) {
10989 $block = 3; break;
10990 }
10991 else {
10992 $block = 7; break;
10993 }
10994 break;
10995 }
10996 case 7: {
10997 $t10_11 = errInvalidSenderType.$get();
10998 return $t10_11;
10999 break;
11000 }
11001 }
11002 }
11003 }
11004
11005 $rt.types.getType('smesh.lol/web/common/mls.senderType')?.methods?.set('unmarshal', senderType$unmarshal);
11006 export function sender$marshal(snd, w) {
11007 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
11008 let $block = 0;
11009 while (true) {
11010 switch ($block) {
11011 case 0: {
11012 $t0_1 = { $get() { return snd.$get().senderType; }, $set(v) { const obj = snd.$get(); obj.senderType = v; snd.$set(obj); } };
11013 $t1_2 = $t0_1.$get();
11014 $t2_3 = senderType$marshal($t1_2, w);
11015 $t3_4 = { $get() { return snd.$get().senderType; }, $set(v) { const obj = snd.$get(); obj.senderType = v; snd.$set(obj); } };
11016 $t4_5 = $t3_4.$get();
11017 $t5_6 = ($t4_5 === 1);
11018 if ($t5_6) {
11019 $block = 2; break;
11020 }
11021 else {
11022 $block = 4; break;
11023 }
11024 break;
11025 }
11026 case 1: {
11027 return;
11028 break;
11029 }
11030 case 2: {
11031 $t6_7 = { $get() { return snd.$get().leafIndex; }, $set(v) { const obj = snd.$get(); obj.leafIndex = v; snd.$set(obj); } };
11032 $t7_8 = $t6_7.$get();
11033 $t8_9 = $t7_8;
11034 $t9_10 = Writer$addUint32(w, $t8_9);
11035 $block = 1; break;
11036 break;
11037 }
11038 case 3: {
11039 $t10_11 = { $get() { return snd.$get().senderIndex; }, $set(v) { const obj = snd.$get(); obj.senderIndex = v; snd.$set(obj); } };
11040 $t11_12 = $t10_11.$get();
11041 $t12_13 = Writer$addUint32(w, $t11_12);
11042 $block = 1; break;
11043 break;
11044 }
11045 case 4: {
11046 $t13_14 = ($t4_5 === 2);
11047 if ($t13_14) {
11048 $block = 3; break;
11049 }
11050 else {
11051 $block = 1; break;
11052 }
11053 break;
11054 }
11055 }
11056 }
11057 }
11058
11059 $rt.types.getType('smesh.lol/web/common/mls.sender')?.methods?.set('marshal', sender$marshal);
11060 export function sender$unmarshal(snd, r) {
11061 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
11062 let $block = 0;
11063 while (true) {
11064 switch ($block) {
11065 case 0: {
11066 snd.$set($rt.builtin.cloneValue({ senderType: 0, leafIndex: 0, senderIndex: 0 }));
11067 $t0_1 = { $get() { return snd.$get().senderType; }, $set(v) { const obj = snd.$get(); obj.senderType = v; snd.$set(obj); } };
11068 $t1_2 = senderType$unmarshal($t0_1, r);
11069 $t2_3 = ($t1_2 !== null);
11070 if ($t2_3) {
11071 $block = 1; break;
11072 }
11073 else {
11074 $block = 2; break;
11075 }
11076 break;
11077 }
11078 case 1: {
11079 return $t1_2;
11080 break;
11081 }
11082 case 2: {
11083 $t3_4 = { $get() { return snd.$get().senderType; }, $set(v) { const obj = snd.$get(); obj.senderType = v; snd.$set(obj); } };
11084 $t4_5 = $t3_4.$get();
11085 $t5_6 = ($t4_5 === 1);
11086 if ($t5_6) {
11087 $block = 4; break;
11088 }
11089 else {
11090 $block = 6; break;
11091 }
11092 break;
11093 }
11094 case 3: {
11095 return null;
11096 break;
11097 }
11098 case 4: {
11099 $t6_7 = Reader$readUint32(r);
11100 $t7_8 = $t6_7[0];
11101 $t8_9 = $t6_7[1];
11102 if ($t8_9) {
11103 $block = 8; break;
11104 }
11105 else {
11106 $block = 7; break;
11107 }
11108 break;
11109 }
11110 case 5: {
11111 $t9_10 = Reader$readUint32(r);
11112 $t10_11 = $t9_10[0];
11113 $t11_12 = $t9_10[1];
11114 if ($t11_12) {
11115 $block = 10; break;
11116 }
11117 else {
11118 $block = 9; break;
11119 }
11120 break;
11121 }
11122 case 6: {
11123 $t12_13 = ($t4_5 === 2);
11124 if ($t12_13) {
11125 $block = 5; break;
11126 }
11127 else {
11128 $block = 3; break;
11129 }
11130 break;
11131 }
11132 case 7: {
11133 $t13_14 = errUnexpectedEOF.$get();
11134 return $t13_14;
11135 break;
11136 }
11137 case 8: {
11138 $t14_15 = $t7_8;
11139 $t15_16 = { $get() { return snd.$get().leafIndex; }, $set(v) { const obj = snd.$get(); obj.leafIndex = v; snd.$set(obj); } };
11140 $t15_16.$set($t14_15);
11141 $block = 3; break;
11142 break;
11143 }
11144 case 9: {
11145 $t16_17 = errUnexpectedEOF.$get();
11146 return $t16_17;
11147 break;
11148 }
11149 case 10: {
11150 $t17_18 = { $get() { return snd.$get().senderIndex; }, $set(v) { const obj = snd.$get(); obj.senderIndex = v; snd.$set(obj); } };
11151 $t17_18.$set($t10_11);
11152 $block = 3; break;
11153 break;
11154 }
11155 }
11156 }
11157 }
11158
11159 $rt.types.getType('smesh.lol/web/common/mls.sender')?.methods?.set('unmarshal', sender$unmarshal);
11160 export function wireFormat$marshal(wf, w) {
11161 let $t0_1, $t1_2;
11162 $t0_1 = wf;
11163 $t1_2 = Writer$addUint16(w, $t0_1);
11164 return;
11165 }
11166
11167 $rt.types.getType('smesh.lol/web/common/mls.wireFormat')?.methods?.set('marshal', wireFormat$marshal);
11168 export function wireFormat$unmarshal(wf, r) {
11169 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
11170 let $block = 0;
11171 while (true) {
11172 switch ($block) {
11173 case 0: {
11174 $t0_1 = Reader$readUint16(r);
11175 $t1_2 = $t0_1[0];
11176 $t2_3 = $t0_1[1];
11177 if ($t2_3) {
11178 $block = 2; break;
11179 }
11180 else {
11181 $block = 1; break;
11182 }
11183 break;
11184 }
11185 case 1: {
11186 $t3_4 = errUnexpectedEOF.$get();
11187 return $t3_4;
11188 break;
11189 }
11190 case 2: {
11191 $t4_5 = $t1_2;
11192 wf.$set($t4_5);
11193 $t5_6 = wf.$get();
11194 $t6_7 = ($t5_6 === 1);
11195 if ($t6_7) {
11196 $block = 3; break;
11197 }
11198 else {
11199 $block = 4; break;
11200 }
11201 break;
11202 }
11203 case 3: {
11204 return null;
11205 break;
11206 }
11207 case 4: {
11208 $t7_8 = ($t5_6 === 2);
11209 if ($t7_8) {
11210 $block = 3; break;
11211 }
11212 else {
11213 $block = 5; break;
11214 }
11215 break;
11216 }
11217 case 5: {
11218 $t8_9 = ($t5_6 === 3);
11219 if ($t8_9) {
11220 $block = 3; break;
11221 }
11222 else {
11223 $block = 6; break;
11224 }
11225 break;
11226 }
11227 case 6: {
11228 $t9_10 = ($t5_6 === 4);
11229 if ($t9_10) {
11230 $block = 3; break;
11231 }
11232 else {
11233 $block = 7; break;
11234 }
11235 break;
11236 }
11237 case 7: {
11238 $t10_11 = ($t5_6 === 5);
11239 if ($t10_11) {
11240 $block = 3; break;
11241 }
11242 else {
11243 $block = 8; break;
11244 }
11245 break;
11246 }
11247 case 8: {
11248 $t11_12 = errInvalidWireFormat.$get();
11249 return $t11_12;
11250 break;
11251 }
11252 }
11253 }
11254 }
11255
11256 $rt.types.getType('smesh.lol/web/common/mls.wireFormat')?.methods?.set('unmarshal', wireFormat$unmarshal);
11257 export function GroupID$equal(ref, other) {
11258 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
11259 let $block = 0;
11260 while (true) {
11261 switch ($block) {
11262 case 0: {
11263 $t0_1 = $rt.builtin.len(ref);
11264 $t1_2 = $rt.builtin.len(other);
11265 $t2_3 = ($t0_1 !== $t1_2);
11266 if ($t2_3) {
11267 $block = 1; break;
11268 }
11269 else {
11270 $block = 2; break;
11271 }
11272 break;
11273 }
11274 case 1: {
11275 return false;
11276 break;
11277 }
11278 case 2: {
11279 $t3_4 = $rt.builtin.len(ref);
11280 $t4_5 = -1;
11281 $block = 3; break;
11282 break;
11283 }
11284 case 3: {
11285 $t5_6 = ($t4_5 + 1);
11286 $t6_7 = ($t5_6 < $t3_4);
11287 if ($t6_7) {
11288 $block = 4; break;
11289 }
11290 else {
11291 $block = 5; break;
11292 }
11293 break;
11294 }
11295 case 4: {
11296 $t7_8 = ref.addr($t5_6);
11297 $t8_9 = $t7_8.$get();
11298 $t9_10 = other.addr($t5_6);
11299 $t10_11 = $t9_10.$get();
11300 $t11_12 = ($t8_9 !== $t10_11);
11301 if ($t11_12) {
11302 $block = 6; break;
11303 }
11304 else {
11305 $t4_5 = $t5_6;
11306 $block = 3; break;
11307 }
11308 break;
11309 }
11310 case 5: {
11311 return true;
11312 break;
11313 }
11314 case 6: {
11315 return false;
11316 break;
11317 }
11318 }
11319 }
11320 }
11321
11322 $rt.types.getType('smesh.lol/web/common/mls.GroupID')?.methods?.set('equal', GroupID$equal);
11323 export function framedContent$marshal(content, w) {
11324 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30;
11325 let $block = 0;
11326 while (true) {
11327 switch ($block) {
11328 case 0: {
11329 $t0_1 = { $get() { return content.$get().groupID; }, $set(v) { const obj = content.$get(); obj.groupID = v; content.$set(obj); } };
11330 $t1_2 = $t0_1.$get();
11331 $t2_3 = $t1_2;
11332 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
11333 $t4_5 = { $get() { return content.$get().epoch; }, $set(v) { const obj = content.$get(); obj.epoch = v; content.$set(obj); } };
11334 $t5_6 = $t4_5.$get();
11335 $t6_7 = Writer$addUint64(w, $t5_6);
11336 $t7_8 = { $get() { return content.$get().sender; }, $set(v) { const obj = content.$get(); obj.sender = v; content.$set(obj); } };
11337 $t8_9 = sender$marshal($t7_8, w);
11338 $t9_10 = { $get() { return content.$get().authenticatedData; }, $set(v) { const obj = content.$get(); obj.authenticatedData = v; content.$set(obj); } };
11339 $t10_11 = $t9_10.$get();
11340 $t11_12 = Writer$writeOpaqueVec(w, $t10_11);
11341 $t12_13 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
11342 $t13_14 = $t12_13.$get();
11343 $t14_15 = contentType$marshal($t13_14, w);
11344 $t15_16 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
11345 $t16_17 = $t15_16.$get();
11346 $t17_18 = ($t16_17 === 1);
11347 if ($t17_18) {
11348 $block = 2; break;
11349 }
11350 else {
11351 $block = 4; break;
11352 }
11353 break;
11354 }
11355 case 1: {
11356 return;
11357 break;
11358 }
11359 case 2: {
11360 $t18_19 = { $get() { return content.$get().applicationData; }, $set(v) { const obj = content.$get(); obj.applicationData = v; content.$set(obj); } };
11361 $t19_20 = $t18_19.$get();
11362 $t20_21 = Writer$writeOpaqueVec(w, $t19_20);
11363 $block = 1; break;
11364 break;
11365 }
11366 case 3: {
11367 $t21_22 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
11368 $t22_23 = $t21_22.$get();
11369 $t23_24 = proposal$marshal($t22_23, w);
11370 $block = 1; break;
11371 break;
11372 }
11373 case 4: {
11374 $t24_25 = ($t16_17 === 2);
11375 if ($t24_25) {
11376 $block = 3; break;
11377 }
11378 else {
11379 $block = 6; break;
11380 }
11381 break;
11382 }
11383 case 5: {
11384 $t25_26 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
11385 $t26_27 = $t25_26.$get();
11386 $t27_28 = commit$marshal($t26_27, w);
11387 $block = 1; break;
11388 break;
11389 }
11390 case 6: {
11391 $t28_29 = ($t16_17 === 3);
11392 if ($t28_29) {
11393 $block = 5; break;
11394 }
11395 else {
11396 $block = 7; break;
11397 }
11398 break;
11399 }
11400 case 7: {
11401 $t29_30 = $rt.types.makeInterface('string', 'unreachable');
11402 $rt.runtime.panic($t29_30);
11403 break;
11404 }
11405 }
11406 }
11407 }
11408
11409 $rt.types.getType('smesh.lol/web/common/mls.framedContent')?.methods?.set('marshal', framedContent$marshal);
11410 export function framedContent$unmarshal(content, r) {
11411 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43;
11412 let $block = 0;
11413 while (true) {
11414 switch ($block) {
11415 case 0: {
11416 content.$set($rt.builtin.cloneValue({ groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }));
11417 $t0_1 = Reader$readOpaqueVec(r);
11418 $t1_2 = $t0_1[0];
11419 $t2_3 = { $get() { return content.$get().groupID; }, $set(v) { const obj = content.$get(); obj.groupID = v; content.$set(obj); } };
11420 $t3_4 = $t1_2;
11421 $t2_3.$set($t3_4);
11422 $t4_5 = $t0_1[1];
11423 if ($t4_5) {
11424 $block = 2; break;
11425 }
11426 else {
11427 $block = 1; break;
11428 }
11429 break;
11430 }
11431 case 1: {
11432 $t5_6 = errUnexpectedEOF.$get();
11433 return $t5_6;
11434 break;
11435 }
11436 case 2: {
11437 $t6_7 = Reader$readUint64(r);
11438 $t7_8 = $t6_7[0];
11439 $t8_9 = { $get() { return content.$get().epoch; }, $set(v) { const obj = content.$get(); obj.epoch = v; content.$set(obj); } };
11440 $t8_9.$set($t7_8);
11441 $t9_10 = $t6_7[1];
11442 if ($t9_10) {
11443 $block = 4; break;
11444 }
11445 else {
11446 $block = 3; break;
11447 }
11448 break;
11449 }
11450 case 3: {
11451 $t10_11 = errUnexpectedEOF.$get();
11452 return $t10_11;
11453 break;
11454 }
11455 case 4: {
11456 $t11_12 = { $get() { return content.$get().sender; }, $set(v) { const obj = content.$get(); obj.sender = v; content.$set(obj); } };
11457 $t12_13 = sender$unmarshal($t11_12, r);
11458 $t13_14 = ($t12_13 !== null);
11459 if ($t13_14) {
11460 $block = 5; break;
11461 }
11462 else {
11463 $block = 6; break;
11464 }
11465 break;
11466 }
11467 case 5: {
11468 return $t12_13;
11469 break;
11470 }
11471 case 6: {
11472 $t14_15 = Reader$readOpaqueVec(r);
11473 $t15_16 = $t14_15[0];
11474 $t16_17 = { $get() { return content.$get().authenticatedData; }, $set(v) { const obj = content.$get(); obj.authenticatedData = v; content.$set(obj); } };
11475 $t16_17.$set($t15_16);
11476 $t17_18 = $t14_15[1];
11477 if ($t17_18) {
11478 $block = 8; break;
11479 }
11480 else {
11481 $block = 7; break;
11482 }
11483 break;
11484 }
11485 case 7: {
11486 $t18_19 = errUnexpectedEOF.$get();
11487 return $t18_19;
11488 break;
11489 }
11490 case 8: {
11491 $t19_20 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
11492 $t20_21 = contentType$unmarshal($t19_20, r);
11493 $t21_22 = ($t20_21 !== null);
11494 if ($t21_22) {
11495 $block = 9; break;
11496 }
11497 else {
11498 $block = 10; break;
11499 }
11500 break;
11501 }
11502 case 9: {
11503 return $t20_21;
11504 break;
11505 }
11506 case 10: {
11507 $t22_23 = { $get() { return content.$get().contentType; }, $set(v) { const obj = content.$get(); obj.contentType = v; content.$set(obj); } };
11508 $t23_24 = $t22_23.$get();
11509 $t24_25 = ($t23_24 === 1);
11510 if ($t24_25) {
11511 $block = 11; break;
11512 }
11513 else {
11514 $block = 13; break;
11515 }
11516 break;
11517 }
11518 case 11: {
11519 $t25_26 = Reader$readOpaqueVec(r);
11520 $t26_27 = $t25_26[0];
11521 $t27_28 = { $get() { return content.$get().applicationData; }, $set(v) { const obj = content.$get(); obj.applicationData = v; content.$set(obj); } };
11522 $t27_28.$set($t26_27);
11523 $t28_29 = $t25_26[1];
11524 if ($t28_29) {
11525 $block = 15; break;
11526 }
11527 else {
11528 $block = 14; break;
11529 }
11530 break;
11531 }
11532 case 12: {
11533 $t29_30 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11534 $t30_31 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
11535 $t30_31.$set($t29_30);
11536 $t31_32 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
11537 $t32_33 = $t31_32.$get();
11538 $t33_34 = proposal$unmarshal($t32_33, r);
11539 return $t33_34;
11540 break;
11541 }
11542 case 13: {
11543 $t34_35 = ($t23_24 === 2);
11544 if ($t34_35) {
11545 $block = 12; break;
11546 }
11547 else {
11548 $block = 17; break;
11549 }
11550 break;
11551 }
11552 case 14: {
11553 $t35_36 = errUnexpectedEOF.$get();
11554 return $t35_36;
11555 break;
11556 }
11557 case 15: {
11558 return null;
11559 break;
11560 }
11561 case 16: {
11562 $t36_37 = { $value: { proposals: null, path: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11563 $t37_38 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
11564 $t37_38.$set($t36_37);
11565 $t38_39 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
11566 $t39_40 = $t38_39.$get();
11567 $t40_41 = commit$unmarshal($t39_40, r);
11568 return $t40_41;
11569 break;
11570 }
11571 case 17: {
11572 $t41_42 = ($t23_24 === 3);
11573 if ($t41_42) {
11574 $block = 16; break;
11575 }
11576 else {
11577 $block = 18; break;
11578 }
11579 break;
11580 }
11581 case 18: {
11582 $t42_43 = $rt.types.makeInterface('string', 'unreachable');
11583 $rt.runtime.panic($t42_43);
11584 break;
11585 }
11586 }
11587 }
11588 }
11589
11590 $rt.types.getType('smesh.lol/web/common/mls.framedContent')?.methods?.set('unmarshal', framedContent$unmarshal);
11591 export function mlsMessage$marshal(msg, w) {
11592 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30;
11593 let $block = 0;
11594 while (true) {
11595 switch ($block) {
11596 case 0: {
11597 $t0_1 = { $get() { return msg.$get().version; }, $set(v) { const obj = msg.$get(); obj.version = v; msg.$set(obj); } };
11598 $t1_2 = $t0_1.$get();
11599 $t2_3 = $t1_2;
11600 $t3_4 = Writer$addUint16(w, $t2_3);
11601 $t4_5 = { $get() { return msg.$get().wireFormat; }, $set(v) { const obj = msg.$get(); obj.wireFormat = v; msg.$set(obj); } };
11602 $t5_6 = $t4_5.$get();
11603 $t6_7 = wireFormat$marshal($t5_6, w);
11604 $t7_8 = { $get() { return msg.$get().wireFormat; }, $set(v) { const obj = msg.$get(); obj.wireFormat = v; msg.$set(obj); } };
11605 $t8_9 = $t7_8.$get();
11606 $t9_10 = ($t8_9 === 1);
11607 if ($t9_10) {
11608 $block = 2; break;
11609 }
11610 else {
11611 $block = 4; break;
11612 }
11613 break;
11614 }
11615 case 1: {
11616 return;
11617 break;
11618 }
11619 case 2: {
11620 $t10_11 = { $get() { return msg.$get().publicMessage; }, $set(v) { const obj = msg.$get(); obj.publicMessage = v; msg.$set(obj); } };
11621 $t11_12 = $t10_11.$get();
11622 $t12_13 = publicMessage$marshal($t11_12, w);
11623 $block = 1; break;
11624 break;
11625 }
11626 case 3: {
11627 $t13_14 = { $get() { return msg.$get().privateMessage; }, $set(v) { const obj = msg.$get(); obj.privateMessage = v; msg.$set(obj); } };
11628 $t14_15 = $t13_14.$get();
11629 $t15_16 = privateMessage$marshal($t14_15, w);
11630 $block = 1; break;
11631 break;
11632 }
11633 case 4: {
11634 $t16_17 = ($t8_9 === 2);
11635 if ($t16_17) {
11636 $block = 3; break;
11637 }
11638 else {
11639 $block = 6; break;
11640 }
11641 break;
11642 }
11643 case 5: {
11644 $t17_18 = { $get() { return msg.$get().welcome; }, $set(v) { const obj = msg.$get(); obj.welcome = v; msg.$set(obj); } };
11645 $t18_19 = $t17_18.$get();
11646 $t19_20 = Welcome$marshal($t18_19, w);
11647 $block = 1; break;
11648 break;
11649 }
11650 case 6: {
11651 $t20_21 = ($t8_9 === 3);
11652 if ($t20_21) {
11653 $block = 5; break;
11654 }
11655 else {
11656 $block = 8; break;
11657 }
11658 break;
11659 }
11660 case 7: {
11661 $t21_22 = { $get() { return msg.$get().groupInfo; }, $set(v) { const obj = msg.$get(); obj.groupInfo = v; msg.$set(obj); } };
11662 $t22_23 = $t21_22.$get();
11663 $t23_24 = groupInfo$marshal($t22_23, w);
11664 $block = 1; break;
11665 break;
11666 }
11667 case 8: {
11668 $t24_25 = ($t8_9 === 4);
11669 if ($t24_25) {
11670 $block = 7; break;
11671 }
11672 else {
11673 $block = 10; break;
11674 }
11675 break;
11676 }
11677 case 9: {
11678 $t25_26 = { $get() { return msg.$get().keyPackage; }, $set(v) { const obj = msg.$get(); obj.keyPackage = v; msg.$set(obj); } };
11679 $t26_27 = $t25_26.$get();
11680 $t27_28 = KeyPackage$marshal($t26_27, w);
11681 $block = 1; break;
11682 break;
11683 }
11684 case 10: {
11685 $t28_29 = ($t8_9 === 5);
11686 if ($t28_29) {
11687 $block = 9; break;
11688 }
11689 else {
11690 $block = 11; break;
11691 }
11692 break;
11693 }
11694 case 11: {
11695 $t29_30 = $rt.types.makeInterface('string', 'unreachable');
11696 $rt.runtime.panic($t29_30);
11697 break;
11698 }
11699 }
11700 }
11701 }
11702
11703 $rt.types.getType('smesh.lol/web/common/mls.mlsMessage')?.methods?.set('marshal', mlsMessage$marshal);
11704 export function mlsMessage$unmarshal(msg, r) {
11705 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46;
11706 let $block = 0;
11707 while (true) {
11708 switch ($block) {
11709 case 0: {
11710 msg.$set($rt.builtin.cloneValue({ version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }));
11711 $t0_1 = Reader$readUint16(r);
11712 $t1_2 = $t0_1[0];
11713 $t2_3 = $t0_1[1];
11714 if ($t2_3) {
11715 $block = 2; break;
11716 }
11717 else {
11718 $block = 1; break;
11719 }
11720 break;
11721 }
11722 case 1: {
11723 $t3_4 = errUnexpectedEOF.$get();
11724 return $t3_4;
11725 break;
11726 }
11727 case 2: {
11728 $t4_5 = $t1_2;
11729 $t5_6 = { $get() { return msg.$get().version; }, $set(v) { const obj = msg.$get(); obj.version = v; msg.$set(obj); } };
11730 $t5_6.$set($t4_5);
11731 $t6_7 = { $get() { return msg.$get().version; }, $set(v) { const obj = msg.$get(); obj.version = v; msg.$set(obj); } };
11732 $t7_8 = $t6_7.$get();
11733 $t8_9 = ($t7_8 !== 1);
11734 if ($t8_9) {
11735 $block = 3; break;
11736 }
11737 else {
11738 $block = 4; break;
11739 }
11740 break;
11741 }
11742 case 3: {
11743 $t9_10 = errInvalidVersion.$get();
11744 return $t9_10;
11745 break;
11746 }
11747 case 4: {
11748 $t10_11 = { $get() { return msg.$get().wireFormat; }, $set(v) { const obj = msg.$get(); obj.wireFormat = v; msg.$set(obj); } };
11749 $t11_12 = wireFormat$unmarshal($t10_11, r);
11750 $t12_13 = ($t11_12 !== null);
11751 if ($t12_13) {
11752 $block = 5; break;
11753 }
11754 else {
11755 $block = 6; break;
11756 }
11757 break;
11758 }
11759 case 5: {
11760 return $t11_12;
11761 break;
11762 }
11763 case 6: {
11764 $t13_14 = { $get() { return msg.$get().wireFormat; }, $set(v) { const obj = msg.$get(); obj.wireFormat = v; msg.$set(obj); } };
11765 $t14_15 = $t13_14.$get();
11766 $t15_16 = ($t14_15 === 1);
11767 if ($t15_16) {
11768 $block = 7; break;
11769 }
11770 else {
11771 $block = 9; break;
11772 }
11773 break;
11774 }
11775 case 7: {
11776 $t16_17 = { $value: { content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null }, membershipTag: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11777 $t17_18 = { $get() { return msg.$get().publicMessage; }, $set(v) { const obj = msg.$get(); obj.publicMessage = v; msg.$set(obj); } };
11778 $t17_18.$set($t16_17);
11779 $t18_19 = { $get() { return msg.$get().publicMessage; }, $set(v) { const obj = msg.$get(); obj.publicMessage = v; msg.$set(obj); } };
11780 $t19_20 = $t18_19.$get();
11781 $t20_21 = publicMessage$unmarshal($t19_20, r);
11782 return $t20_21;
11783 break;
11784 }
11785 case 8: {
11786 $t21_22 = { $value: { groupID: null, epoch: 0n, contentType: 0, authenticatedData: null, encryptedSenderData: null, ciphertext: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11787 $t22_23 = { $get() { return msg.$get().privateMessage; }, $set(v) { const obj = msg.$get(); obj.privateMessage = v; msg.$set(obj); } };
11788 $t22_23.$set($t21_22);
11789 $t23_24 = { $get() { return msg.$get().privateMessage; }, $set(v) { const obj = msg.$get(); obj.privateMessage = v; msg.$set(obj); } };
11790 $t24_25 = $t23_24.$get();
11791 $t25_26 = privateMessage$unmarshal($t24_25, r);
11792 return $t25_26;
11793 break;
11794 }
11795 case 9: {
11796 $t26_27 = ($t14_15 === 2);
11797 if ($t26_27) {
11798 $block = 8; break;
11799 }
11800 else {
11801 $block = 11; break;
11802 }
11803 break;
11804 }
11805 case 10: {
11806 $t27_28 = { $value: { cipherSuite: 0, secrets: null, encryptedGroupInfo: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11807 $t28_29 = { $get() { return msg.$get().welcome; }, $set(v) { const obj = msg.$get(); obj.welcome = v; msg.$set(obj); } };
11808 $t28_29.$set($t27_28);
11809 $t29_30 = { $get() { return msg.$get().welcome; }, $set(v) { const obj = msg.$get(); obj.welcome = v; msg.$set(obj); } };
11810 $t30_31 = $t29_30.$get();
11811 $t31_32 = Welcome$unmarshal($t30_31, r);
11812 return $t31_32;
11813 break;
11814 }
11815 case 11: {
11816 $t32_33 = ($t14_15 === 3);
11817 if ($t32_33) {
11818 $block = 10; break;
11819 }
11820 else {
11821 $block = 13; break;
11822 }
11823 break;
11824 }
11825 case 12: {
11826 $t33_34 = { $value: { groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, extensions: null, confirmationTag: null, signer: 0, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11827 $t34_35 = { $get() { return msg.$get().groupInfo; }, $set(v) { const obj = msg.$get(); obj.groupInfo = v; msg.$set(obj); } };
11828 $t34_35.$set($t33_34);
11829 $t35_36 = { $get() { return msg.$get().groupInfo; }, $set(v) { const obj = msg.$get(); obj.groupInfo = v; msg.$set(obj); } };
11830 $t36_37 = $t35_36.$get();
11831 $t37_38 = groupInfo$unmarshal($t36_37, r);
11832 return $t37_38;
11833 break;
11834 }
11835 case 13: {
11836 $t38_39 = ($t14_15 === 4);
11837 if ($t38_39) {
11838 $block = 12; break;
11839 }
11840 else {
11841 $block = 15; break;
11842 }
11843 break;
11844 }
11845 case 14: {
11846 $t39_40 = { $value: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
11847 $t40_41 = { $get() { return msg.$get().keyPackage; }, $set(v) { const obj = msg.$get(); obj.keyPackage = v; msg.$set(obj); } };
11848 $t40_41.$set($t39_40);
11849 $t41_42 = { $get() { return msg.$get().keyPackage; }, $set(v) { const obj = msg.$get(); obj.keyPackage = v; msg.$set(obj); } };
11850 $t42_43 = $t41_42.$get();
11851 $t43_44 = KeyPackage$unmarshal($t42_43, r);
11852 return $t43_44;
11853 break;
11854 }
11855 case 15: {
11856 $t44_45 = ($t14_15 === 5);
11857 if ($t44_45) {
11858 $block = 14; break;
11859 }
11860 else {
11861 $block = 16; break;
11862 }
11863 break;
11864 }
11865 case 16: {
11866 $t45_46 = $rt.types.makeInterface('string', 'unreachable');
11867 $rt.runtime.panic($t45_46);
11868 break;
11869 }
11870 }
11871 }
11872 }
11873
11874 $rt.types.getType('smesh.lol/web/common/mls.mlsMessage')?.methods?.set('unmarshal', mlsMessage$unmarshal);
11875 export function framedContentAuthData$marshal(authData, w, ct) {
11876 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
11877 let $block = 0;
11878 while (true) {
11879 switch ($block) {
11880 case 0: {
11881 $t0_1 = { $get() { return authData.$get().signature; }, $set(v) { const obj = authData.$get(); obj.signature = v; authData.$set(obj); } };
11882 $t1_2 = $t0_1.$get();
11883 $t2_3 = Writer$writeOpaqueVec(w, $t1_2);
11884 $t3_4 = (ct === 3);
11885 if ($t3_4) {
11886 $block = 1; break;
11887 }
11888 else {
11889 $block = 2; break;
11890 }
11891 break;
11892 }
11893 case 1: {
11894 $t4_5 = { $get() { return authData.$get().confirmationTag; }, $set(v) { const obj = authData.$get(); obj.confirmationTag = v; authData.$set(obj); } };
11895 $t5_6 = $t4_5.$get();
11896 $t6_7 = Writer$writeOpaqueVec(w, $t5_6);
11897 $block = 2; break;
11898 break;
11899 }
11900 case 2: {
11901 return;
11902 break;
11903 }
11904 }
11905 }
11906 }
11907
11908 $rt.types.getType('smesh.lol/web/common/mls.framedContentAuthData')?.methods?.set('marshal', framedContentAuthData$marshal);
11909 export function framedContentAuthData$unmarshal(authData, r, ct) {
11910 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
11911 let $block = 0;
11912 while (true) {
11913 switch ($block) {
11914 case 0: {
11915 authData.$set($rt.builtin.cloneValue({ signature: null, confirmationTag: null }));
11916 $t0_1 = Reader$readOpaqueVec(r);
11917 $t1_2 = $t0_1[0];
11918 $t2_3 = { $get() { return authData.$get().signature; }, $set(v) { const obj = authData.$get(); obj.signature = v; authData.$set(obj); } };
11919 $t2_3.$set($t1_2);
11920 $t3_4 = $t0_1[1];
11921 if ($t3_4) {
11922 $block = 2; break;
11923 }
11924 else {
11925 $block = 1; break;
11926 }
11927 break;
11928 }
11929 case 1: {
11930 $t4_5 = errUnexpectedEOF.$get();
11931 return $t4_5;
11932 break;
11933 }
11934 case 2: {
11935 $t5_6 = (ct === 3);
11936 if ($t5_6) {
11937 $block = 3; break;
11938 }
11939 else {
11940 $block = 4; break;
11941 }
11942 break;
11943 }
11944 case 3: {
11945 $t6_7 = Reader$readOpaqueVec(r);
11946 $t7_8 = $t6_7[0];
11947 $t8_9 = { $get() { return authData.$get().confirmationTag; }, $set(v) { const obj = authData.$get(); obj.confirmationTag = v; authData.$set(obj); } };
11948 $t8_9.$set($t7_8);
11949 $t9_10 = $t6_7[1];
11950 if ($t9_10) {
11951 $block = 4; break;
11952 }
11953 else {
11954 $block = 5; break;
11955 }
11956 break;
11957 }
11958 case 4: {
11959 return null;
11960 break;
11961 }
11962 case 5: {
11963 $t10_11 = errUnexpectedEOF.$get();
11964 return $t10_11;
11965 break;
11966 }
11967 }
11968 }
11969 }
11970
11971 $rt.types.getType('smesh.lol/web/common/mls.framedContentAuthData')?.methods?.set('unmarshal', framedContentAuthData$unmarshal);
11972 export function framedContentAuthData$verifyConfirmationTag(authData, cs, confirmationKey, confirmedTranscriptHash) {
11973 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
11974 let $block = 0;
11975 while (true) {
11976 switch ($block) {
11977 case 0: {
11978 $t0_1 = { $get() { return authData.$get().confirmationTag; }, $set(v) { const obj = authData.$get(); obj.confirmationTag = v; authData.$set(obj); } };
11979 $t1_2 = $t0_1.$get();
11980 $t2_3 = $rt.builtin.len($t1_2);
11981 $t3_4 = ($t2_3 === 0);
11982 if ($t3_4) {
11983 $block = 1; break;
11984 }
11985 else {
11986 $block = 2; break;
11987 }
11988 break;
11989 }
11990 case 1: {
11991 return false;
11992 break;
11993 }
11994 case 2: {
11995 $t4_5 = { $get() { return authData.$get().confirmationTag; }, $set(v) { const obj = authData.$get(); obj.confirmationTag = v; authData.$set(obj); } };
11996 $t5_6 = $t4_5.$get();
11997 $t6_7 = CipherSuite$verifyMAC(cs, confirmationKey, confirmedTranscriptHash, $t5_6);
11998 return $t6_7;
11999 break;
12000 }
12001 }
12002 }
12003 }
12004
12005 $rt.types.getType('smesh.lol/web/common/mls.framedContentAuthData')?.methods?.set('verifyConfirmationTag', framedContentAuthData$verifyConfirmationTag);
12006 export function framedContentAuthData$verifySignature(authData, cs, verifKey, content) {
12007 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
12008 let $block = 0;
12009 while (true) {
12010 switch ($block) {
12011 case 0: {
12012 $t0_1 = $rt.types.makeInterface('*smesh.lol/web/common/mls.framedContentTBS', content);
12013 $t1_2 = marshalRaw($t0_1);
12014 $t2_3 = $t1_2[0];
12015 $t3_4 = $t1_2[1];
12016 $t4_5 = ($t3_4 !== null);
12017 if ($t4_5) {
12018 $block = 1; break;
12019 }
12020 else {
12021 $block = 2; break;
12022 }
12023 break;
12024 }
12025 case 1: {
12026 return false;
12027 break;
12028 }
12029 case 2: {
12030 $t5_6 = { $get() { return authData.$get().signature; }, $set(v) { const obj = authData.$get(); obj.signature = v; authData.$set(obj); } };
12031 $t6_7 = $t5_6.$get();
12032 $t7_8 = CipherSuite$verifyWithLabel(cs, verifKey, 'FramedContentTBS', $t2_3, $t6_7);
12033 return $t7_8;
12034 break;
12035 }
12036 }
12037 }
12038 }
12039
12040 $rt.types.getType('smesh.lol/web/common/mls.framedContentAuthData')?.methods?.set('verifySignature', framedContentAuthData$verifySignature);
12041 export function authenticatedContent$confirmedTranscriptHashInput(authContent) {
12042 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
12043 $t0_1 = { $value: { wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12044 $t1_2 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
12045 $t2_3 = { $get() { return authContent.$get().wireFormat; }, $set(v) { const obj = authContent.$get(); obj.wireFormat = v; authContent.$set(obj); } };
12046 $t3_4 = $t2_3.$get();
12047 $t4_5 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
12048 $t5_6 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12049 $t6_7 = $t5_6.$get();
12050 $t7_8 = { $get() { return $t0_1.$get().signature; }, $set(v) { const obj = $t0_1.$get(); obj.signature = v; $t0_1.$set(obj); } };
12051 $t8_9 = { $get() { return authContent.$get().auth; }, $set(v) { const obj = authContent.$get(); obj.auth = v; authContent.$set(obj); } };
12052 $t9_10 = { $get() { return $t8_9.$get().signature; }, $set(v) { const obj = $t8_9.$get(); obj.signature = v; $t8_9.$set(obj); } };
12053 $t10_11 = $t9_10.$get();
12054 $t1_2.$set($t3_4);
12055 $t4_5.$set($rt.builtin.cloneValue($t6_7));
12056 $t7_8.$set($t10_11);
12057 return $t0_1;
12058 }
12059
12060 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContent')?.methods?.set('confirmedTranscriptHashInput', authenticatedContent$confirmedTranscriptHashInput);
12061 export function authenticatedContent$framedContentTBS(authContent, ctx) {
12062 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
12063 $t0_1 = { $value: { version: 0, wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, context: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12064 $t1_2 = { $get() { return $t0_1.$get().version; }, $set(v) { const obj = $t0_1.$get(); obj.version = v; $t0_1.$set(obj); } };
12065 $t2_3 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
12066 $t3_4 = { $get() { return authContent.$get().wireFormat; }, $set(v) { const obj = authContent.$get(); obj.wireFormat = v; authContent.$set(obj); } };
12067 $t4_5 = $t3_4.$get();
12068 $t5_6 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
12069 $t6_7 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12070 $t7_8 = $t6_7.$get();
12071 $t8_9 = { $get() { return $t0_1.$get().context; }, $set(v) { const obj = $t0_1.$get(); obj.context = v; $t0_1.$set(obj); } };
12072 $t1_2.$set(1);
12073 $t2_3.$set($t4_5);
12074 $t5_6.$set($rt.builtin.cloneValue($t7_8));
12075 $t8_9.$set(ctx);
12076 return $t0_1;
12077 }
12078
12079 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContent')?.methods?.set('framedContentTBS', authenticatedContent$framedContentTBS);
12080 export function authenticatedContent$generateProposalRef(authContent, cs) {
12081 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
12082 let $block = 0;
12083 while (true) {
12084 switch ($block) {
12085 case 0: {
12086 $t0_1 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12087 $t1_2 = { $get() { return $t0_1.$get().contentType; }, $set(v) { const obj = $t0_1.$get(); obj.contentType = v; $t0_1.$set(obj); } };
12088 $t2_3 = $t1_2.$get();
12089 $t3_4 = ($t2_3 !== 2);
12090 if ($t3_4) {
12091 $block = 1; break;
12092 }
12093 else {
12094 $block = 2; break;
12095 }
12096 break;
12097 }
12098 case 1: {
12099 $t4_5 = $rt.types.makeInterface('string', 'mls: not a proposal');
12100 $rt.runtime.panic($t4_5);
12101 break;
12102 }
12103 case 2: {
12104 $t5_6 = $rt.types.makeInterface('*smesh.lol/web/common/mls.authenticatedContent', authContent);
12105 $t6_7 = marshalRaw($t5_6);
12106 $t7_8 = $t6_7[0];
12107 $t8_9 = $t6_7[1];
12108 $t9_10 = ($t8_9 !== null);
12109 if ($t9_10) {
12110 $block = 3; break;
12111 }
12112 else {
12113 $block = 4; break;
12114 }
12115 break;
12116 }
12117 case 3: {
12118 return [null, $t8_9];
12119 break;
12120 }
12121 case 4: {
12122 $t10_11 = CipherSuite$refHash(cs, 'MLS 1.0 Proposal Reference', $t7_8);
12123 $t11_12 = $t10_11[0];
12124 $t12_13 = $t10_11[1];
12125 $t13_14 = ($t12_13 !== null);
12126 if ($t13_14) {
12127 $block = 5; break;
12128 }
12129 else {
12130 $block = 6; break;
12131 }
12132 break;
12133 }
12134 case 5: {
12135 return [null, $t12_13];
12136 break;
12137 }
12138 case 6: {
12139 $t14_15 = $t11_12;
12140 return [$t14_15, null];
12141 break;
12142 }
12143 }
12144 }
12145 }
12146
12147 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContent')?.methods?.set('generateProposalRef', authenticatedContent$generateProposalRef);
12148 export function authenticatedContent$marshal(authContent, w) {
12149 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
12150 $t0_1 = { $get() { return authContent.$get().wireFormat; }, $set(v) { const obj = authContent.$get(); obj.wireFormat = v; authContent.$set(obj); } };
12151 $t1_2 = $t0_1.$get();
12152 $t2_3 = wireFormat$marshal($t1_2, w);
12153 $t3_4 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12154 $t4_5 = framedContent$marshal($t3_4, w);
12155 $t5_6 = { $get() { return authContent.$get().auth; }, $set(v) { const obj = authContent.$get(); obj.auth = v; authContent.$set(obj); } };
12156 $t6_7 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12157 $t7_8 = { $get() { return $t6_7.$get().contentType; }, $set(v) { const obj = $t6_7.$get(); obj.contentType = v; $t6_7.$set(obj); } };
12158 $t8_9 = $t7_8.$get();
12159 $t9_10 = framedContentAuthData$marshal($t5_6, w, $t8_9);
12160 return;
12161 }
12162
12163 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContent')?.methods?.set('marshal', authenticatedContent$marshal);
12164 export function authenticatedContent$unmarshal(authContent, r) {
12165 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
12166 let $block = 0;
12167 while (true) {
12168 switch ($block) {
12169 case 0: {
12170 $t0_1 = { $get() { return authContent.$get().wireFormat; }, $set(v) { const obj = authContent.$get(); obj.wireFormat = v; authContent.$set(obj); } };
12171 $t1_2 = wireFormat$unmarshal($t0_1, r);
12172 $t2_3 = ($t1_2 !== null);
12173 if ($t2_3) {
12174 $block = 1; break;
12175 }
12176 else {
12177 $block = 2; break;
12178 }
12179 break;
12180 }
12181 case 1: {
12182 return $t1_2;
12183 break;
12184 }
12185 case 2: {
12186 $t3_4 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12187 $t4_5 = framedContent$unmarshal($t3_4, r);
12188 $t5_6 = ($t4_5 !== null);
12189 if ($t5_6) {
12190 $block = 3; break;
12191 }
12192 else {
12193 $block = 4; break;
12194 }
12195 break;
12196 }
12197 case 3: {
12198 return $t4_5;
12199 break;
12200 }
12201 case 4: {
12202 $t6_7 = { $get() { return authContent.$get().auth; }, $set(v) { const obj = authContent.$get(); obj.auth = v; authContent.$set(obj); } };
12203 $t7_8 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
12204 $t8_9 = { $get() { return $t7_8.$get().contentType; }, $set(v) { const obj = $t7_8.$get(); obj.contentType = v; $t7_8.$set(obj); } };
12205 $t9_10 = $t8_9.$get();
12206 $t10_11 = framedContentAuthData$unmarshal($t6_7, r, $t9_10);
12207 return $t10_11;
12208 break;
12209 }
12210 }
12211 }
12212 }
12213
12214 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContent')?.methods?.set('unmarshal', authenticatedContent$unmarshal);
12215 export function authenticatedContent$verifySignature(authContent, verifKey, ctx) {
12216 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
12217 let $block = 0;
12218 while (true) {
12219 switch ($block) {
12220 case 0: {
12221 $t0_1 = authenticatedContent$framedContentTBS(authContent, ctx);
12222 $t1_2 = $rt.types.makeInterface('*smesh.lol/web/common/mls.framedContentTBS', $t0_1);
12223 $t2_3 = marshalRaw($t1_2);
12224 $t3_4 = $t2_3[0];
12225 $t4_5 = $t2_3[1];
12226 $t5_6 = ($t4_5 !== null);
12227 if ($t5_6) {
12228 $block = 1; break;
12229 }
12230 else {
12231 $block = 2; break;
12232 }
12233 break;
12234 }
12235 case 1: {
12236 return false;
12237 break;
12238 }
12239 case 2: {
12240 $t6_7 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
12241 $t7_8 = $t6_7.$get();
12242 $t8_9 = { $get() { return authContent.$get().auth; }, $set(v) { const obj = authContent.$get(); obj.auth = v; authContent.$set(obj); } };
12243 $t9_10 = { $get() { return $t8_9.$get().signature; }, $set(v) { const obj = $t8_9.$get(); obj.signature = v; $t8_9.$set(obj); } };
12244 $t10_11 = $t9_10.$get();
12245 $t11_12 = CipherSuite$verifyWithLabel($t7_8, verifKey, 'FramedContentTBS', $t3_4, $t10_11);
12246 return $t11_12;
12247 break;
12248 }
12249 }
12250 }
12251 }
12252
12253 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContent')?.methods?.set('verifySignature', authenticatedContent$verifySignature);
12254 export function framedContentTBS$marshal(content, w) {
12255 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
12256 let $block = 0;
12257 while (true) {
12258 switch ($block) {
12259 case 0: {
12260 $t0_1 = { $get() { return content.$get().version; }, $set(v) { const obj = content.$get(); obj.version = v; content.$set(obj); } };
12261 $t1_2 = $t0_1.$get();
12262 $t2_3 = $t1_2;
12263 $t3_4 = Writer$addUint16(w, $t2_3);
12264 $t4_5 = { $get() { return content.$get().wireFormat; }, $set(v) { const obj = content.$get(); obj.wireFormat = v; content.$set(obj); } };
12265 $t5_6 = $t4_5.$get();
12266 $t6_7 = wireFormat$marshal($t5_6, w);
12267 $t7_8 = { $get() { return content.$get().content; }, $set(v) { const obj = content.$get(); obj.content = v; content.$set(obj); } };
12268 $t8_9 = framedContent$marshal($t7_8, w);
12269 $t9_10 = { $get() { return content.$get().content; }, $set(v) { const obj = content.$get(); obj.content = v; content.$set(obj); } };
12270 $t10_11 = { $get() { return $t9_10.$get().sender; }, $set(v) { const obj = $t9_10.$get(); obj.sender = v; $t9_10.$set(obj); } };
12271 $t11_12 = { $get() { return $t10_11.$get().senderType; }, $set(v) { const obj = $t10_11.$get(); obj.senderType = v; $t10_11.$set(obj); } };
12272 $t12_13 = $t11_12.$get();
12273 $t13_14 = ($t12_13 === 1);
12274 if ($t13_14) {
12275 $block = 2; break;
12276 }
12277 else {
12278 $block = 3; break;
12279 }
12280 break;
12281 }
12282 case 1: {
12283 return;
12284 break;
12285 }
12286 case 2: {
12287 $t14_15 = { $get() { return content.$get().context; }, $set(v) { const obj = content.$get(); obj.context = v; content.$set(obj); } };
12288 $t15_16 = $t14_15.$get();
12289 $t16_17 = groupContext$marshal($t15_16, w);
12290 $block = 1; break;
12291 break;
12292 }
12293 case 3: {
12294 $t17_18 = ($t12_13 === 4);
12295 if ($t17_18) {
12296 $block = 2; break;
12297 }
12298 else {
12299 $block = 1; break;
12300 }
12301 break;
12302 }
12303 }
12304 }
12305 }
12306
12307 $rt.types.getType('smesh.lol/web/common/mls.framedContentTBS')?.methods?.set('marshal', framedContentTBS$marshal);
12308 export function publicMessage$authenticatedContent(msg) {
12309 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
12310 $t0_1 = { $value: { wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12311 $t1_2 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
12312 $t2_3 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
12313 $t3_4 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12314 $t4_5 = $t3_4.$get();
12315 $t5_6 = { $get() { return $t0_1.$get().auth; }, $set(v) { const obj = $t0_1.$get(); obj.auth = v; $t0_1.$set(obj); } };
12316 $t6_7 = { $get() { return msg.$get().auth; }, $set(v) { const obj = msg.$get(); obj.auth = v; msg.$set(obj); } };
12317 $t7_8 = $t6_7.$get();
12318 $t1_2.$set(1);
12319 $t2_3.$set($rt.builtin.cloneValue($t4_5));
12320 $t5_6.$set($rt.builtin.cloneValue($t7_8));
12321 return $t0_1;
12322 }
12323
12324 $rt.types.getType('smesh.lol/web/common/mls.publicMessage')?.methods?.set('authenticatedContent', publicMessage$authenticatedContent);
12325 export function publicMessage$authenticatedContentTBM(msg, ctx) {
12326 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
12327 $t0_1 = { $value: { contentTBS: { version: 0, wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, context: null }, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12328 $t1_2 = { $get() { return $t0_1.$get().contentTBS; }, $set(v) { const obj = $t0_1.$get(); obj.contentTBS = v; $t0_1.$set(obj); } };
12329 $t2_3 = publicMessage$authenticatedContent(msg);
12330 $t3_4 = authenticatedContent$framedContentTBS($t2_3, ctx);
12331 $t4_5 = $t3_4.$get();
12332 $t5_6 = { $get() { return $t0_1.$get().auth; }, $set(v) { const obj = $t0_1.$get(); obj.auth = v; $t0_1.$set(obj); } };
12333 $t6_7 = { $get() { return msg.$get().auth; }, $set(v) { const obj = msg.$get(); obj.auth = v; msg.$set(obj); } };
12334 $t7_8 = $t6_7.$get();
12335 $t1_2.$set($rt.builtin.cloneValue($t4_5));
12336 $t5_6.$set($rt.builtin.cloneValue($t7_8));
12337 return $t0_1;
12338 }
12339
12340 $rt.types.getType('smesh.lol/web/common/mls.publicMessage')?.methods?.set('authenticatedContentTBM', publicMessage$authenticatedContentTBM);
12341 export function publicMessage$marshal(msg, w) {
12342 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
12343 let $block = 0;
12344 while (true) {
12345 switch ($block) {
12346 case 0: {
12347 $t0_1 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12348 $t1_2 = framedContent$marshal($t0_1, w);
12349 $t2_3 = { $get() { return msg.$get().auth; }, $set(v) { const obj = msg.$get(); obj.auth = v; msg.$set(obj); } };
12350 $t3_4 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12351 $t4_5 = { $get() { return $t3_4.$get().contentType; }, $set(v) { const obj = $t3_4.$get(); obj.contentType = v; $t3_4.$set(obj); } };
12352 $t5_6 = $t4_5.$get();
12353 $t6_7 = framedContentAuthData$marshal($t2_3, w, $t5_6);
12354 $t7_8 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12355 $t8_9 = { $get() { return $t7_8.$get().sender; }, $set(v) { const obj = $t7_8.$get(); obj.sender = v; $t7_8.$set(obj); } };
12356 $t9_10 = { $get() { return $t8_9.$get().senderType; }, $set(v) { const obj = $t8_9.$get(); obj.senderType = v; $t8_9.$set(obj); } };
12357 $t10_11 = $t9_10.$get();
12358 $t11_12 = ($t10_11 === 1);
12359 if ($t11_12) {
12360 $block = 1; break;
12361 }
12362 else {
12363 $block = 2; break;
12364 }
12365 break;
12366 }
12367 case 1: {
12368 $t12_13 = { $get() { return msg.$get().membershipTag; }, $set(v) { const obj = msg.$get(); obj.membershipTag = v; msg.$set(obj); } };
12369 $t13_14 = $t12_13.$get();
12370 $t14_15 = Writer$writeOpaqueVec(w, $t13_14);
12371 $block = 2; break;
12372 break;
12373 }
12374 case 2: {
12375 return;
12376 break;
12377 }
12378 }
12379 }
12380 }
12381
12382 $rt.types.getType('smesh.lol/web/common/mls.publicMessage')?.methods?.set('marshal', publicMessage$marshal);
12383 export function publicMessage$signMembershipTag(msg, cs, membershipKey, ctx) {
12384 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
12385 let $block = 0;
12386 while (true) {
12387 switch ($block) {
12388 case 0: {
12389 $t0_1 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12390 $t1_2 = { $get() { return $t0_1.$get().sender; }, $set(v) { const obj = $t0_1.$get(); obj.sender = v; $t0_1.$set(obj); } };
12391 $t2_3 = { $get() { return $t1_2.$get().senderType; }, $set(v) { const obj = $t1_2.$get(); obj.senderType = v; $t1_2.$set(obj); } };
12392 $t3_4 = $t2_3.$get();
12393 $t4_5 = ($t3_4 !== 1);
12394 if ($t4_5) {
12395 $block = 1; break;
12396 }
12397 else {
12398 $block = 2; break;
12399 }
12400 break;
12401 }
12402 case 1: {
12403 return null;
12404 break;
12405 }
12406 case 2: {
12407 $t5_6 = publicMessage$authenticatedContentTBM(msg, ctx);
12408 $t6_7 = $rt.types.makeInterface('*smesh.lol/web/common/mls.authenticatedContentTBM', $t5_6);
12409 $t7_8 = marshalRaw($t6_7);
12410 $t8_9 = $t7_8[0];
12411 $t9_10 = $t7_8[1];
12412 $t10_11 = ($t9_10 !== null);
12413 if ($t10_11) {
12414 $block = 3; break;
12415 }
12416 else {
12417 $block = 4; break;
12418 }
12419 break;
12420 }
12421 case 3: {
12422 return $t9_10;
12423 break;
12424 }
12425 case 4: {
12426 $t11_12 = CipherSuite$signMAC(cs, membershipKey, $t8_9);
12427 $t12_13 = { $get() { return msg.$get().membershipTag; }, $set(v) { const obj = msg.$get(); obj.membershipTag = v; msg.$set(obj); } };
12428 $t12_13.$set($t11_12);
12429 return null;
12430 break;
12431 }
12432 }
12433 }
12434 }
12435
12436 $rt.types.getType('smesh.lol/web/common/mls.publicMessage')?.methods?.set('signMembershipTag', publicMessage$signMembershipTag);
12437 export function publicMessage$unmarshal(msg, r) {
12438 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
12439 let $block = 0;
12440 while (true) {
12441 switch ($block) {
12442 case 0: {
12443 msg.$set($rt.builtin.cloneValue({ content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null }, membershipTag: null }));
12444 $t0_1 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12445 $t1_2 = framedContent$unmarshal($t0_1, r);
12446 $t2_3 = ($t1_2 !== null);
12447 if ($t2_3) {
12448 $block = 1; break;
12449 }
12450 else {
12451 $block = 2; break;
12452 }
12453 break;
12454 }
12455 case 1: {
12456 return $t1_2;
12457 break;
12458 }
12459 case 2: {
12460 $t3_4 = { $get() { return msg.$get().auth; }, $set(v) { const obj = msg.$get(); obj.auth = v; msg.$set(obj); } };
12461 $t4_5 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12462 $t5_6 = { $get() { return $t4_5.$get().contentType; }, $set(v) { const obj = $t4_5.$get(); obj.contentType = v; $t4_5.$set(obj); } };
12463 $t6_7 = $t5_6.$get();
12464 $t7_8 = framedContentAuthData$unmarshal($t3_4, r, $t6_7);
12465 $t8_9 = ($t7_8 !== null);
12466 if ($t8_9) {
12467 $block = 3; break;
12468 }
12469 else {
12470 $block = 4; break;
12471 }
12472 break;
12473 }
12474 case 3: {
12475 return $t7_8;
12476 break;
12477 }
12478 case 4: {
12479 $t9_10 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12480 $t10_11 = { $get() { return $t9_10.$get().sender; }, $set(v) { const obj = $t9_10.$get(); obj.sender = v; $t9_10.$set(obj); } };
12481 $t11_12 = { $get() { return $t10_11.$get().senderType; }, $set(v) { const obj = $t10_11.$get(); obj.senderType = v; $t10_11.$set(obj); } };
12482 $t12_13 = $t11_12.$get();
12483 $t13_14 = ($t12_13 === 1);
12484 if ($t13_14) {
12485 $block = 5; break;
12486 }
12487 else {
12488 $block = 6; break;
12489 }
12490 break;
12491 }
12492 case 5: {
12493 $t14_15 = Reader$readOpaqueVec(r);
12494 $t15_16 = $t14_15[0];
12495 $t16_17 = { $get() { return msg.$get().membershipTag; }, $set(v) { const obj = msg.$get(); obj.membershipTag = v; msg.$set(obj); } };
12496 $t16_17.$set($t15_16);
12497 $t17_18 = $t14_15[1];
12498 if ($t17_18) {
12499 $block = 6; break;
12500 }
12501 else {
12502 $block = 7; break;
12503 }
12504 break;
12505 }
12506 case 6: {
12507 return null;
12508 break;
12509 }
12510 case 7: {
12511 $t18_19 = errUnexpectedEOF.$get();
12512 return $t18_19;
12513 break;
12514 }
12515 }
12516 }
12517 }
12518
12519 $rt.types.getType('smesh.lol/web/common/mls.publicMessage')?.methods?.set('unmarshal', publicMessage$unmarshal);
12520 export function publicMessage$verifyMembershipTag(msg, membershipKey, ctx) {
12521 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
12522 let $block = 0;
12523 while (true) {
12524 switch ($block) {
12525 case 0: {
12526 $t0_1 = { $get() { return msg.$get().content; }, $set(v) { const obj = msg.$get(); obj.content = v; msg.$set(obj); } };
12527 $t1_2 = { $get() { return $t0_1.$get().sender; }, $set(v) { const obj = $t0_1.$get(); obj.sender = v; $t0_1.$set(obj); } };
12528 $t2_3 = { $get() { return $t1_2.$get().senderType; }, $set(v) { const obj = $t1_2.$get(); obj.senderType = v; $t1_2.$set(obj); } };
12529 $t3_4 = $t2_3.$get();
12530 $t4_5 = ($t3_4 !== 1);
12531 if ($t4_5) {
12532 $block = 1; break;
12533 }
12534 else {
12535 $block = 2; break;
12536 }
12537 break;
12538 }
12539 case 1: {
12540 return true;
12541 break;
12542 }
12543 case 2: {
12544 $t5_6 = publicMessage$authenticatedContentTBM(msg, ctx);
12545 $t6_7 = $rt.types.makeInterface('*smesh.lol/web/common/mls.authenticatedContentTBM', $t5_6);
12546 $t7_8 = marshalRaw($t6_7);
12547 $t8_9 = $t7_8[0];
12548 $t9_10 = $t7_8[1];
12549 $t10_11 = ($t9_10 !== null);
12550 if ($t10_11) {
12551 $block = 3; break;
12552 }
12553 else {
12554 $block = 4; break;
12555 }
12556 break;
12557 }
12558 case 3: {
12559 return false;
12560 break;
12561 }
12562 case 4: {
12563 $t11_12 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
12564 $t12_13 = $t11_12.$get();
12565 $t13_14 = { $get() { return msg.$get().membershipTag; }, $set(v) { const obj = msg.$get(); obj.membershipTag = v; msg.$set(obj); } };
12566 $t14_15 = $t13_14.$get();
12567 $t15_16 = CipherSuite$verifyMAC($t12_13, membershipKey, $t8_9, $t14_15);
12568 return $t15_16;
12569 break;
12570 }
12571 }
12572 }
12573 }
12574
12575 $rt.types.getType('smesh.lol/web/common/mls.publicMessage')?.methods?.set('verifyMembershipTag', publicMessage$verifyMembershipTag);
12576 export function authenticatedContentTBM$marshal(tbm, w) {
12577 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
12578 $t0_1 = { $get() { return tbm.$get().contentTBS; }, $set(v) { const obj = tbm.$get(); obj.contentTBS = v; tbm.$set(obj); } };
12579 $t1_2 = framedContentTBS$marshal($t0_1, w);
12580 $t2_3 = { $get() { return tbm.$get().auth; }, $set(v) { const obj = tbm.$get(); obj.auth = v; tbm.$set(obj); } };
12581 $t3_4 = { $get() { return tbm.$get().contentTBS; }, $set(v) { const obj = tbm.$get(); obj.contentTBS = v; tbm.$set(obj); } };
12582 $t4_5 = { $get() { return $t3_4.$get().content; }, $set(v) { const obj = $t3_4.$get(); obj.content = v; $t3_4.$set(obj); } };
12583 $t5_6 = { $get() { return $t4_5.$get().contentType; }, $set(v) { const obj = $t4_5.$get(); obj.contentType = v; $t4_5.$set(obj); } };
12584 $t6_7 = $t5_6.$get();
12585 $t7_8 = framedContentAuthData$marshal($t2_3, w, $t6_7);
12586 return;
12587 }
12588
12589 $rt.types.getType('smesh.lol/web/common/mls.authenticatedContentTBM')?.methods?.set('marshal', authenticatedContentTBM$marshal);
12590 export function privateMessage$authenticatedContent(msg, sd, content) {
12591 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28;
12592 $t0_1 = { $value: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12593 $t1_2 = { $get() { return $t0_1.$get().groupID; }, $set(v) { const obj = $t0_1.$get(); obj.groupID = v; $t0_1.$set(obj); } };
12594 $t2_3 = { $get() { return msg.$get().groupID; }, $set(v) { const obj = msg.$get(); obj.groupID = v; msg.$set(obj); } };
12595 $t3_4 = $t2_3.$get();
12596 $t4_5 = { $get() { return $t0_1.$get().epoch; }, $set(v) { const obj = $t0_1.$get(); obj.epoch = v; $t0_1.$set(obj); } };
12597 $t5_6 = { $get() { return msg.$get().epoch; }, $set(v) { const obj = msg.$get(); obj.epoch = v; msg.$set(obj); } };
12598 $t6_7 = $t5_6.$get();
12599 $t7_8 = { $get() { return $t0_1.$get().sender; }, $set(v) { const obj = $t0_1.$get(); obj.sender = v; $t0_1.$set(obj); } };
12600 $t8_9 = { $get() { return $t7_8.$get().senderType; }, $set(v) { const obj = $t7_8.$get(); obj.senderType = v; $t7_8.$set(obj); } };
12601 $t9_10 = { $get() { return $t7_8.$get().leafIndex; }, $set(v) { const obj = $t7_8.$get(); obj.leafIndex = v; $t7_8.$set(obj); } };
12602 $t10_11 = { $get() { return sd.$get().leafIndex; }, $set(v) { const obj = sd.$get(); obj.leafIndex = v; sd.$set(obj); } };
12603 $t11_12 = $t10_11.$get();
12604 $t12_13 = { $get() { return $t0_1.$get().authenticatedData; }, $set(v) { const obj = $t0_1.$get(); obj.authenticatedData = v; $t0_1.$set(obj); } };
12605 $t13_14 = { $get() { return msg.$get().authenticatedData; }, $set(v) { const obj = msg.$get(); obj.authenticatedData = v; msg.$set(obj); } };
12606 $t14_15 = $t13_14.$get();
12607 $t15_16 = { $get() { return $t0_1.$get().contentType; }, $set(v) { const obj = $t0_1.$get(); obj.contentType = v; $t0_1.$set(obj); } };
12608 $t16_17 = { $get() { return msg.$get().contentType; }, $set(v) { const obj = msg.$get(); obj.contentType = v; msg.$set(obj); } };
12609 $t17_18 = $t16_17.$get();
12610 $t18_19 = { $get() { return $t0_1.$get().applicationData; }, $set(v) { const obj = $t0_1.$get(); obj.applicationData = v; $t0_1.$set(obj); } };
12611 $t19_20 = { $get() { return content.$get().applicationData; }, $set(v) { const obj = content.$get(); obj.applicationData = v; content.$set(obj); } };
12612 $t20_21 = $t19_20.$get();
12613 $t21_22 = { $get() { return $t0_1.$get().proposal; }, $set(v) { const obj = $t0_1.$get(); obj.proposal = v; $t0_1.$set(obj); } };
12614 $t22_23 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
12615 $t23_24 = $t22_23.$get();
12616 $t24_25 = { $get() { return $t0_1.$get().commit; }, $set(v) { const obj = $t0_1.$get(); obj.commit = v; $t0_1.$set(obj); } };
12617 $t25_26 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
12618 $t26_27 = $t25_26.$get();
12619 $t1_2.$set($t3_4);
12620 $t4_5.$set($t6_7);
12621 $t8_9.$set(1);
12622 $t9_10.$set($t11_12);
12623 $t12_13.$set($t14_15);
12624 $t15_16.$set($t17_18);
12625 $t18_19.$set($t20_21);
12626 $t21_22.$set($t23_24);
12627 $t24_25.$set($t26_27);
12628 $t27_28 = privateMessageContent$authenticatedContent(content, $t0_1);
12629 return $t27_28;
12630 }
12631
12632 $rt.types.getType('smesh.lol/web/common/mls.privateMessage')?.methods?.set('authenticatedContent', privateMessage$authenticatedContent);
12633 export function privateMessage$decryptContent(msg, cs, secret, reuseGuard) {
12634 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
12635 let $block = 0;
12636 while (true) {
12637 switch ($block) {
12638 case 0: {
12639 $t0_1 = derivePrivateMessageKeyAndNonce(cs, secret, reuseGuard);
12640 $t1_2 = $t0_1[0];
12641 $t2_3 = $t0_1[1];
12642 $t3_4 = $t0_1[2];
12643 $t4_5 = ($t3_4 !== null);
12644 if ($t4_5) {
12645 $block = 1; break;
12646 }
12647 else {
12648 $block = 2; break;
12649 }
12650 break;
12651 }
12652 case 1: {
12653 return [null, $t3_4];
12654 break;
12655 }
12656 case 2: {
12657 $t5_6 = { $value: { groupID: null, epoch: 0n, contentType: 0, authenticatedData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12658 $t6_7 = { $get() { return $t5_6.$get().groupID; }, $set(v) { const obj = $t5_6.$get(); obj.groupID = v; $t5_6.$set(obj); } };
12659 $t7_8 = { $get() { return msg.$get().groupID; }, $set(v) { const obj = msg.$get(); obj.groupID = v; msg.$set(obj); } };
12660 $t8_9 = $t7_8.$get();
12661 $t9_10 = { $get() { return $t5_6.$get().epoch; }, $set(v) { const obj = $t5_6.$get(); obj.epoch = v; $t5_6.$set(obj); } };
12662 $t10_11 = { $get() { return msg.$get().epoch; }, $set(v) { const obj = msg.$get(); obj.epoch = v; msg.$set(obj); } };
12663 $t11_12 = $t10_11.$get();
12664 $t12_13 = { $get() { return $t5_6.$get().contentType; }, $set(v) { const obj = $t5_6.$get(); obj.contentType = v; $t5_6.$set(obj); } };
12665 $t13_14 = { $get() { return msg.$get().contentType; }, $set(v) { const obj = msg.$get(); obj.contentType = v; msg.$set(obj); } };
12666 $t14_15 = $t13_14.$get();
12667 $t15_16 = { $get() { return $t5_6.$get().authenticatedData; }, $set(v) { const obj = $t5_6.$get(); obj.authenticatedData = v; $t5_6.$set(obj); } };
12668 $t16_17 = { $get() { return msg.$get().authenticatedData; }, $set(v) { const obj = msg.$get(); obj.authenticatedData = v; msg.$set(obj); } };
12669 $t17_18 = $t16_17.$get();
12670 $t6_7.$set($t8_9);
12671 $t9_10.$set($t11_12);
12672 $t12_13.$set($t14_15);
12673 $t15_16.$set($t17_18);
12674 $t18_19 = $rt.types.makeInterface('*smesh.lol/web/common/mls.privateContentAAD', $t5_6);
12675 $t19_20 = marshalRaw($t18_19);
12676 $t20_21 = $t19_20[0];
12677 $t21_22 = $t19_20[1];
12678 $t22_23 = ($t21_22 !== null);
12679 if ($t22_23) {
12680 $block = 3; break;
12681 }
12682 else {
12683 $block = 4; break;
12684 }
12685 break;
12686 }
12687 case 3: {
12688 return [null, $t21_22];
12689 break;
12690 }
12691 case 4: {
12692 $t23_24 = { $get() { return msg.$get().ciphertext; }, $set(v) { const obj = msg.$get(); obj.ciphertext = v; msg.$set(obj); } };
12693 $t24_25 = $t23_24.$get();
12694 $t25_26 = CipherSuite$aeadOpen(cs, $t1_2, $t2_3, $t24_25, $t20_21);
12695 $t26_27 = $t25_26[0];
12696 $t27_28 = $t25_26[1];
12697 $t28_29 = ($t27_28 !== null);
12698 if ($t28_29) {
12699 $block = 5; break;
12700 }
12701 else {
12702 $block = 6; break;
12703 }
12704 break;
12705 }
12706 case 5: {
12707 return [null, $t27_28];
12708 break;
12709 }
12710 case 6: {
12711 $t29_30 = { $value: { data: null, pos: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12712 $t30_31 = newReader($t26_27);
12713 $t29_30.$set($rt.builtin.cloneValue($t30_31));
12714 $t31_32 = { $value: { applicationData: null, proposal: null, commit: null, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12715 $t32_33 = { $get() { return msg.$get().contentType; }, $set(v) { const obj = msg.$get(); obj.contentType = v; msg.$set(obj); } };
12716 $t33_34 = $t32_33.$get();
12717 $t34_35 = privateMessageContent$unmarshal($t31_32, $t29_30, $t33_34);
12718 $t35_36 = ($t34_35 !== null);
12719 if ($t35_36) {
12720 $block = 7; break;
12721 }
12722 else {
12723 $block = 10; break;
12724 }
12725 break;
12726 }
12727 case 7: {
12728 return [null, $t34_35];
12729 break;
12730 }
12731 case 8: {
12732 $t36_37 = Reader$readByte($t29_30);
12733 $t37_38 = $t36_37[0];
12734 $t38_39 = $t36_37[1];
12735 $t39_40 = ($t37_38 !== 0);
12736 if ($t39_40) {
12737 $block = 11; break;
12738 }
12739 else {
12740 $block = 10; break;
12741 }
12742 break;
12743 }
12744 case 9: {
12745 return [$t31_32, null];
12746 break;
12747 }
12748 case 10: {
12749 $t40_41 = Reader$empty($t29_30);
12750 if ($t40_41) {
12751 $block = 9; break;
12752 }
12753 else {
12754 $block = 8; break;
12755 }
12756 break;
12757 }
12758 case 11: {
12759 $t41_42 = errNonZeroPadding.$get();
12760 return [null, $t41_42];
12761 break;
12762 }
12763 }
12764 }
12765 }
12766
12767 $rt.types.getType('smesh.lol/web/common/mls.privateMessage')?.methods?.set('decryptContent', privateMessage$decryptContent);
12768 export function privateMessage$decryptSenderData(msg, cs, senderDataSecret) {
12769 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37;
12770 let $block = 0;
12771 while (true) {
12772 switch ($block) {
12773 case 0: {
12774 $t0_1 = { $get() { return msg.$get().ciphertext; }, $set(v) { const obj = msg.$get(); obj.ciphertext = v; msg.$set(obj); } };
12775 $t1_2 = $t0_1.$get();
12776 $t2_3 = expandSenderDataKey(cs, senderDataSecret, $t1_2);
12777 $t3_4 = $t2_3[0];
12778 $t4_5 = $t2_3[1];
12779 $t5_6 = ($t4_5 !== null);
12780 if ($t5_6) {
12781 $block = 1; break;
12782 }
12783 else {
12784 $block = 2; break;
12785 }
12786 break;
12787 }
12788 case 1: {
12789 return [null, $t4_5];
12790 break;
12791 }
12792 case 2: {
12793 $t6_7 = { $get() { return msg.$get().ciphertext; }, $set(v) { const obj = msg.$get(); obj.ciphertext = v; msg.$set(obj); } };
12794 $t7_8 = $t6_7.$get();
12795 $t8_9 = expandSenderDataNonce(cs, senderDataSecret, $t7_8);
12796 $t9_10 = $t8_9[0];
12797 $t10_11 = $t8_9[1];
12798 $t11_12 = ($t10_11 !== null);
12799 if ($t11_12) {
12800 $block = 3; break;
12801 }
12802 else {
12803 $block = 4; break;
12804 }
12805 break;
12806 }
12807 case 3: {
12808 return [null, $t10_11];
12809 break;
12810 }
12811 case 4: {
12812 $t12_13 = { $value: { groupID: null, epoch: 0n, contentType: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12813 $t13_14 = { $get() { return $t12_13.$get().groupID; }, $set(v) { const obj = $t12_13.$get(); obj.groupID = v; $t12_13.$set(obj); } };
12814 $t14_15 = { $get() { return msg.$get().groupID; }, $set(v) { const obj = msg.$get(); obj.groupID = v; msg.$set(obj); } };
12815 $t15_16 = $t14_15.$get();
12816 $t16_17 = { $get() { return $t12_13.$get().epoch; }, $set(v) { const obj = $t12_13.$get(); obj.epoch = v; $t12_13.$set(obj); } };
12817 $t17_18 = { $get() { return msg.$get().epoch; }, $set(v) { const obj = msg.$get(); obj.epoch = v; msg.$set(obj); } };
12818 $t18_19 = $t17_18.$get();
12819 $t19_20 = { $get() { return $t12_13.$get().contentType; }, $set(v) { const obj = $t12_13.$get(); obj.contentType = v; $t12_13.$set(obj); } };
12820 $t20_21 = { $get() { return msg.$get().contentType; }, $set(v) { const obj = msg.$get(); obj.contentType = v; msg.$set(obj); } };
12821 $t21_22 = $t20_21.$get();
12822 $t13_14.$set($t15_16);
12823 $t16_17.$set($t18_19);
12824 $t19_20.$set($t21_22);
12825 $t22_23 = $rt.types.makeInterface('*smesh.lol/web/common/mls.senderDataAAD', $t12_13);
12826 $t23_24 = marshalRaw($t22_23);
12827 $t24_25 = $t23_24[0];
12828 $t25_26 = $t23_24[1];
12829 $t26_27 = ($t25_26 !== null);
12830 if ($t26_27) {
12831 $block = 5; break;
12832 }
12833 else {
12834 $block = 6; break;
12835 }
12836 break;
12837 }
12838 case 5: {
12839 return [null, $t25_26];
12840 break;
12841 }
12842 case 6: {
12843 $t27_28 = { $get() { return msg.$get().encryptedSenderData; }, $set(v) { const obj = msg.$get(); obj.encryptedSenderData = v; msg.$set(obj); } };
12844 $t28_29 = $t27_28.$get();
12845 $t29_30 = CipherSuite$aeadOpen(cs, $t3_4, $t9_10, $t28_29, $t24_25);
12846 $t30_31 = $t29_30[0];
12847 $t31_32 = $t29_30[1];
12848 $t32_33 = ($t31_32 !== null);
12849 if ($t32_33) {
12850 $block = 7; break;
12851 }
12852 else {
12853 $block = 8; break;
12854 }
12855 break;
12856 }
12857 case 7: {
12858 return [null, $t31_32];
12859 break;
12860 }
12861 case 8: {
12862 $t33_34 = { $value: { leafIndex: 0, generation: 0, reuseGuard: $rt.builtin.makeSlice(4, 4, 0) }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
12863 $t34_35 = $rt.types.makeInterface('*smesh.lol/web/common/mls.senderData', $t33_34);
12864 $t35_36 = unmarshalRaw($t30_31, $t34_35);
12865 $t36_37 = ($t35_36 !== null);
12866 if ($t36_37) {
12867 $block = 9; break;
12868 }
12869 else {
12870 $block = 10; break;
12871 }
12872 break;
12873 }
12874 case 9: {
12875 return [null, $t35_36];
12876 break;
12877 }
12878 case 10: {
12879 return [$t33_34, null];
12880 break;
12881 }
12882 }
12883 }
12884 }
12885
12886 $rt.types.getType('smesh.lol/web/common/mls.privateMessage')?.methods?.set('decryptSenderData', privateMessage$decryptSenderData);
12887 export function privateMessage$marshal(msg, w) {
12888 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
12889 $t0_1 = { $get() { return msg.$get().groupID; }, $set(v) { const obj = msg.$get(); obj.groupID = v; msg.$set(obj); } };
12890 $t1_2 = $t0_1.$get();
12891 $t2_3 = $t1_2;
12892 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
12893 $t4_5 = { $get() { return msg.$get().epoch; }, $set(v) { const obj = msg.$get(); obj.epoch = v; msg.$set(obj); } };
12894 $t5_6 = $t4_5.$get();
12895 $t6_7 = Writer$addUint64(w, $t5_6);
12896 $t7_8 = { $get() { return msg.$get().contentType; }, $set(v) { const obj = msg.$get(); obj.contentType = v; msg.$set(obj); } };
12897 $t8_9 = $t7_8.$get();
12898 $t9_10 = contentType$marshal($t8_9, w);
12899 $t10_11 = { $get() { return msg.$get().authenticatedData; }, $set(v) { const obj = msg.$get(); obj.authenticatedData = v; msg.$set(obj); } };
12900 $t11_12 = $t10_11.$get();
12901 $t12_13 = Writer$writeOpaqueVec(w, $t11_12);
12902 $t13_14 = { $get() { return msg.$get().encryptedSenderData; }, $set(v) { const obj = msg.$get(); obj.encryptedSenderData = v; msg.$set(obj); } };
12903 $t14_15 = $t13_14.$get();
12904 $t15_16 = Writer$writeOpaqueVec(w, $t14_15);
12905 $t16_17 = { $get() { return msg.$get().ciphertext; }, $set(v) { const obj = msg.$get(); obj.ciphertext = v; msg.$set(obj); } };
12906 $t17_18 = $t16_17.$get();
12907 $t18_19 = Writer$writeOpaqueVec(w, $t17_18);
12908 return;
12909 }
12910
12911 $rt.types.getType('smesh.lol/web/common/mls.privateMessage')?.methods?.set('marshal', privateMessage$marshal);
12912 export function privateMessage$unmarshal(msg, r) {
12913 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29;
12914 let $block = 0;
12915 while (true) {
12916 switch ($block) {
12917 case 0: {
12918 msg.$set($rt.builtin.cloneValue({ groupID: null, epoch: 0n, contentType: 0, authenticatedData: null, encryptedSenderData: null, ciphertext: null }));
12919 $t0_1 = Reader$readOpaqueVec(r);
12920 $t1_2 = $t0_1[0];
12921 $t2_3 = { $get() { return msg.$get().groupID; }, $set(v) { const obj = msg.$get(); obj.groupID = v; msg.$set(obj); } };
12922 $t3_4 = $t1_2;
12923 $t2_3.$set($t3_4);
12924 $t4_5 = $t0_1[1];
12925 if ($t4_5) {
12926 $block = 2; break;
12927 }
12928 else {
12929 $block = 1; break;
12930 }
12931 break;
12932 }
12933 case 1: {
12934 $t5_6 = errUnexpectedEOF.$get();
12935 return $t5_6;
12936 break;
12937 }
12938 case 2: {
12939 $t6_7 = Reader$readUint64(r);
12940 $t7_8 = $t6_7[0];
12941 $t8_9 = { $get() { return msg.$get().epoch; }, $set(v) { const obj = msg.$get(); obj.epoch = v; msg.$set(obj); } };
12942 $t8_9.$set($t7_8);
12943 $t9_10 = $t6_7[1];
12944 if ($t9_10) {
12945 $block = 4; break;
12946 }
12947 else {
12948 $block = 3; break;
12949 }
12950 break;
12951 }
12952 case 3: {
12953 $t10_11 = errUnexpectedEOF.$get();
12954 return $t10_11;
12955 break;
12956 }
12957 case 4: {
12958 $t11_12 = { $get() { return msg.$get().contentType; }, $set(v) { const obj = msg.$get(); obj.contentType = v; msg.$set(obj); } };
12959 $t12_13 = contentType$unmarshal($t11_12, r);
12960 $t13_14 = ($t12_13 !== null);
12961 if ($t13_14) {
12962 $block = 5; break;
12963 }
12964 else {
12965 $block = 6; break;
12966 }
12967 break;
12968 }
12969 case 5: {
12970 return $t12_13;
12971 break;
12972 }
12973 case 6: {
12974 $t14_15 = Reader$readOpaqueVec(r);
12975 $t15_16 = $t14_15[0];
12976 $t16_17 = { $get() { return msg.$get().authenticatedData; }, $set(v) { const obj = msg.$get(); obj.authenticatedData = v; msg.$set(obj); } };
12977 $t16_17.$set($t15_16);
12978 $t17_18 = $t14_15[1];
12979 if ($t17_18) {
12980 $block = 8; break;
12981 }
12982 else {
12983 $block = 7; break;
12984 }
12985 break;
12986 }
12987 case 7: {
12988 $t18_19 = errUnexpectedEOF.$get();
12989 return $t18_19;
12990 break;
12991 }
12992 case 8: {
12993 $t19_20 = Reader$readOpaqueVec(r);
12994 $t20_21 = $t19_20[0];
12995 $t21_22 = { $get() { return msg.$get().encryptedSenderData; }, $set(v) { const obj = msg.$get(); obj.encryptedSenderData = v; msg.$set(obj); } };
12996 $t21_22.$set($t20_21);
12997 $t22_23 = $t19_20[1];
12998 if ($t22_23) {
12999 $block = 10; break;
13000 }
13001 else {
13002 $block = 9; break;
13003 }
13004 break;
13005 }
13006 case 9: {
13007 $t23_24 = errUnexpectedEOF.$get();
13008 return $t23_24;
13009 break;
13010 }
13011 case 10: {
13012 $t24_25 = Reader$readOpaqueVec(r);
13013 $t25_26 = $t24_25[0];
13014 $t26_27 = { $get() { return msg.$get().ciphertext; }, $set(v) { const obj = msg.$get(); obj.ciphertext = v; msg.$set(obj); } };
13015 $t26_27.$set($t25_26);
13016 $t27_28 = $t24_25[1];
13017 if ($t27_28) {
13018 $block = 12; break;
13019 }
13020 else {
13021 $block = 11; break;
13022 }
13023 break;
13024 }
13025 case 11: {
13026 $t28_29 = errUnexpectedEOF.$get();
13027 return $t28_29;
13028 break;
13029 }
13030 case 12: {
13031 return null;
13032 break;
13033 }
13034 }
13035 }
13036 }
13037
13038 $rt.types.getType('smesh.lol/web/common/mls.privateMessage')?.methods?.set('unmarshal', privateMessage$unmarshal);
13039 export function senderDataAAD$marshal(aad, w) {
13040 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
13041 $t0_1 = { $get() { return aad.$get().groupID; }, $set(v) { const obj = aad.$get(); obj.groupID = v; aad.$set(obj); } };
13042 $t1_2 = $t0_1.$get();
13043 $t2_3 = $t1_2;
13044 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
13045 $t4_5 = { $get() { return aad.$get().epoch; }, $set(v) { const obj = aad.$get(); obj.epoch = v; aad.$set(obj); } };
13046 $t5_6 = $t4_5.$get();
13047 $t6_7 = Writer$addUint64(w, $t5_6);
13048 $t7_8 = { $get() { return aad.$get().contentType; }, $set(v) { const obj = aad.$get(); obj.contentType = v; aad.$set(obj); } };
13049 $t8_9 = $t7_8.$get();
13050 $t9_10 = contentType$marshal($t8_9, w);
13051 return;
13052 }
13053
13054 $rt.types.getType('smesh.lol/web/common/mls.senderDataAAD')?.methods?.set('marshal', senderDataAAD$marshal);
13055 export function privateContentAAD$marshal(aad, w) {
13056 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
13057 $t0_1 = { $get() { return aad.$get().groupID; }, $set(v) { const obj = aad.$get(); obj.groupID = v; aad.$set(obj); } };
13058 $t1_2 = $t0_1.$get();
13059 $t2_3 = $t1_2;
13060 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
13061 $t4_5 = { $get() { return aad.$get().epoch; }, $set(v) { const obj = aad.$get(); obj.epoch = v; aad.$set(obj); } };
13062 $t5_6 = $t4_5.$get();
13063 $t6_7 = Writer$addUint64(w, $t5_6);
13064 $t7_8 = { $get() { return aad.$get().contentType; }, $set(v) { const obj = aad.$get(); obj.contentType = v; aad.$set(obj); } };
13065 $t8_9 = $t7_8.$get();
13066 $t9_10 = contentType$marshal($t8_9, w);
13067 $t10_11 = { $get() { return aad.$get().authenticatedData; }, $set(v) { const obj = aad.$get(); obj.authenticatedData = v; aad.$set(obj); } };
13068 $t11_12 = $t10_11.$get();
13069 $t12_13 = Writer$writeOpaqueVec(w, $t11_12);
13070 return;
13071 }
13072
13073 $rt.types.getType('smesh.lol/web/common/mls.privateContentAAD')?.methods?.set('marshal', privateContentAAD$marshal);
13074 export function privateMessageContent$authenticatedContent(content, fc) {
13075 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
13076 $t0_1 = { $value: { wireFormat: 0, content: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, auth: { signature: null, confirmationTag: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13077 $t1_2 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
13078 $t2_3 = { $get() { return $t0_1.$get().content; }, $set(v) { const obj = $t0_1.$get(); obj.content = v; $t0_1.$set(obj); } };
13079 $t3_4 = fc.$get();
13080 $t4_5 = { $get() { return $t0_1.$get().auth; }, $set(v) { const obj = $t0_1.$get(); obj.auth = v; $t0_1.$set(obj); } };
13081 $t5_6 = { $get() { return content.$get().auth; }, $set(v) { const obj = content.$get(); obj.auth = v; content.$set(obj); } };
13082 $t6_7 = $t5_6.$get();
13083 $t1_2.$set(2);
13084 $t2_3.$set($rt.builtin.cloneValue($t3_4));
13085 $t4_5.$set($rt.builtin.cloneValue($t6_7));
13086 return $t0_1;
13087 }
13088
13089 $rt.types.getType('smesh.lol/web/common/mls.privateMessageContent')?.methods?.set('authenticatedContent', privateMessageContent$authenticatedContent);
13090 export function privateMessageContent$marshal(content, w, ct) {
13091 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
13092 let $block = 0;
13093 while (true) {
13094 switch ($block) {
13095 case 0: {
13096 $t0_1 = (ct === 1);
13097 if ($t0_1) {
13098 $block = 2; break;
13099 }
13100 else {
13101 $block = 4; break;
13102 }
13103 break;
13104 }
13105 case 1: {
13106 $t1_2 = { $get() { return content.$get().auth; }, $set(v) { const obj = content.$get(); obj.auth = v; content.$set(obj); } };
13107 $t2_3 = framedContentAuthData$marshal($t1_2, w, ct);
13108 return;
13109 break;
13110 }
13111 case 2: {
13112 $t3_4 = { $get() { return content.$get().applicationData; }, $set(v) { const obj = content.$get(); obj.applicationData = v; content.$set(obj); } };
13113 $t4_5 = $t3_4.$get();
13114 $t5_6 = Writer$writeOpaqueVec(w, $t4_5);
13115 $block = 1; break;
13116 break;
13117 }
13118 case 3: {
13119 $t6_7 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
13120 $t7_8 = $t6_7.$get();
13121 $t8_9 = proposal$marshal($t7_8, w);
13122 $block = 1; break;
13123 break;
13124 }
13125 case 4: {
13126 $t9_10 = (ct === 2);
13127 if ($t9_10) {
13128 $block = 3; break;
13129 }
13130 else {
13131 $block = 6; break;
13132 }
13133 break;
13134 }
13135 case 5: {
13136 $t10_11 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
13137 $t11_12 = $t10_11.$get();
13138 $t12_13 = commit$marshal($t11_12, w);
13139 $block = 1; break;
13140 break;
13141 }
13142 case 6: {
13143 $t13_14 = (ct === 3);
13144 if ($t13_14) {
13145 $block = 5; break;
13146 }
13147 else {
13148 $block = 7; break;
13149 }
13150 break;
13151 }
13152 case 7: {
13153 $t14_15 = $rt.types.makeInterface('string', 'unreachable');
13154 $rt.runtime.panic($t14_15);
13155 break;
13156 }
13157 }
13158 }
13159 }
13160
13161 $rt.types.getType('smesh.lol/web/common/mls.privateMessageContent')?.methods?.set('marshal', privateMessageContent$marshal);
13162 export function privateMessageContent$unmarshal(content, r, ct) {
13163 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
13164 let $block = 0;
13165 while (true) {
13166 switch ($block) {
13167 case 0: {
13168 content.$set($rt.builtin.cloneValue({ applicationData: null, proposal: null, commit: null, auth: { signature: null, confirmationTag: null } }));
13169 $t0_1 = (ct === 1);
13170 if ($t0_1) {
13171 $block = 2; break;
13172 }
13173 else {
13174 $block = 4; break;
13175 }
13176 break;
13177 }
13178 case 1: {
13179 $t2_3 = ($t1_2 !== null);
13180 if ($t2_3) {
13181 $block = 9; break;
13182 }
13183 else {
13184 $block = 10; break;
13185 }
13186 break;
13187 }
13188 case 2: {
13189 $t3_4 = Reader$readOpaqueVec(r);
13190 $t4_5 = $t3_4[0];
13191 $t5_6 = { $get() { return content.$get().applicationData; }, $set(v) { const obj = content.$get(); obj.applicationData = v; content.$set(obj); } };
13192 $t5_6.$set($t4_5);
13193 $t6_7 = $t3_4[1];
13194 if ($t6_7) {
13195 $t1_2 = null;
13196 $block = 1; break;
13197 }
13198 else {
13199 $block = 5; break;
13200 }
13201 break;
13202 }
13203 case 3: {
13204 $t7_8 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13205 $t8_9 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
13206 $t8_9.$set($t7_8);
13207 $t9_10 = { $get() { return content.$get().proposal; }, $set(v) { const obj = content.$get(); obj.proposal = v; content.$set(obj); } };
13208 $t10_11 = $t9_10.$get();
13209 $t11_12 = proposal$unmarshal($t10_11, r);
13210 $t1_2 = $t11_12;
13211 $block = 1; break;
13212 break;
13213 }
13214 case 4: {
13215 $t12_13 = (ct === 2);
13216 if ($t12_13) {
13217 $block = 3; break;
13218 }
13219 else {
13220 $block = 7; break;
13221 }
13222 break;
13223 }
13224 case 5: {
13225 $t13_14 = errUnexpectedEOF.$get();
13226 $t1_2 = $t13_14;
13227 $block = 1; break;
13228 break;
13229 }
13230 case 6: {
13231 $t14_15 = { $value: { proposals: null, path: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13232 $t15_16 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
13233 $t15_16.$set($t14_15);
13234 $t16_17 = { $get() { return content.$get().commit; }, $set(v) { const obj = content.$get(); obj.commit = v; content.$set(obj); } };
13235 $t17_18 = $t16_17.$get();
13236 $t18_19 = commit$unmarshal($t17_18, r);
13237 $t1_2 = $t18_19;
13238 $block = 1; break;
13239 break;
13240 }
13241 case 7: {
13242 $t19_20 = (ct === 3);
13243 if ($t19_20) {
13244 $block = 6; break;
13245 }
13246 else {
13247 $block = 8; break;
13248 }
13249 break;
13250 }
13251 case 8: {
13252 $t20_21 = $rt.types.makeInterface('string', 'unreachable');
13253 $rt.runtime.panic($t20_21);
13254 break;
13255 }
13256 case 9: {
13257 return $t1_2;
13258 break;
13259 }
13260 case 10: {
13261 $t21_22 = { $get() { return content.$get().auth; }, $set(v) { const obj = content.$get(); obj.auth = v; content.$set(obj); } };
13262 $t22_23 = framedContentAuthData$unmarshal($t21_22, r, ct);
13263 return $t22_23;
13264 break;
13265 }
13266 }
13267 }
13268 }
13269
13270 $rt.types.getType('smesh.lol/web/common/mls.privateMessageContent')?.methods?.set('unmarshal', privateMessageContent$unmarshal);
13271 export function senderData$marshal(data, w) {
13272 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
13273 $t0_1 = { $get() { return data.$get().leafIndex; }, $set(v) { const obj = data.$get(); obj.leafIndex = v; data.$set(obj); } };
13274 $t1_2 = $t0_1.$get();
13275 $t2_3 = $t1_2;
13276 $t3_4 = Writer$addUint32(w, $t2_3);
13277 $t4_5 = { $get() { return data.$get().generation; }, $set(v) { const obj = data.$get(); obj.generation = v; data.$set(obj); } };
13278 $t5_6 = $t4_5.$get();
13279 $t6_7 = Writer$addUint32(w, $t5_6);
13280 $t7_8 = { $get() { return data.$get().reuseGuard; }, $set(v) { const obj = data.$get(); obj.reuseGuard = v; data.$set(obj); } };
13281 $t8_9 = $rt.builtin.sliceSlice($t7_8.$get(), undefined, undefined, undefined);
13282 $t9_10 = Writer$addBytes(w, $t8_9);
13283 return;
13284 }
13285
13286 $rt.types.getType('smesh.lol/web/common/mls.senderData')?.methods?.set('marshal', senderData$marshal);
13287 export function senderData$unmarshal(data, r) {
13288 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31;
13289 let $block = 0;
13290 while (true) {
13291 switch ($block) {
13292 case 0: {
13293 $t0_1 = Reader$readUint32(r);
13294 $t1_2 = $t0_1[0];
13295 $t2_3 = $t0_1[1];
13296 if ($t2_3) {
13297 $block = 2; break;
13298 }
13299 else {
13300 $block = 1; break;
13301 }
13302 break;
13303 }
13304 case 1: {
13305 $t3_4 = errUnexpectedEOF.$get();
13306 return $t3_4;
13307 break;
13308 }
13309 case 2: {
13310 $t4_5 = $t1_2;
13311 $t5_6 = { $get() { return data.$get().leafIndex; }, $set(v) { const obj = data.$get(); obj.leafIndex = v; data.$set(obj); } };
13312 $t5_6.$set($t4_5);
13313 $t6_7 = Reader$readUint32(r);
13314 $t7_8 = $t6_7[0];
13315 $t8_9 = { $get() { return data.$get().generation; }, $set(v) { const obj = data.$get(); obj.generation = v; data.$set(obj); } };
13316 $t8_9.$set($t7_8);
13317 $t9_10 = $t6_7[1];
13318 if ($t9_10) {
13319 $block = 4; break;
13320 }
13321 else {
13322 $block = 3; break;
13323 }
13324 break;
13325 }
13326 case 3: {
13327 $t10_11 = errUnexpectedEOF.$get();
13328 return $t10_11;
13329 break;
13330 }
13331 case 4: {
13332 $t11_12 = Reader$readN(r, 4);
13333 $t12_13 = $t11_12[0];
13334 $t13_14 = $t11_12[1];
13335 if ($t13_14) {
13336 $block = 6; break;
13337 }
13338 else {
13339 $block = 5; break;
13340 }
13341 break;
13342 }
13343 case 5: {
13344 $t14_15 = errUnexpectedEOF.$get();
13345 return $t14_15;
13346 break;
13347 }
13348 case 6: {
13349 $t15_16 = { $get() { return data.$get().reuseGuard; }, $set(v) { const obj = data.$get(); obj.reuseGuard = v; data.$set(obj); } };
13350 $t16_17 = $t12_13.addr(0);
13351 $t17_18 = $t16_17.$get();
13352 $t18_19 = $t15_16.$get().addr(0);
13353 $t18_19.$set($t17_18);
13354 $t19_20 = { $get() { return data.$get().reuseGuard; }, $set(v) { const obj = data.$get(); obj.reuseGuard = v; data.$set(obj); } };
13355 $t20_21 = $t12_13.addr(1);
13356 $t21_22 = $t20_21.$get();
13357 $t22_23 = $t19_20.$get().addr(1);
13358 $t22_23.$set($t21_22);
13359 $t23_24 = { $get() { return data.$get().reuseGuard; }, $set(v) { const obj = data.$get(); obj.reuseGuard = v; data.$set(obj); } };
13360 $t24_25 = $t12_13.addr(2);
13361 $t25_26 = $t24_25.$get();
13362 $t26_27 = $t23_24.$get().addr(2);
13363 $t26_27.$set($t25_26);
13364 $t27_28 = { $get() { return data.$get().reuseGuard; }, $set(v) { const obj = data.$get(); obj.reuseGuard = v; data.$set(obj); } };
13365 $t28_29 = $t12_13.addr(3);
13366 $t29_30 = $t28_29.$get();
13367 $t30_31 = $t27_28.$get().addr(3);
13368 $t30_31.$set($t29_30);
13369 return null;
13370 break;
13371 }
13372 }
13373 }
13374 }
13375
13376 $rt.types.getType('smesh.lol/web/common/mls.senderData')?.methods?.set('unmarshal', senderData$unmarshal);
13377 export function Group$CreateApplicationMessage(g, data) {
13378 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29;
13379 let $block = 0;
13380 while (true) {
13381 switch ($block) {
13382 case 0: {
13383 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13384 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
13385 $t2_3 = $t1_2.$get();
13386 $t3_4 = { $value: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13387 $t4_5 = { $get() { return $t3_4.$get().groupID; }, $set(v) { const obj = $t3_4.$get(); obj.groupID = v; $t3_4.$set(obj); } };
13388 $t5_6 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13389 $t6_7 = { $get() { return $t5_6.$get().groupID; }, $set(v) { const obj = $t5_6.$get(); obj.groupID = v; $t5_6.$set(obj); } };
13390 $t7_8 = $t6_7.$get();
13391 $t8_9 = { $get() { return $t3_4.$get().epoch; }, $set(v) { const obj = $t3_4.$get(); obj.epoch = v; $t3_4.$set(obj); } };
13392 $t9_10 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13393 $t10_11 = { $get() { return $t9_10.$get().epoch; }, $set(v) { const obj = $t9_10.$get(); obj.epoch = v; $t9_10.$set(obj); } };
13394 $t11_12 = $t10_11.$get();
13395 $t12_13 = { $get() { return $t3_4.$get().sender; }, $set(v) { const obj = $t3_4.$get(); obj.sender = v; $t3_4.$set(obj); } };
13396 $t13_14 = { $get() { return $t12_13.$get().senderType; }, $set(v) { const obj = $t12_13.$get(); obj.senderType = v; $t12_13.$set(obj); } };
13397 $t14_15 = { $get() { return $t12_13.$get().leafIndex; }, $set(v) { const obj = $t12_13.$get(); obj.leafIndex = v; $t12_13.$set(obj); } };
13398 $t15_16 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
13399 $t16_17 = $t15_16.$get();
13400 $t17_18 = { $get() { return $t3_4.$get().contentType; }, $set(v) { const obj = $t3_4.$get(); obj.contentType = v; $t3_4.$set(obj); } };
13401 $t18_19 = { $get() { return $t3_4.$get().applicationData; }, $set(v) { const obj = $t3_4.$get(); obj.applicationData = v; $t3_4.$set(obj); } };
13402 $t4_5.$set($t7_8);
13403 $t8_9.$set($t11_12);
13404 $t13_14.$set(1);
13405 $t14_15.$set($t16_17);
13406 $t17_18.$set(1);
13407 $t18_19.$set(data);
13408 $t19_20 = { $get() { return g.$get().signaturePriv; }, $set(v) { const obj = g.$get(); obj.signaturePriv = v; g.$set(obj); } };
13409 $t20_21 = $t19_20.$get();
13410 $t21_22 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13411 $t22_23 = signPrivateMessageContent($t2_3, $t20_21, $t3_4, $t21_22);
13412 $t23_24 = $t22_23[0];
13413 $t24_25 = $t22_23[1];
13414 $t25_26 = ($t24_25 !== null);
13415 if ($t25_26) {
13416 $block = 1; break;
13417 }
13418 else {
13419 $block = 2; break;
13420 }
13421 break;
13422 }
13423 case 1: {
13424 return [null, $t24_25];
13425 break;
13426 }
13427 case 2: {
13428 $t26_27 = Group$encryptPrivateMessage(g, $t3_4, $t23_24);
13429 $t27_28 = $t26_27[0];
13430 $t28_29 = $t26_27[1];
13431 return [$t27_28, $t28_29];
13432 break;
13433 }
13434 }
13435 }
13436 }
13437
13438 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('CreateApplicationMessage', Group$CreateApplicationMessage);
13439 export function Group$CreateWelcome(g, keyPkgs) {
13440 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171;
13441 let $block = 0;
13442 while (true) {
13443 switch ($block) {
13444 case 0: {
13445 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13446 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
13447 $t2_3 = $t1_2.$get();
13448 $t3_4 = $rt.builtin.len(keyPkgs);
13449 $t4_5 = $rt.builtin.makeSlice($t3_4, $t3_4, { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null });
13450 $t5_6 = $rt.builtin.len(keyPkgs);
13451 $t6_7 = $rt.builtin.makeSlice($t5_6, $t5_6, { typ: 0, proposal: null, reference: null });
13452 $t7_8 = $rt.builtin.len(keyPkgs);
13453 $t8_9 = -1;
13454 $block = 1; break;
13455 break;
13456 }
13457 case 1: {
13458 $t9_10 = ($t8_9 + 1);
13459 $t10_11 = ($t9_10 < $t7_8);
13460 if ($t10_11) {
13461 $block = 2; break;
13462 }
13463 else {
13464 $block = 3; break;
13465 }
13466 break;
13467 }
13468 case 2: {
13469 $t11_12 = keyPkgs.addr($t9_10);
13470 $t12_13 = $t11_12.$get();
13471 $t13_14 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13472 $t14_15 = { $get() { return $t13_14.$get().proposalType; }, $set(v) { const obj = $t13_14.$get(); obj.proposalType = v; $t13_14.$set(obj); } };
13473 $t15_16 = { $get() { return $t13_14.$get().add; }, $set(v) { const obj = $t13_14.$get(); obj.add = v; $t13_14.$set(obj); } };
13474 $t16_17 = { $value: { keyPackage: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13475 $t17_18 = { $get() { return $t16_17.$get().keyPackage; }, $set(v) { const obj = $t16_17.$get(); obj.keyPackage = v; $t16_17.$set(obj); } };
13476 $t17_18.$set($rt.builtin.cloneValue($t12_13));
13477 $t14_15.$set(1);
13478 $t15_16.$set($t16_17);
13479 $t18_19 = $t13_14.$get();
13480 $t19_20 = $t4_5.addr($t9_10);
13481 $t19_20.$set($rt.builtin.cloneValue($t18_19));
13482 $t20_21 = { $value: { typ: 0, proposal: null, reference: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13483 $t21_22 = { $get() { return $t20_21.$get().typ; }, $set(v) { const obj = $t20_21.$get(); obj.typ = v; $t20_21.$set(obj); } };
13484 $t22_23 = { $get() { return $t20_21.$get().proposal; }, $set(v) { const obj = $t20_21.$get(); obj.proposal = v; $t20_21.$set(obj); } };
13485 $t23_24 = $t4_5.addr($t9_10);
13486 $t21_22.$set(1);
13487 $t22_23.$set($t23_24);
13488 $t24_25 = $t20_21.$get();
13489 $t25_26 = $t6_7.addr($t9_10);
13490 $t25_26.$set($rt.builtin.cloneValue($t24_25));
13491 $t8_9 = $t9_10;
13492 $block = 1; break;
13493 break;
13494 }
13495 case 3: {
13496 $t26_27 = { $value: { proposals: null, path: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13497 $t27_28 = { $get() { return $t26_27.$get().proposals; }, $set(v) { const obj = $t26_27.$get(); obj.proposals = v; $t26_27.$set(obj); } };
13498 $t27_28.$set($t6_7);
13499 $t28_29 = { $value: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13500 $t29_30 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13501 $t30_31 = $t29_30.$get();
13502 $t28_29.$set($rt.builtin.cloneValue($t30_31));
13503 $t31_32 = { $get() { return $t28_29.$get().epoch; }, $set(v) { const obj = $t28_29.$get(); obj.epoch = v; $t28_29.$set(obj); } };
13504 $t32_33 = $t31_32.$get();
13505 $t33_34 = BigInt.asUintN(64, $t32_33 + 1n);
13506 $t34_35 = { $get() { return $t28_29.$get().epoch; }, $set(v) { const obj = $t28_29.$get(); obj.epoch = v; $t28_29.$set(obj); } };
13507 $t34_35.$set($t33_34);
13508 $t35_36 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13509 $t36_37 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
13510 $t37_38 = $t36_37.$get();
13511 $t38_39 = ratchetTree$copy($t37_38);
13512 $t35_36.$set($t38_39);
13513 $t39_40 = $rt.builtin.len($t4_5);
13514 $t40_41 = $rt.builtin.makeSlice($t39_40, $t39_40, 0);
13515 $t41_42 = $rt.builtin.len($t40_41);
13516 $t42_43 = -1;
13517 $block = 4; break;
13518 break;
13519 }
13520 case 4: {
13521 $t43_44 = ($t42_43 + 1);
13522 $t44_45 = ($t43_44 < $t41_42);
13523 if ($t44_45) {
13524 $block = 5; break;
13525 }
13526 else {
13527 $block = 6; break;
13528 }
13529 break;
13530 }
13531 case 5: {
13532 $t45_46 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
13533 $t46_47 = $t45_46.$get();
13534 $t47_48 = $t40_41.addr($t43_44);
13535 $t47_48.$set($t46_47);
13536 $t42_43 = $t43_44;
13537 $block = 4; break;
13538 break;
13539 }
13540 case 6: {
13541 $t48_49 = ratchetTree$apply($t35_36, $t4_5, $t40_41);
13542 $t49_50 = $t35_36.$get();
13543 $t50_51 = ratchetTree$computeRootTreeHash($t49_50, $t2_3);
13544 $t51_52 = $t50_51[0];
13545 $t52_53 = { $get() { return $t28_29.$get().treeHash; }, $set(v) { const obj = $t28_29.$get(); obj.treeHash = v; $t28_29.$set(obj); } };
13546 $t52_53.$set($t51_52);
13547 $t53_54 = $t50_51[1];
13548 $t54_55 = ($t53_54 !== null);
13549 if ($t54_55) {
13550 $block = 7; break;
13551 }
13552 else {
13553 $block = 8; break;
13554 }
13555 break;
13556 }
13557 case 7: {
13558 return [null, null, $t53_54];
13559 break;
13560 }
13561 case 8: {
13562 $t55_56 = CipherSuite$ExtractSize($t2_3);
13563 $t56_57 = $rt.builtin.makeSlice($t55_56, $t55_56, 0);
13564 $t57_58 = extractPSKSecret($t2_3, null, null);
13565 $t58_59 = $t57_58[0];
13566 $t59_60 = $t57_58[1];
13567 $t60_61 = ($t59_60 !== null);
13568 if ($t60_61) {
13569 $block = 9; break;
13570 }
13571 else {
13572 $block = 10; break;
13573 }
13574 break;
13575 }
13576 case 9: {
13577 return [null, null, $t59_60];
13578 break;
13579 }
13580 case 10: {
13581 $t61_62 = { $value: { groupID: null, epoch: 0n, sender: { senderType: 0, leafIndex: 0, senderIndex: 0 }, authenticatedData: null, contentType: 0, applicationData: null, proposal: null, commit: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13582 $t62_63 = { $get() { return $t61_62.$get().groupID; }, $set(v) { const obj = $t61_62.$get(); obj.groupID = v; $t61_62.$set(obj); } };
13583 $t63_64 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13584 $t64_65 = { $get() { return $t63_64.$get().groupID; }, $set(v) { const obj = $t63_64.$get(); obj.groupID = v; $t63_64.$set(obj); } };
13585 $t65_66 = $t64_65.$get();
13586 $t66_67 = { $get() { return $t61_62.$get().epoch; }, $set(v) { const obj = $t61_62.$get(); obj.epoch = v; $t61_62.$set(obj); } };
13587 $t67_68 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13588 $t68_69 = { $get() { return $t67_68.$get().epoch; }, $set(v) { const obj = $t67_68.$get(); obj.epoch = v; $t67_68.$set(obj); } };
13589 $t69_70 = $t68_69.$get();
13590 $t70_71 = { $get() { return $t61_62.$get().sender; }, $set(v) { const obj = $t61_62.$get(); obj.sender = v; $t61_62.$set(obj); } };
13591 $t71_72 = { $get() { return $t70_71.$get().senderType; }, $set(v) { const obj = $t70_71.$get(); obj.senderType = v; $t70_71.$set(obj); } };
13592 $t72_73 = { $get() { return $t70_71.$get().leafIndex; }, $set(v) { const obj = $t70_71.$get(); obj.leafIndex = v; $t70_71.$set(obj); } };
13593 $t73_74 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
13594 $t74_75 = $t73_74.$get();
13595 $t75_76 = { $get() { return $t61_62.$get().contentType; }, $set(v) { const obj = $t61_62.$get(); obj.contentType = v; $t61_62.$set(obj); } };
13596 $t76_77 = { $get() { return $t61_62.$get().commit; }, $set(v) { const obj = $t61_62.$get(); obj.commit = v; $t61_62.$set(obj); } };
13597 $t62_63.$set($t65_66);
13598 $t66_67.$set($t69_70);
13599 $t71_72.$set(1);
13600 $t72_73.$set($t74_75);
13601 $t75_76.$set(3);
13602 $t76_77.$set($t26_27);
13603 $t77_78 = { $get() { return g.$get().signaturePriv; }, $set(v) { const obj = g.$get(); obj.signaturePriv = v; g.$set(obj); } };
13604 $t78_79 = $t77_78.$get();
13605 $t79_80 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13606 $t80_81 = signPrivateMessageContent($t2_3, $t78_79, $t61_62, $t79_80);
13607 $t81_82 = $t80_81[0];
13608 $t82_83 = $t80_81[1];
13609 $t83_84 = ($t82_83 !== null);
13610 if ($t83_84) {
13611 $block = 11; break;
13612 }
13613 else {
13614 $block = 12; break;
13615 }
13616 break;
13617 }
13618 case 11: {
13619 return [null, null, $t82_83];
13620 break;
13621 }
13622 case 12: {
13623 $t84_85 = privateMessageContent$authenticatedContent($t81_82, $t61_62);
13624 $t85_86 = { $get() { return $t81_82.$get().auth; }, $set(v) { const obj = $t81_82.$get(); obj.auth = v; $t81_82.$set(obj); } };
13625 $t86_87 = authenticatedContent$confirmedTranscriptHashInput($t84_85);
13626 $t87_88 = { $get() { return g.$get().interimTranscriptHash; }, $set(v) { const obj = g.$get(); obj.interimTranscriptHash = v; g.$set(obj); } };
13627 $t88_89 = $t87_88.$get();
13628 $t89_90 = confirmedTranscriptHashInput$hashValue($t86_87, $t2_3, $t88_89);
13629 $t90_91 = $t89_90[0];
13630 $t91_92 = { $get() { return $t28_29.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t28_29.$get(); obj.confirmedTranscriptHash = v; $t28_29.$set(obj); } };
13631 $t91_92.$set($t90_91);
13632 $t92_93 = $t89_90[1];
13633 $t93_94 = ($t92_93 !== null);
13634 if ($t93_94) {
13635 $block = 13; break;
13636 }
13637 else {
13638 $block = 14; break;
13639 }
13640 break;
13641 }
13642 case 13: {
13643 return [null, null, $t92_93];
13644 break;
13645 }
13646 case 14: {
13647 $t94_95 = { $get() { return g.$get().initSecret; }, $set(v) { const obj = g.$get(); obj.initSecret = v; g.$set(obj); } };
13648 $t95_96 = $t94_95.$get();
13649 $t96_97 = groupContext$extractJoinerSecret($t28_29, $t95_96, $t56_57);
13650 $t97_98 = $t96_97[0];
13651 $t98_99 = $t96_97[1];
13652 $t99_100 = ($t98_99 !== null);
13653 if ($t99_100) {
13654 $block = 15; break;
13655 }
13656 else {
13657 $block = 16; break;
13658 }
13659 break;
13660 }
13661 case 15: {
13662 return [null, null, $t98_99];
13663 break;
13664 }
13665 case 16: {
13666 $t100_101 = groupContext$extractEpochSecret($t28_29, $t97_98, $t58_59);
13667 $t101_102 = $t100_101[0];
13668 $t102_103 = $t100_101[1];
13669 $t103_104 = ($t102_103 !== null);
13670 if ($t103_104) {
13671 $block = 17; break;
13672 }
13673 else {
13674 $block = 18; break;
13675 }
13676 break;
13677 }
13678 case 17: {
13679 return [null, null, $t102_103];
13680 break;
13681 }
13682 case 18: {
13683 $t104_105 = groupContext$signConfirmationTag($t28_29, $t101_102);
13684 $t105_106 = $t104_105[0];
13685 $t106_107 = $t104_105[1];
13686 $t107_108 = ($t106_107 !== null);
13687 if ($t107_108) {
13688 $block = 19; break;
13689 }
13690 else {
13691 $block = 20; break;
13692 }
13693 break;
13694 }
13695 case 19: {
13696 return [null, null, $t106_107];
13697 break;
13698 }
13699 case 20: {
13700 $t108_109 = { $get() { return $t85_86.$get().confirmationTag; }, $set(v) { const obj = $t85_86.$get(); obj.confirmationTag = v; $t85_86.$set(obj); } };
13701 $t108_109.$set($t105_106);
13702 $t109_110 = $t35_36.$get();
13703 $t110_111 = $rt.types.makeInterface('smesh.lol/web/common/mls.ratchetTree', $t109_110);
13704 $t111_112 = marshalRaw($t110_111);
13705 $t112_113 = $t111_112[0];
13706 $t113_114 = $t111_112[1];
13707 $t114_115 = ($t113_114 !== null);
13708 if ($t114_115) {
13709 $block = 21; break;
13710 }
13711 else {
13712 $block = 22; break;
13713 }
13714 break;
13715 }
13716 case 21: {
13717 return [null, null, $t113_114];
13718 break;
13719 }
13720 case 22: {
13721 $t115_116 = { $value: { groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, extensions: null, confirmationTag: null, signer: 0, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13722 $t116_117 = { $get() { return $t115_116.$get().groupContext; }, $set(v) { const obj = $t115_116.$get(); obj.groupContext = v; $t115_116.$set(obj); } };
13723 $t117_118 = $t28_29.$get();
13724 $t118_119 = { $get() { return $t115_116.$get().confirmationTag; }, $set(v) { const obj = $t115_116.$get(); obj.confirmationTag = v; $t115_116.$set(obj); } };
13725 $t119_120 = { $get() { return $t115_116.$get().signer; }, $set(v) { const obj = $t115_116.$get(); obj.signer = v; $t115_116.$set(obj); } };
13726 $t120_121 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
13727 $t121_122 = $t120_121.$get();
13728 $t122_123 = { $get() { return $t115_116.$get().extensions; }, $set(v) { const obj = $t115_116.$get(); obj.extensions = v; $t115_116.$set(obj); } };
13729 $t123_124 = { $value: $rt.builtin.makeSlice(1, 1, { extensionType: 0, extensionData: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
13730 $t124_125 = $t123_124.$get().addr(0);
13731 $t125_126 = { $get() { return $t124_125.$get().extensionType; }, $set(v) { const obj = $t124_125.$get(); obj.extensionType = v; $t124_125.$set(obj); } };
13732 $t126_127 = { $get() { return $t124_125.$get().extensionData; }, $set(v) { const obj = $t124_125.$get(); obj.extensionData = v; $t124_125.$set(obj); } };
13733 $t125_126.$set(2);
13734 $t126_127.$set($t112_113);
13735 $t127_128 = $rt.builtin.sliceSlice($t123_124.$get(), undefined, undefined, undefined);
13736 $t116_117.$set($rt.builtin.cloneValue($t117_118));
13737 $t118_119.$set($t105_106);
13738 $t119_120.$set($t121_122);
13739 $t122_123.$set($t127_128);
13740 $t128_129 = { $get() { return g.$get().signaturePriv; }, $set(v) { const obj = g.$get(); obj.signaturePriv = v; g.$set(obj); } };
13741 $t129_130 = $t128_129.$get();
13742 $t130_131 = groupInfo$sign($t115_116, $t129_130);
13743 $t131_132 = ($t130_131 !== null);
13744 if ($t131_132) {
13745 $block = 23; break;
13746 }
13747 else {
13748 $block = 24; break;
13749 }
13750 break;
13751 }
13752 case 23: {
13753 return [null, null, $t130_131];
13754 break;
13755 }
13756 case 24: {
13757 $t132_133 = groupInfo$encrypt($t115_116, $t97_98, $t58_59);
13758 $t133_134 = $t132_133[0];
13759 $t134_135 = $t132_133[1];
13760 $t135_136 = ($t134_135 !== null);
13761 if ($t135_136) {
13762 $block = 25; break;
13763 }
13764 else {
13765 $block = 26; break;
13766 }
13767 break;
13768 }
13769 case 25: {
13770 return [null, null, $t134_135];
13771 break;
13772 }
13773 case 26: {
13774 $t136_137 = { $value: { joinerSecret: null, pathSecret: null, psks: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13775 $t137_138 = { $get() { return $t136_137.$get().joinerSecret; }, $set(v) { const obj = $t136_137.$get(); obj.joinerSecret = v; $t136_137.$set(obj); } };
13776 $t137_138.$set($t97_98);
13777 $t138_139 = $rt.builtin.len(keyPkgs);
13778 $t139_140 = $rt.builtin.makeSlice($t138_139, $t138_139, { newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } });
13779 $t140_141 = $rt.builtin.len(keyPkgs);
13780 $t141_142 = -1;
13781 $block = 27; break;
13782 break;
13783 }
13784 case 27: {
13785 $t142_143 = ($t141_142 + 1);
13786 $t143_144 = ($t142_143 < $t140_141);
13787 if ($t143_144) {
13788 $block = 28; break;
13789 }
13790 else {
13791 $block = 29; break;
13792 }
13793 break;
13794 }
13795 case 28: {
13796 $t144_145 = keyPkgs.addr($t142_143);
13797 $t145_146 = $t144_145.$get();
13798 $t146_147 = { $value: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13799 $t146_147.$set($rt.builtin.cloneValue($t145_146));
13800 $t147_148 = KeyPackage$GenerateRef($t146_147);
13801 $t148_149 = $t147_148[0];
13802 $t149_150 = $t147_148[1];
13803 $t150_151 = ($t149_150 !== null);
13804 if ($t150_151) {
13805 $block = 30; break;
13806 }
13807 else {
13808 $block = 31; break;
13809 }
13810 break;
13811 }
13812 case 29: {
13813 $t151_152 = Group$encryptPrivateMessage(g, $t61_62, $t81_82);
13814 $t152_153 = $t151_152[0];
13815 $t153_154 = $t151_152[1];
13816 $t154_155 = ($t153_154 !== null);
13817 if ($t154_155) {
13818 $block = 34; break;
13819 }
13820 else {
13821 $block = 35; break;
13822 }
13823 break;
13824 }
13825 case 30: {
13826 return [null, null, $t149_150];
13827 break;
13828 }
13829 case 31: {
13830 $t155_156 = { $get() { return $t146_147.$get().initKey; }, $set(v) { const obj = $t146_147.$get(); obj.initKey = v; $t146_147.$set(obj); } };
13831 $t156_157 = $t155_156.$get();
13832 $t157_158 = groupSecrets$encrypt($t136_137, $t2_3, $t156_157, $t133_134);
13833 $t158_159 = $t157_158[0];
13834 $t159_160 = $t157_158[1];
13835 $t160_161 = ($t159_160 !== null);
13836 if ($t160_161) {
13837 $block = 32; break;
13838 }
13839 else {
13840 $block = 33; break;
13841 }
13842 break;
13843 }
13844 case 32: {
13845 return [null, null, $t159_160];
13846 break;
13847 }
13848 case 33: {
13849 $t161_162 = { $value: { newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13850 $t162_163 = { $get() { return $t161_162.$get().newMember; }, $set(v) { const obj = $t161_162.$get(); obj.newMember = v; $t161_162.$set(obj); } };
13851 $t163_164 = { $get() { return $t161_162.$get().encryptedGroupSecrets; }, $set(v) { const obj = $t161_162.$get(); obj.encryptedGroupSecrets = v; $t161_162.$set(obj); } };
13852 $t164_165 = $t158_159.$get();
13853 $t162_163.$set($t148_149);
13854 $t163_164.$set($rt.builtin.cloneValue($t164_165));
13855 $t165_166 = $t161_162.$get();
13856 $t166_167 = $t139_140.addr($t142_143);
13857 $t166_167.$set($rt.builtin.cloneValue($t165_166));
13858 $t141_142 = $t142_143;
13859 $block = 27; break;
13860 break;
13861 }
13862 case 34: {
13863 return [null, null, $t153_154];
13864 break;
13865 }
13866 case 35: {
13867 $t167_168 = { $value: { cipherSuite: 0, secrets: null, encryptedGroupInfo: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13868 $t168_169 = { $get() { return $t167_168.$get().cipherSuite; }, $set(v) { const obj = $t167_168.$get(); obj.cipherSuite = v; $t167_168.$set(obj); } };
13869 $t169_170 = { $get() { return $t167_168.$get().secrets; }, $set(v) { const obj = $t167_168.$get(); obj.secrets = v; $t167_168.$set(obj); } };
13870 $t170_171 = { $get() { return $t167_168.$get().encryptedGroupInfo; }, $set(v) { const obj = $t167_168.$get(); obj.encryptedGroupInfo = v; $t167_168.$set(obj); } };
13871 $t168_169.$set($t2_3);
13872 $t169_170.$set($t139_140);
13873 $t170_171.$set($t133_134);
13874 return [$t167_168, $t152_153, null];
13875 break;
13876 }
13877 }
13878 }
13879 }
13880
13881 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('CreateWelcome', Group$CreateWelcome);
13882 export function Group$DeriveExporter(g, label, context, length) {
13883 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
13884 let $block = 0;
13885 while (true) {
13886 switch ($block) {
13887 case 0: {
13888 $t0_1 = Group$ExporterSecret(g);
13889 $t1_2 = $t0_1[0];
13890 $t2_3 = $t0_1[1];
13891 $t3_4 = ($t2_3 !== null);
13892 if ($t3_4) {
13893 $block = 1; break;
13894 }
13895 else {
13896 $block = 2; break;
13897 }
13898 break;
13899 }
13900 case 1: {
13901 return [null, $t2_3];
13902 break;
13903 }
13904 case 2: {
13905 $t4_5 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13906 $t5_6 = { $get() { return $t4_5.$get().cipherSuite; }, $set(v) { const obj = $t4_5.$get(); obj.cipherSuite = v; $t4_5.$set(obj); } };
13907 $t6_7 = $t5_6.$get();
13908 $t7_8 = deriveExporter($t6_7, $t1_2, label, context, length);
13909 $t8_9 = $t7_8[0];
13910 $t9_10 = $t7_8[1];
13911 return [$t8_9, $t9_10];
13912 break;
13913 }
13914 }
13915 }
13916 }
13917
13918 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('DeriveExporter', Group$DeriveExporter);
13919 export function Group$Epoch(g) {
13920 let $t0_1, $t1_2, $t2_3;
13921 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13922 $t1_2 = { $get() { return $t0_1.$get().epoch; }, $set(v) { const obj = $t0_1.$get(); obj.epoch = v; $t0_1.$set(obj); } };
13923 $t2_3 = $t1_2.$get();
13924 return $t2_3;
13925 }
13926
13927 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('Epoch', Group$Epoch);
13928 export function Group$ExporterSecret(g) {
13929 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
13930 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13931 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
13932 $t2_3 = $t1_2.$get();
13933 $t3_4 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
13934 $t4_5 = $t3_4.$get();
13935 $t5_6 = secretLabelExporter.$get();
13936 $t6_7 = CipherSuite$deriveSecret($t2_3, $t4_5, $t5_6);
13937 $t7_8 = $t6_7[0];
13938 $t8_9 = $t6_7[1];
13939 return [$t7_8, $t8_9];
13940 }
13941
13942 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('ExporterSecret', Group$ExporterSecret);
13943 export function Group$FindGroupContextExtension(g, t) {
13944 let $t0_1, $t1_2, $t2_3, $t3_4;
13945 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13946 $t1_2 = { $get() { return $t0_1.$get().extensions; }, $set(v) { const obj = $t0_1.$get(); obj.extensions = v; $t0_1.$set(obj); } };
13947 $t2_3 = $t1_2.$get();
13948 $t3_4 = findExtensionData($t2_3, t);
13949 return $t3_4;
13950 }
13951
13952 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('FindGroupContextExtension', Group$FindGroupContextExtension);
13953 export function Group$GroupContextExtensions(g) {
13954 let $t0_1, $t1_2, $t2_3;
13955 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13956 $t1_2 = { $get() { return $t0_1.$get().extensions; }, $set(v) { const obj = $t0_1.$get(); obj.extensions = v; $t0_1.$set(obj); } };
13957 $t2_3 = $t1_2.$get();
13958 return $t2_3;
13959 }
13960
13961 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('GroupContextExtensions', Group$GroupContextExtensions);
13962 export function Group$GroupID(g) {
13963 let $t0_1, $t1_2, $t2_3;
13964 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
13965 $t1_2 = { $get() { return $t0_1.$get().groupID; }, $set(v) { const obj = $t0_1.$get(); obj.groupID = v; $t0_1.$set(obj); } };
13966 $t2_3 = $t1_2.$get();
13967 return $t2_3;
13968 }
13969
13970 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('GroupID', Group$GroupID);
13971 export function Group$Marshal(g) {
13972 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44;
13973 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13974 $t0_1.$set(g);
13975 $t1_2 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
13976 $t2_3 = $t0_1.$get();
13977 $t3_4 = { $get() { return $t2_3.$get().groupContext; }, $set(v) { const obj = $t2_3.$get(); obj.groupContext = v; $t2_3.$set(obj); } };
13978 $t4_5 = groupContext$marshal($t3_4, $t1_2);
13979 $t5_6 = $t0_1.$get();
13980 $t6_7 = { $get() { return $t5_6.$get().tree; }, $set(v) { const obj = $t5_6.$get(); obj.tree = v; $t5_6.$set(obj); } };
13981 $t7_8 = $t6_7.$get();
13982 $t8_9 = ratchetTree$marshal($t7_8, $t1_2);
13983 $t9_10 = $t0_1.$get();
13984 $t10_11 = { $get() { return $t9_10.$get().interimTranscriptHash; }, $set(v) { const obj = $t9_10.$get(); obj.interimTranscriptHash = v; $t9_10.$set(obj); } };
13985 $t11_12 = $t10_11.$get();
13986 $t12_13 = Writer$writeOpaqueVec($t1_2, $t11_12);
13987 $t13_14 = $t0_1.$get();
13988 $t14_15 = { $get() { return $t13_14.$get().pskSecret; }, $set(v) { const obj = $t13_14.$get(); obj.pskSecret = v; $t13_14.$set(obj); } };
13989 $t15_16 = $t14_15.$get();
13990 $t16_17 = Writer$writeOpaqueVec($t1_2, $t15_16);
13991 $t17_18 = $t0_1.$get();
13992 $t18_19 = { $get() { return $t17_18.$get().epochSecret; }, $set(v) { const obj = $t17_18.$get(); obj.epochSecret = v; $t17_18.$set(obj); } };
13993 $t19_20 = $t18_19.$get();
13994 $t20_21 = Writer$writeOpaqueVec($t1_2, $t19_20);
13995 $t21_22 = $t0_1.$get();
13996 $t22_23 = { $get() { return $t21_22.$get().initSecret; }, $set(v) { const obj = $t21_22.$get(); obj.initSecret = v; $t21_22.$set(obj); } };
13997 $t23_24 = $t22_23.$get();
13998 $t24_25 = Writer$writeOpaqueVec($t1_2, $t23_24);
13999 $t25_26 = $t0_1.$get();
14000 $t26_27 = { $get() { return $t25_26.$get().myLeafIndex; }, $set(v) { const obj = $t25_26.$get(); obj.myLeafIndex = v; $t25_26.$set(obj); } };
14001 $t27_28 = $t26_27.$get();
14002 $t28_29 = $t27_28;
14003 $t29_30 = Writer$addUint32($t1_2, $t28_29);
14004 $t30_31 = $t0_1.$get();
14005 $t31_32 = { $get() { return $t30_31.$get().signaturePriv; }, $set(v) { const obj = $t30_31.$get(); obj.signaturePriv = v; $t30_31.$set(obj); } };
14006 $t32_33 = $t31_32.$get();
14007 $t33_34 = $t32_33;
14008 $t34_35 = Writer$writeOpaqueVec($t1_2, $t33_34);
14009 $t35_36 = $t0_1.$get();
14010 $t36_37 = { $get() { return $t35_36.$get().privTree; }, $set(v) { const obj = $t35_36.$get(); obj.privTree = v; $t35_36.$set(obj); } };
14011 $t37_38 = $t36_37.$get();
14012 $t38_39 = $rt.builtin.len($t37_38);
14013 $t39_40 = Group$Marshal$1.bind(null, $t0_1);
14014 $t40_41 = Writer$writeVector($t1_2, $t38_39, $t39_40);
14015 $t41_42 = Writer$bytes($t1_2);
14016 $t42_43 = $t41_42[0];
14017 $t43_44 = $t41_42[1];
14018 return [$t42_43, $t43_44];
14019 }
14020
14021 function Group$Marshal$1(g, w, i) {
14022 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
14023 $t0_1 = g.$get();
14024 $t1_2 = { $get() { return $t0_1.$get().privTree; }, $set(v) { const obj = $t0_1.$get(); obj.privTree = v; $t0_1.$set(obj); } };
14025 $t2_3 = $t1_2.$get();
14026 $t3_4 = $t2_3.addr(i);
14027 $t4_5 = $t3_4.$get();
14028 $t5_6 = $t4_5;
14029 $t6_7 = Writer$writeOpaqueVec(w, $t5_6);
14030 return;
14031 }
14032
14033 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('Marshal', Group$Marshal);
14034 export function Group$UnmarshalAndProcessMessage(g, raw) {
14035 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
14036 let $block = 0;
14037 while (true) {
14038 switch ($block) {
14039 case 0: {
14040 $t0_1 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14041 $t1_2 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t0_1);
14042 $t2_3 = unmarshalRaw(raw, $t1_2);
14043 $t3_4 = ($t2_3 !== null);
14044 if ($t3_4) {
14045 $block = 1; break;
14046 }
14047 else {
14048 $block = 2; break;
14049 }
14050 break;
14051 }
14052 case 1: {
14053 return [null, false, $t2_3];
14054 break;
14055 }
14056 case 2: {
14057 $t4_5 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
14058 $t5_6 = $t4_5.$get();
14059 $t6_7 = ($t5_6 === 1);
14060 if ($t6_7) {
14061 $block = 3; break;
14062 }
14063 else {
14064 $block = 5; break;
14065 }
14066 break;
14067 }
14068 case 3: {
14069 $t7_8 = { $get() { return $t0_1.$get().publicMessage; }, $set(v) { const obj = $t0_1.$get(); obj.publicMessage = v; $t0_1.$set(obj); } };
14070 $t8_9 = $t7_8.$get();
14071 $t9_10 = Group$processPublicMessage(g, $t8_9);
14072 return [null, false, $t9_10];
14073 break;
14074 }
14075 case 4: {
14076 $t10_11 = { $get() { return $t0_1.$get().privateMessage; }, $set(v) { const obj = $t0_1.$get(); obj.privateMessage = v; $t0_1.$set(obj); } };
14077 $t11_12 = $t10_11.$get();
14078 $t12_13 = Group$processPrivateMessage(g, $t11_12);
14079 $t13_14 = $t12_13[0];
14080 $t14_15 = $t12_13[1];
14081 $t15_16 = $t12_13[2];
14082 return [$t13_14, $t14_15, $t15_16];
14083 break;
14084 }
14085 case 5: {
14086 $t16_17 = ($t5_6 === 2);
14087 if ($t16_17) {
14088 $block = 4; break;
14089 }
14090 else {
14091 $block = 6; break;
14092 }
14093 break;
14094 }
14095 case 6: {
14096 $t17_18 = errors.New('mls: unsupported wire format');
14097 return [null, false, $t17_18];
14098 break;
14099 }
14100 }
14101 }
14102 }
14103
14104 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('UnmarshalAndProcessMessage', Group$UnmarshalAndProcessMessage);
14105 export function Group$encryptPrivateMessage(g, fc, privContent) {
14106 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52;
14107 let $block = 0;
14108 while (true) {
14109 switch ($block) {
14110 case 0: {
14111 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14112 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
14113 $t2_3 = $t1_2.$get();
14114 $t3_4 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
14115 $t4_5 = $t3_4.$get();
14116 $t5_6 = newSenderData($t4_5, 0);
14117 $t6_7 = $t5_6[0];
14118 $t7_8 = $t5_6[1];
14119 $t8_9 = ($t7_8 !== null);
14120 if ($t8_9) {
14121 $block = 1; break;
14122 }
14123 else {
14124 $block = 2; break;
14125 }
14126 break;
14127 }
14128 case 1: {
14129 return [null, $t7_8];
14130 break;
14131 }
14132 case 2: {
14133 $t9_10 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
14134 $t10_11 = $t9_10.$get();
14135 $t11_12 = secretLabelEncryption.$get();
14136 $t12_13 = CipherSuite$deriveSecret($t2_3, $t10_11, $t11_12);
14137 $t13_14 = $t12_13[0];
14138 $t14_15 = $t12_13[1];
14139 $t15_16 = ($t14_15 !== null);
14140 if ($t15_16) {
14141 $block = 3; break;
14142 }
14143 else {
14144 $block = 4; break;
14145 }
14146 break;
14147 }
14148 case 3: {
14149 return [null, $t14_15];
14150 break;
14151 }
14152 case 4: {
14153 $t16_17 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
14154 $t17_18 = $t16_17.$get();
14155 $t18_19 = ratchetTree$numLeaves($t17_18);
14156 $t19_20 = deriveSecretTree($t2_3, $t18_19, $t13_14);
14157 $t20_21 = $t19_20[0];
14158 $t21_22 = $t19_20[1];
14159 $t22_23 = ($t21_22 !== null);
14160 if ($t22_23) {
14161 $block = 5; break;
14162 }
14163 else {
14164 $block = 6; break;
14165 }
14166 break;
14167 }
14168 case 5: {
14169 return [null, $t21_22];
14170 break;
14171 }
14172 case 6: {
14173 $t23_24 = { $get() { return fc.$get().contentType; }, $set(v) { const obj = fc.$get(); obj.contentType = v; fc.$set(obj); } };
14174 $t24_25 = $t23_24.$get();
14175 $t25_26 = ratchetLabelFromContentType($t24_25);
14176 $t26_27 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
14177 $t27_28 = $t26_27.$get();
14178 $t28_29 = leafIndex$nodeIndex($t27_28);
14179 $t29_30 = secretTree$deriveRatchetRoot($t20_21, $t2_3, $t28_29, $t25_26);
14180 $t30_31 = $t29_30[0];
14181 $t31_32 = $t29_30[1];
14182 $t32_33 = ($t31_32 !== null);
14183 if ($t32_33) {
14184 $block = 7; break;
14185 }
14186 else {
14187 $block = 8; break;
14188 }
14189 break;
14190 }
14191 case 7: {
14192 return [null, $t31_32];
14193 break;
14194 }
14195 case 8: {
14196 $t33_34 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
14197 $t34_35 = $t33_34.$get();
14198 $t35_36 = secretLabelSenderData.$get();
14199 $t36_37 = CipherSuite$deriveSecret($t2_3, $t34_35, $t35_36);
14200 $t37_38 = $t36_37[0];
14201 $t38_39 = $t36_37[1];
14202 $t39_40 = ($t38_39 !== null);
14203 if ($t39_40) {
14204 $block = 9; break;
14205 }
14206 else {
14207 $block = 10; break;
14208 }
14209 break;
14210 }
14211 case 9: {
14212 return [null, $t38_39];
14213 break;
14214 }
14215 case 10: {
14216 $t40_41 = encryptPrivateMessage($t2_3, $t30_31, $t37_38, fc, privContent, $t6_7);
14217 $t41_42 = $t40_41[0];
14218 $t42_43 = $t40_41[1];
14219 $t43_44 = ($t42_43 !== null);
14220 if ($t43_44) {
14221 $block = 11; break;
14222 }
14223 else {
14224 $block = 12; break;
14225 }
14226 break;
14227 }
14228 case 11: {
14229 return [null, $t42_43];
14230 break;
14231 }
14232 case 12: {
14233 $t44_45 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14234 $t45_46 = { $get() { return $t44_45.$get().version; }, $set(v) { const obj = $t44_45.$get(); obj.version = v; $t44_45.$set(obj); } };
14235 $t46_47 = { $get() { return $t44_45.$get().wireFormat; }, $set(v) { const obj = $t44_45.$get(); obj.wireFormat = v; $t44_45.$set(obj); } };
14236 $t47_48 = { $get() { return $t44_45.$get().privateMessage; }, $set(v) { const obj = $t44_45.$get(); obj.privateMessage = v; $t44_45.$set(obj); } };
14237 $t45_46.$set(1);
14238 $t46_47.$set(2);
14239 $t47_48.$set($t41_42);
14240 $t48_49 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t44_45);
14241 $t49_50 = marshalRaw($t48_49);
14242 $t50_51 = $t49_50[0];
14243 $t51_52 = $t49_50[1];
14244 return [$t50_51, $t51_52];
14245 break;
14246 }
14247 }
14248 }
14249 }
14250
14251 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('encryptPrivateMessage', Group$encryptPrivateMessage);
14252 export function Group$processCommit(g, authContent, pskIDs, psks, nowUnix) {
14253 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197;
14254 let $block = 0;
14255 while (true) {
14256 switch ($block) {
14257 case 0: {
14258 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14259 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
14260 $t2_3 = $t1_2.$get();
14261 $t3_4 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
14262 $t4_5 = { $get() { return $t3_4.$get().sender; }, $set(v) { const obj = $t3_4.$get(); obj.sender = v; $t3_4.$set(obj); } };
14263 $t5_6 = { $get() { return $t4_5.$get().leafIndex; }, $set(v) { const obj = $t4_5.$get(); obj.leafIndex = v; $t4_5.$set(obj); } };
14264 $t6_7 = $t5_6.$get();
14265 $t7_8 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
14266 $t8_9 = { $get() { return $t7_8.$get().commit; }, $set(v) { const obj = $t7_8.$get(); obj.commit = v; $t7_8.$set(obj); } };
14267 $t9_10 = $t8_9.$get();
14268 $t10_11 = { $get() { return $t9_10.$get().proposals; }, $set(v) { const obj = $t9_10.$get(); obj.proposals = v; $t9_10.$set(obj); } };
14269 $t11_12 = $t10_11.$get();
14270 $t12_13 = { $get() { return g.$get().pendingProposals; }, $set(v) { const obj = g.$get(); obj.pendingProposals = v; g.$set(obj); } };
14271 $t13_14 = $t12_13.$get();
14272 $t14_15 = resolveProposals($t11_12, $t6_7, $t13_14);
14273 $t15_16 = $t14_15[0];
14274 $t16_17 = $t14_15[1];
14275 $t17_18 = $t14_15[2];
14276 $t18_19 = ($t17_18 !== null);
14277 if ($t18_19) {
14278 $block = 1; break;
14279 }
14280 else {
14281 $block = 2; break;
14282 }
14283 break;
14284 }
14285 case 1: {
14286 return $t17_18;
14287 break;
14288 }
14289 case 2: {
14290 $t19_20 = verifyProposalList($t15_16, $t16_17, $t6_7);
14291 $t20_21 = ($t19_20 !== null);
14292 if ($t20_21) {
14293 $block = 3; break;
14294 }
14295 else {
14296 $block = 4; break;
14297 }
14298 break;
14299 }
14300 case 3: {
14301 return $t19_20;
14302 break;
14303 }
14304 case 4: {
14305 $t21_22 = $rt.builtin.len($t15_16);
14306 $t22_23 = -1;
14307 $block = 5; break;
14308 break;
14309 }
14310 case 5: {
14311 $t23_24 = ($t22_23 + 1);
14312 $t24_25 = ($t23_24 < $t21_22);
14313 if ($t24_25) {
14314 $block = 6; break;
14315 }
14316 else {
14317 $block = 7; break;
14318 }
14319 break;
14320 }
14321 case 6: {
14322 $t25_26 = $t15_16.addr($t23_24);
14323 $t26_27 = $t25_26.$get();
14324 $t27_28 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14325 $t27_28.$set($rt.builtin.cloneValue($t26_27));
14326 $t28_29 = { $get() { return $t27_28.$get().proposalType; }, $set(v) { const obj = $t27_28.$get(); obj.proposalType = v; $t27_28.$set(obj); } };
14327 $t29_30 = $t28_29.$get();
14328 $t30_31 = ($t29_30 === 1);
14329 if ($t30_31) {
14330 $block = 8; break;
14331 }
14332 else {
14333 $t22_23 = $t23_24;
14334 $block = 5; break;
14335 }
14336 break;
14337 }
14338 case 7: {
14339 $t31_32 = proposalListNeedsPath($t15_16);
14340 if ($t31_32) {
14341 $block = 12; break;
14342 }
14343 else {
14344 $block = 11; break;
14345 }
14346 break;
14347 }
14348 case 8: {
14349 $t32_33 = { $get() { return $t27_28.$get().add; }, $set(v) { const obj = $t27_28.$get(); obj.add = v; $t27_28.$set(obj); } };
14350 $t33_34 = $t32_33.$get();
14351 $t34_35 = { $get() { return $t33_34.$get().keyPackage; }, $set(v) { const obj = $t33_34.$get(); obj.keyPackage = v; $t33_34.$set(obj); } };
14352 $t35_36 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14353 $t36_37 = KeyPackage$verify($t34_35, $t35_36);
14354 $t37_38 = ($t36_37 !== null);
14355 if ($t37_38) {
14356 $block = 9; break;
14357 }
14358 else {
14359 $t22_23 = $t23_24;
14360 $block = 5; break;
14361 }
14362 break;
14363 }
14364 case 9: {
14365 return $t36_37;
14366 break;
14367 }
14368 case 10: {
14369 $t38_39 = errors.New('mls: commit missing required update path');
14370 return $t38_39;
14371 break;
14372 }
14373 case 11: {
14374 $t39_40 = { $value: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14375 $t40_41 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14376 $t41_42 = $t40_41.$get();
14377 $t39_40.$set($rt.builtin.cloneValue($t41_42));
14378 $t42_43 = { $get() { return $t39_40.$get().epoch; }, $set(v) { const obj = $t39_40.$get(); obj.epoch = v; $t39_40.$set(obj); } };
14379 $t43_44 = $t42_43.$get();
14380 $t44_45 = BigInt.asUintN(64, $t43_44 + 1n);
14381 $t45_46 = { $get() { return $t39_40.$get().epoch; }, $set(v) { const obj = $t39_40.$get(); obj.epoch = v; $t39_40.$set(obj); } };
14382 $t45_46.$set($t44_45);
14383 $t46_47 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14384 $t47_48 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
14385 $t48_49 = $t47_48.$get();
14386 $t49_50 = ratchetTree$copy($t48_49);
14387 $t46_47.$set($t49_50);
14388 $t50_51 = ratchetTree$apply($t46_47, $t15_16, $t16_17);
14389 $t51_52 = $t46_47.$get();
14390 $t52_53 = $rt.builtin.len($t51_52);
14391 $t53_54 = $rt.builtin.makeSlice($t52_53, $t52_53, null);
14392 $t54_55 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
14393 $t55_56 = $t54_55.$get();
14394 $t56_57 = $rt.builtin.len($t55_56);
14395 $t60_61 = -1;
14396 $block = 13; break;
14397 break;
14398 }
14399 case 12: {
14400 $t57_58 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14401 $t58_59 = $t57_58.$get();
14402 $t59_60 = ($t58_59 === null);
14403 if ($t59_60) {
14404 $block = 10; break;
14405 }
14406 else {
14407 $block = 11; break;
14408 }
14409 break;
14410 }
14411 case 13: {
14412 $t61_62 = ($t60_61 + 1);
14413 $t62_63 = ($t61_62 < $t56_57);
14414 if ($t62_63) {
14415 $block = 14; break;
14416 }
14417 else {
14418 $block = 15; break;
14419 }
14420 break;
14421 }
14422 case 14: {
14423 $t63_64 = $rt.builtin.len($t53_54);
14424 $t64_65 = ($t61_62 < $t63_64);
14425 if ($t64_65) {
14426 $block = 16; break;
14427 }
14428 else {
14429 $t60_61 = $t61_62;
14430 $block = 13; break;
14431 }
14432 break;
14433 }
14434 case 15: {
14435 $t65_66 = CipherSuite$ExtractSize($t2_3);
14436 $t66_67 = $rt.builtin.makeSlice($t65_66, $t65_66, 0);
14437 $t67_68 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14438 $t68_69 = $t67_68.$get();
14439 $t69_70 = ($t68_69 !== null);
14440 if ($t69_70) {
14441 $block = 17; break;
14442 }
14443 else {
14444 $block = 19; break;
14445 }
14446 break;
14447 }
14448 case 16: {
14449 $t70_71 = { $get() { return g.$get().privTree; }, $set(v) { const obj = g.$get(); obj.privTree = v; g.$set(obj); } };
14450 $t71_72 = $t70_71.$get();
14451 $t72_73 = $t71_72.addr($t61_62);
14452 $t73_74 = $t72_73.$get();
14453 $t74_75 = $t53_54.addr($t61_62);
14454 $t74_75.$set($t73_74);
14455 $t60_61 = $t61_62;
14456 $block = 13; break;
14457 break;
14458 }
14459 case 17: {
14460 $t75_76 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14461 $t76_77 = $t75_76.$get();
14462 $t77_78 = { $get() { return $t76_77.$get().leafNode; }, $set(v) { const obj = $t76_77.$get(); obj.leafNode = v; $t76_77.$set(obj); } };
14463 $t78_79 = { $get() { return $t77_78.$get().leafNodeSource; }, $set(v) { const obj = $t77_78.$get(); obj.leafNodeSource = v; $t77_78.$set(obj); } };
14464 $t79_80 = $t78_79.$get();
14465 $t80_81 = ($t79_80 !== 3);
14466 if ($t80_81) {
14467 $block = 20; break;
14468 }
14469 else {
14470 $block = 21; break;
14471 }
14472 break;
14473 }
14474 case 18: {
14475 $t82_83 = authenticatedContent$confirmedTranscriptHashInput(authContent);
14476 $t83_84 = { $get() { return g.$get().interimTranscriptHash; }, $set(v) { const obj = g.$get(); obj.interimTranscriptHash = v; g.$set(obj); } };
14477 $t84_85 = $t83_84.$get();
14478 $t85_86 = confirmedTranscriptHashInput$hashValue($t82_83, $t2_3, $t84_85);
14479 $t86_87 = $t85_86[0];
14480 $t87_88 = { $get() { return $t39_40.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t39_40.$get(); obj.confirmedTranscriptHash = v; $t39_40.$set(obj); } };
14481 $t87_88.$set($t86_87);
14482 $t88_89 = $t85_86[1];
14483 $t89_90 = ($t88_89 !== null);
14484 if ($t89_90) {
14485 $block = 34; break;
14486 }
14487 else {
14488 $block = 35; break;
14489 }
14490 break;
14491 }
14492 case 19: {
14493 $t90_91 = $t46_47.$get();
14494 $t91_92 = ratchetTree$computeRootTreeHash($t90_91, $t2_3);
14495 $t92_93 = $t91_92[0];
14496 $t93_94 = { $get() { return $t39_40.$get().treeHash; }, $set(v) { const obj = $t39_40.$get(); obj.treeHash = v; $t39_40.$set(obj); } };
14497 $t93_94.$set($t92_93);
14498 $t94_95 = $t91_92[1];
14499 $t95_96 = ($t94_95 !== null);
14500 if ($t95_96) {
14501 $block = 33; break;
14502 }
14503 else {
14504 $t81_82 = $t66_67;
14505 $block = 18; break;
14506 }
14507 break;
14508 }
14509 case 20: {
14510 $t96_97 = errors.New('mls: commit path leaf source must be commit');
14511 return $t96_97;
14512 break;
14513 }
14514 case 21: {
14515 $t97_98 = $t46_47.$get();
14516 $t98_99 = ratchetTree$getLeaf($t97_98, $t6_7);
14517 $t99_100 = $t46_47.$get();
14518 $t100_101 = ratchetTree$keys($t99_100);
14519 $t101_102 = $t100_101[0];
14520 $t102_103 = $t100_101[1];
14521 $t103_104 = { $get() { return $t98_99.$get().signatureKey; }, $set(v) { const obj = $t98_99.$get(); obj.signatureKey = v; $t98_99.$set(obj); } };
14522 $t104_105 = $t103_104.$get();
14523 $t105_106 = $rt.builtin.mapDelete($t101_102, $t104_105);
14524 $t106_107 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14525 $t107_108 = $t106_107.$get();
14526 $t108_109 = { $get() { return $t107_108.$get().leafNode; }, $set(v) { const obj = $t107_108.$get(); obj.leafNode = v; $t107_108.$set(obj); } };
14527 $t109_110 = { $value: { cipherSuite: 0, groupID: null, leafIndex: 0, supportedCreds: null, signatureKeys: null, encryptionKeys: null, nowUnix: 0n }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14528 $t110_111 = { $get() { return $t109_110.$get().cipherSuite; }, $set(v) { const obj = $t109_110.$get(); obj.cipherSuite = v; $t109_110.$set(obj); } };
14529 $t111_112 = { $get() { return $t109_110.$get().groupID; }, $set(v) { const obj = $t109_110.$get(); obj.groupID = v; $t109_110.$set(obj); } };
14530 $t112_113 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14531 $t113_114 = { $get() { return $t112_113.$get().groupID; }, $set(v) { const obj = $t112_113.$get(); obj.groupID = v; $t112_113.$set(obj); } };
14532 $t114_115 = $t113_114.$get();
14533 $t115_116 = { $get() { return $t109_110.$get().leafIndex; }, $set(v) { const obj = $t109_110.$get(); obj.leafIndex = v; $t109_110.$set(obj); } };
14534 $t116_117 = { $get() { return $t109_110.$get().supportedCreds; }, $set(v) { const obj = $t109_110.$get(); obj.supportedCreds = v; $t109_110.$set(obj); } };
14535 $t117_118 = $t46_47.$get();
14536 $t118_119 = ratchetTree$supportedCreds($t117_118);
14537 $t119_120 = { $get() { return $t109_110.$get().signatureKeys; }, $set(v) { const obj = $t109_110.$get(); obj.signatureKeys = v; $t109_110.$set(obj); } };
14538 $t120_121 = { $get() { return $t109_110.$get().encryptionKeys; }, $set(v) { const obj = $t109_110.$get(); obj.encryptionKeys = v; $t109_110.$set(obj); } };
14539 $t121_122 = { $get() { return $t109_110.$get().nowUnix; }, $set(v) { const obj = $t109_110.$get(); obj.nowUnix = v; $t109_110.$set(obj); } };
14540 $t110_111.$set($t2_3);
14541 $t111_112.$set($t114_115);
14542 $t115_116.$set($t6_7);
14543 $t116_117.$set($t118_119);
14544 $t119_120.$set($t101_102);
14545 $t120_121.$set($t102_103);
14546 $t121_122.$set(nowUnix);
14547 $t122_123 = leafNode$verify($t108_109, $t109_110);
14548 $t123_124 = ($t122_123 !== null);
14549 if ($t123_124) {
14550 $block = 22; break;
14551 }
14552 else {
14553 $block = 23; break;
14554 }
14555 break;
14556 }
14557 case 22: {
14558 return $t122_123;
14559 break;
14560 }
14561 case 23: {
14562 $t124_125 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14563 $t125_126 = $t124_125.$get();
14564 $t126_127 = { $get() { return $t125_126.$get().nodes; }, $set(v) { const obj = $t125_126.$get(); obj.nodes = v; $t125_126.$set(obj); } };
14565 $t127_128 = $t126_127.$get();
14566 $t128_129 = $rt.builtin.len($t127_128);
14567 $t129_130 = -1;
14568 $block = 24; break;
14569 break;
14570 }
14571 case 24: {
14572 $t130_131 = ($t129_130 + 1);
14573 $t131_132 = ($t130_131 < $t128_129);
14574 if ($t131_132) {
14575 $block = 25; break;
14576 }
14577 else {
14578 $block = 26; break;
14579 }
14580 break;
14581 }
14582 case 25: {
14583 $t132_133 = $t127_128.addr($t130_131);
14584 $t133_134 = $t132_133.$get();
14585 $t134_135 = { $value: { encryptionKey: null, encryptedPathSecret: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14586 $t134_135.$set($rt.builtin.cloneValue($t133_134));
14587 $t135_136 = { $get() { return $t134_135.$get().encryptionKey; }, $set(v) { const obj = $t134_135.$get(); obj.encryptionKey = v; $t134_135.$set(obj); } };
14588 $t136_137 = $t135_136.$get();
14589 $t137_138 = $rt.builtin.mapLookup($t102_103, $t136_137).value;
14590 if ($t137_138) {
14591 $block = 27; break;
14592 }
14593 else {
14594 $t129_130 = $t130_131;
14595 $block = 24; break;
14596 }
14597 break;
14598 }
14599 case 26: {
14600 $t138_139 = $t46_47.$get();
14601 $t139_140 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14602 $t140_141 = $t139_140.$get();
14603 $t141_142 = ratchetTree$mergeUpdatePath($t138_139, $t2_3, $t6_7, $t140_141);
14604 $t142_143 = ($t141_142 !== null);
14605 if ($t142_143) {
14606 $block = 28; break;
14607 }
14608 else {
14609 $block = 29; break;
14610 }
14611 break;
14612 }
14613 case 27: {
14614 $t143_144 = errors.New('mls: update path encryption key already in tree');
14615 return $t143_144;
14616 break;
14617 }
14618 case 28: {
14619 return $t141_142;
14620 break;
14621 }
14622 case 29: {
14623 $t144_145 = $t46_47.$get();
14624 $t145_146 = ratchetTree$computeRootTreeHash($t144_145, $t2_3);
14625 $t146_147 = $t145_146[0];
14626 $t147_148 = { $get() { return $t39_40.$get().treeHash; }, $set(v) { const obj = $t39_40.$get(); obj.treeHash = v; $t39_40.$set(obj); } };
14627 $t147_148.$set($t146_147);
14628 $t148_149 = $t145_146[1];
14629 $t149_150 = ($t148_149 !== null);
14630 if ($t149_150) {
14631 $block = 30; break;
14632 }
14633 else {
14634 $block = 31; break;
14635 }
14636 break;
14637 }
14638 case 30: {
14639 return $t148_149;
14640 break;
14641 }
14642 case 31: {
14643 $t150_151 = $t46_47.$get();
14644 $t151_152 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
14645 $t152_153 = $t151_152.$get();
14646 $t153_154 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
14647 $t154_155 = $t153_154.$get();
14648 $t155_156 = ratchetTree$decryptPathSecrets($t150_151, $t2_3, $t39_40, $t6_7, $t152_153, $t154_155, $t53_54);
14649 $t156_157 = $t155_156[0];
14650 $t157_158 = $t155_156[1];
14651 $t158_159 = ($t157_158 !== null);
14652 if ($t158_159) {
14653 $block = 32; break;
14654 }
14655 else {
14656 $t81_82 = $t156_157;
14657 $block = 18; break;
14658 }
14659 break;
14660 }
14661 case 32: {
14662 return $t157_158;
14663 break;
14664 }
14665 case 33: {
14666 return $t94_95;
14667 break;
14668 }
14669 case 34: {
14670 return $t88_89;
14671 break;
14672 }
14673 case 35: {
14674 $t159_160 = { $get() { return $t39_40.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t39_40.$get(); obj.confirmedTranscriptHash = v; $t39_40.$set(obj); } };
14675 $t160_161 = $t159_160.$get();
14676 $t161_162 = { $get() { return authContent.$get().auth; }, $set(v) { const obj = authContent.$get(); obj.auth = v; authContent.$set(obj); } };
14677 $t162_163 = { $get() { return $t161_162.$get().confirmationTag; }, $set(v) { const obj = $t161_162.$get(); obj.confirmationTag = v; $t161_162.$set(obj); } };
14678 $t163_164 = $t162_163.$get();
14679 $t164_165 = nextInterimTranscriptHash($t2_3, $t160_161, $t163_164);
14680 $t165_166 = $t164_165[0];
14681 $t166_167 = $t164_165[1];
14682 $t167_168 = ($t166_167 !== null);
14683 if ($t167_168) {
14684 $block = 36; break;
14685 }
14686 else {
14687 $block = 37; break;
14688 }
14689 break;
14690 }
14691 case 36: {
14692 return $t166_167;
14693 break;
14694 }
14695 case 37: {
14696 $t168_169 = { $get() { return g.$get().initSecret; }, $set(v) { const obj = g.$get(); obj.initSecret = v; g.$set(obj); } };
14697 $t169_170 = $t168_169.$get();
14698 $t170_171 = groupContext$extractJoinerSecret($t39_40, $t169_170, $t81_82);
14699 $t171_172 = $t170_171[0];
14700 $t172_173 = $t170_171[1];
14701 $t173_174 = ($t172_173 !== null);
14702 if ($t173_174) {
14703 $block = 38; break;
14704 }
14705 else {
14706 $block = 39; break;
14707 }
14708 break;
14709 }
14710 case 38: {
14711 return $t172_173;
14712 break;
14713 }
14714 case 39: {
14715 $t174_175 = extractPSKSecret($t2_3, pskIDs, psks);
14716 $t175_176 = $t174_175[0];
14717 $t176_177 = $t174_175[1];
14718 $t177_178 = ($t176_177 !== null);
14719 if ($t177_178) {
14720 $block = 40; break;
14721 }
14722 else {
14723 $block = 41; break;
14724 }
14725 break;
14726 }
14727 case 40: {
14728 return $t176_177;
14729 break;
14730 }
14731 case 41: {
14732 $t178_179 = groupContext$extractEpochSecret($t39_40, $t171_172, $t175_176);
14733 $t179_180 = $t178_179[0];
14734 $t180_181 = $t178_179[1];
14735 $t181_182 = ($t180_181 !== null);
14736 if ($t181_182) {
14737 $block = 42; break;
14738 }
14739 else {
14740 $block = 43; break;
14741 }
14742 break;
14743 }
14744 case 42: {
14745 return $t180_181;
14746 break;
14747 }
14748 case 43: {
14749 $t182_183 = secretLabelInit.$get();
14750 $t183_184 = CipherSuite$deriveSecret($t2_3, $t179_180, $t182_183);
14751 $t184_185 = $t183_184[0];
14752 $t185_186 = $t183_184[1];
14753 $t186_187 = ($t185_186 !== null);
14754 if ($t186_187) {
14755 $block = 44; break;
14756 }
14757 else {
14758 $block = 45; break;
14759 }
14760 break;
14761 }
14762 case 44: {
14763 return $t185_186;
14764 break;
14765 }
14766 case 45: {
14767 $t187_188 = $t46_47.$get();
14768 $t188_189 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
14769 $t188_189.$set($t187_188);
14770 $t189_190 = { $get() { return g.$get().privTree; }, $set(v) { const obj = g.$get(); obj.privTree = v; g.$set(obj); } };
14771 $t189_190.$set($t53_54);
14772 $t190_191 = $t39_40.$get();
14773 $t191_192 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14774 $t191_192.$set($rt.builtin.cloneValue($t190_191));
14775 $t192_193 = { $get() { return g.$get().interimTranscriptHash; }, $set(v) { const obj = g.$get(); obj.interimTranscriptHash = v; g.$set(obj); } };
14776 $t192_193.$set($t165_166);
14777 $t193_194 = { $get() { return g.$get().pskSecret; }, $set(v) { const obj = g.$get(); obj.pskSecret = v; g.$set(obj); } };
14778 $t193_194.$set($t175_176);
14779 $t194_195 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
14780 $t194_195.$set($t179_180);
14781 $t195_196 = { $get() { return g.$get().initSecret; }, $set(v) { const obj = g.$get(); obj.initSecret = v; g.$set(obj); } };
14782 $t195_196.$set($t184_185);
14783 $t196_197 = { $get() { return g.$get().pendingProposals; }, $set(v) { const obj = g.$get(); obj.pendingProposals = v; g.$set(obj); } };
14784 $t196_197.$set(null);
14785 return null;
14786 break;
14787 }
14788 }
14789 }
14790 }
14791
14792 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('processCommit', Group$processCommit);
14793 export function Group$processPrivateMessage(g, privMsg) {
14794 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100;
14795 let $block = 0;
14796 while (true) {
14797 switch ($block) {
14798 case 0: {
14799 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14800 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
14801 $t2_3 = $t1_2.$get();
14802 $t3_4 = { $get() { return privMsg.$get().groupID; }, $set(v) { const obj = privMsg.$get(); obj.groupID = v; privMsg.$set(obj); } };
14803 $t4_5 = $t3_4.$get();
14804 $t5_6 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14805 $t6_7 = { $get() { return $t5_6.$get().groupID; }, $set(v) { const obj = $t5_6.$get(); obj.groupID = v; $t5_6.$set(obj); } };
14806 $t7_8 = $t6_7.$get();
14807 $t8_9 = GroupID$equal($t4_5, $t7_8);
14808 if ($t8_9) {
14809 $block = 2; break;
14810 }
14811 else {
14812 $block = 1; break;
14813 }
14814 break;
14815 }
14816 case 1: {
14817 $t9_10 = errors.New('mls: group ID mismatch');
14818 return [null, false, $t9_10];
14819 break;
14820 }
14821 case 2: {
14822 $t10_11 = { $get() { return privMsg.$get().epoch; }, $set(v) { const obj = privMsg.$get(); obj.epoch = v; privMsg.$set(obj); } };
14823 $t11_12 = $t10_11.$get();
14824 $t12_13 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
14825 $t13_14 = { $get() { return $t12_13.$get().epoch; }, $set(v) { const obj = $t12_13.$get(); obj.epoch = v; $t12_13.$set(obj); } };
14826 $t14_15 = $t13_14.$get();
14827 $t15_16 = ($t11_12 !== $t14_15);
14828 if ($t15_16) {
14829 $block = 3; break;
14830 }
14831 else {
14832 $block = 4; break;
14833 }
14834 break;
14835 }
14836 case 3: {
14837 $t16_17 = errors.New('mls: epoch mismatch');
14838 return [null, false, $t16_17];
14839 break;
14840 }
14841 case 4: {
14842 $t17_18 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
14843 $t18_19 = $t17_18.$get();
14844 $t19_20 = secretLabelSenderData.$get();
14845 $t20_21 = CipherSuite$deriveSecret($t2_3, $t18_19, $t19_20);
14846 $t21_22 = $t20_21[0];
14847 $t22_23 = $t20_21[1];
14848 $t23_24 = ($t22_23 !== null);
14849 if ($t23_24) {
14850 $block = 5; break;
14851 }
14852 else {
14853 $block = 6; break;
14854 }
14855 break;
14856 }
14857 case 5: {
14858 return [null, false, $t22_23];
14859 break;
14860 }
14861 case 6: {
14862 $t24_25 = privateMessage$decryptSenderData(privMsg, $t2_3, $t21_22);
14863 $t25_26 = $t24_25[0];
14864 $t26_27 = $t24_25[1];
14865 $t27_28 = ($t26_27 !== null);
14866 if ($t27_28) {
14867 $block = 7; break;
14868 }
14869 else {
14870 $block = 8; break;
14871 }
14872 break;
14873 }
14874 case 7: {
14875 return [null, false, $t26_27];
14876 break;
14877 }
14878 case 8: {
14879 $t28_29 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
14880 $t29_30 = $t28_29.$get();
14881 $t30_31 = secretLabelEncryption.$get();
14882 $t31_32 = CipherSuite$deriveSecret($t2_3, $t29_30, $t30_31);
14883 $t32_33 = $t31_32[0];
14884 $t33_34 = $t31_32[1];
14885 $t34_35 = ($t33_34 !== null);
14886 if ($t34_35) {
14887 $block = 9; break;
14888 }
14889 else {
14890 $block = 10; break;
14891 }
14892 break;
14893 }
14894 case 9: {
14895 return [null, false, $t33_34];
14896 break;
14897 }
14898 case 10: {
14899 $t35_36 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
14900 $t36_37 = $t35_36.$get();
14901 $t37_38 = ratchetTree$numLeaves($t36_37);
14902 $t38_39 = deriveSecretTree($t2_3, $t37_38, $t32_33);
14903 $t39_40 = $t38_39[0];
14904 $t40_41 = $t38_39[1];
14905 $t41_42 = ($t40_41 !== null);
14906 if ($t41_42) {
14907 $block = 11; break;
14908 }
14909 else {
14910 $block = 12; break;
14911 }
14912 break;
14913 }
14914 case 11: {
14915 return [null, false, $t40_41];
14916 break;
14917 }
14918 case 12: {
14919 $t42_43 = { $get() { return privMsg.$get().contentType; }, $set(v) { const obj = privMsg.$get(); obj.contentType = v; privMsg.$set(obj); } };
14920 $t43_44 = $t42_43.$get();
14921 $t44_45 = ratchetLabelFromContentType($t43_44);
14922 $t45_46 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
14923 $t46_47 = { $get() { return $t25_26.$get().leafIndex; }, $set(v) { const obj = $t25_26.$get(); obj.leafIndex = v; $t25_26.$set(obj); } };
14924 $t47_48 = $t46_47.$get();
14925 $t48_49 = leafIndex$nodeIndex($t47_48);
14926 $t49_50 = secretTree$deriveRatchetRoot($t39_40, $t2_3, $t48_49, $t44_45);
14927 $t50_51 = $t49_50[0];
14928 $t45_46.$set($rt.builtin.cloneValue($t50_51));
14929 $t51_52 = $t49_50[1];
14930 $t52_53 = ($t51_52 !== null);
14931 if ($t52_53) {
14932 $block = 13; break;
14933 }
14934 else {
14935 $block = 16; break;
14936 }
14937 break;
14938 }
14939 case 13: {
14940 return [null, false, $t51_52];
14941 break;
14942 }
14943 case 14: {
14944 $t53_54 = $t45_46.$get();
14945 $t54_55 = ratchetSecret$deriveNext($t53_54, $t2_3);
14946 $t55_56 = $t54_55[0];
14947 $t45_46.$set($rt.builtin.cloneValue($t55_56));
14948 $t56_57 = $t54_55[1];
14949 $t57_58 = ($t56_57 !== null);
14950 if ($t57_58) {
14951 $block = 17; break;
14952 }
14953 else {
14954 $block = 16; break;
14955 }
14956 break;
14957 }
14958 case 15: {
14959 $t58_59 = $t45_46.$get();
14960 $t59_60 = { $get() { return $t25_26.$get().reuseGuard; }, $set(v) { const obj = $t25_26.$get(); obj.reuseGuard = v; $t25_26.$set(obj); } };
14961 $t60_61 = $t59_60.$get();
14962 $t61_62 = privateMessage$decryptContent(privMsg, $t2_3, $t58_59, $t60_61);
14963 $t62_63 = $t61_62[0];
14964 $t63_64 = $t61_62[1];
14965 $t64_65 = ($t63_64 !== null);
14966 if ($t64_65) {
14967 $block = 18; break;
14968 }
14969 else {
14970 $block = 19; break;
14971 }
14972 break;
14973 }
14974 case 16: {
14975 $t65_66 = { $get() { return $t45_46.$get().generation; }, $set(v) { const obj = $t45_46.$get(); obj.generation = v; $t45_46.$set(obj); } };
14976 $t66_67 = $t65_66.$get();
14977 $t67_68 = { $get() { return $t25_26.$get().generation; }, $set(v) { const obj = $t25_26.$get(); obj.generation = v; $t25_26.$set(obj); } };
14978 $t68_69 = $t67_68.$get();
14979 $t69_70 = ($t66_67 !== $t68_69);
14980 if ($t69_70) {
14981 $block = 14; break;
14982 }
14983 else {
14984 $block = 15; break;
14985 }
14986 break;
14987 }
14988 case 17: {
14989 return [null, false, $t56_57];
14990 break;
14991 }
14992 case 18: {
14993 return [null, false, $t63_64];
14994 break;
14995 }
14996 case 19: {
14997 $t70_71 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
14998 $t71_72 = $t70_71.$get();
14999 $t72_73 = { $get() { return $t25_26.$get().leafIndex; }, $set(v) { const obj = $t25_26.$get(); obj.leafIndex = v; $t25_26.$set(obj); } };
15000 $t73_74 = $t72_73.$get();
15001 $t74_75 = ratchetTree$getLeaf($t71_72, $t73_74);
15002 $t75_76 = ($t74_75 === null);
15003 if ($t75_76) {
15004 $block = 20; break;
15005 }
15006 else {
15007 $block = 21; break;
15008 }
15009 break;
15010 }
15011 case 20: {
15012 $t76_77 = errors.New('mls: signer node is blank');
15013 return [null, false, $t76_77];
15014 break;
15015 }
15016 case 21: {
15017 $t77_78 = privateMessage$authenticatedContent(privMsg, $t25_26, $t62_63);
15018 $t78_79 = { $get() { return $t74_75.$get().signatureKey; }, $set(v) { const obj = $t74_75.$get(); obj.signatureKey = v; $t74_75.$set(obj); } };
15019 $t79_80 = $t78_79.$get();
15020 $t80_81 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15021 $t81_82 = authenticatedContent$verifySignature($t77_78, $t79_80, $t80_81);
15022 if ($t81_82) {
15023 $block = 23; break;
15024 }
15025 else {
15026 $block = 22; break;
15027 }
15028 break;
15029 }
15030 case 22: {
15031 $t82_83 = errors.New('mls: private message signature verification failed');
15032 return [null, false, $t82_83];
15033 break;
15034 }
15035 case 23: {
15036 $t83_84 = { $get() { return $t25_26.$get().leafIndex; }, $set(v) { const obj = $t25_26.$get(); obj.leafIndex = v; $t25_26.$set(obj); } };
15037 $t84_85 = $t83_84.$get();
15038 $t85_86 = { $get() { return g.$get().myLeafIndex; }, $set(v) { const obj = g.$get(); obj.myLeafIndex = v; g.$set(obj); } };
15039 $t86_87 = $t85_86.$get();
15040 $t87_88 = ($t84_85 === $t86_87);
15041 $t88_89 = { $get() { return $t77_78.$get().content; }, $set(v) { const obj = $t77_78.$get(); obj.content = v; $t77_78.$set(obj); } };
15042 $t89_90 = { $get() { return $t88_89.$get().contentType; }, $set(v) { const obj = $t88_89.$get(); obj.contentType = v; $t88_89.$set(obj); } };
15043 $t90_91 = $t89_90.$get();
15044 $t91_92 = ($t90_91 === 2);
15045 if ($t91_92) {
15046 $block = 24; break;
15047 }
15048 else {
15049 $block = 26; break;
15050 }
15051 break;
15052 }
15053 case 24: {
15054 $t92_93 = Group$processProposal(g, $t77_78);
15055 return [null, false, $t92_93];
15056 break;
15057 }
15058 case 25: {
15059 $t93_94 = Group$processCommit(g, $t77_78, null, null, 0n);
15060 return [null, false, $t93_94];
15061 break;
15062 }
15063 case 26: {
15064 $t94_95 = ($t90_91 === 3);
15065 if ($t94_95) {
15066 $block = 25; break;
15067 }
15068 else {
15069 $block = 28; break;
15070 }
15071 break;
15072 }
15073 case 27: {
15074 $t95_96 = { $get() { return $t77_78.$get().content; }, $set(v) { const obj = $t77_78.$get(); obj.content = v; $t77_78.$set(obj); } };
15075 $t96_97 = { $get() { return $t95_96.$get().applicationData; }, $set(v) { const obj = $t95_96.$get(); obj.applicationData = v; $t95_96.$set(obj); } };
15076 $t97_98 = $t96_97.$get();
15077 return [$t97_98, $t87_88, null];
15078 break;
15079 }
15080 case 28: {
15081 $t98_99 = ($t90_91 === 1);
15082 if ($t98_99) {
15083 $block = 27; break;
15084 }
15085 else {
15086 $block = 29; break;
15087 }
15088 break;
15089 }
15090 case 29: {
15091 $t99_100 = errors.New('mls: unsupported content type');
15092 return [null, false, $t99_100];
15093 break;
15094 }
15095 }
15096 }
15097 }
15098
15099 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('processPrivateMessage', Group$processPrivateMessage);
15100 export function Group$processProposal(g, authContent) {
15101 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26;
15102 let $block = 0;
15103 while (true) {
15104 switch ($block) {
15105 case 0: {
15106 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15107 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
15108 $t2_3 = $t1_2.$get();
15109 $t3_4 = authenticatedContent$generateProposalRef(authContent, $t2_3);
15110 $t4_5 = $t3_4[0];
15111 $t5_6 = $t3_4[1];
15112 $t6_7 = ($t5_6 !== null);
15113 if ($t6_7) {
15114 $block = 1; break;
15115 }
15116 else {
15117 $block = 2; break;
15118 }
15119 break;
15120 }
15121 case 1: {
15122 return $t5_6;
15123 break;
15124 }
15125 case 2: {
15126 $t7_8 = { $get() { return g.$get().pendingProposals; }, $set(v) { const obj = g.$get(); obj.pendingProposals = v; g.$set(obj); } };
15127 $t8_9 = $t7_8.$get();
15128 $t9_10 = { $value: { ref: null, proposal: null, sender: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15129 $t10_11 = { $get() { return $t9_10.$get().ref; }, $set(v) { const obj = $t9_10.$get(); obj.ref = v; $t9_10.$set(obj); } };
15130 $t11_12 = { $get() { return $t9_10.$get().proposal; }, $set(v) { const obj = $t9_10.$get(); obj.proposal = v; $t9_10.$set(obj); } };
15131 $t12_13 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
15132 $t13_14 = { $get() { return $t12_13.$get().proposal; }, $set(v) { const obj = $t12_13.$get(); obj.proposal = v; $t12_13.$set(obj); } };
15133 $t14_15 = $t13_14.$get();
15134 $t15_16 = { $get() { return $t9_10.$get().sender; }, $set(v) { const obj = $t9_10.$get(); obj.sender = v; $t9_10.$set(obj); } };
15135 $t16_17 = { $get() { return authContent.$get().content; }, $set(v) { const obj = authContent.$get(); obj.content = v; authContent.$set(obj); } };
15136 $t17_18 = { $get() { return $t16_17.$get().sender; }, $set(v) { const obj = $t16_17.$get(); obj.sender = v; $t16_17.$set(obj); } };
15137 $t18_19 = { $get() { return $t17_18.$get().leafIndex; }, $set(v) { const obj = $t17_18.$get(); obj.leafIndex = v; $t17_18.$set(obj); } };
15138 $t19_20 = $t18_19.$get();
15139 $t10_11.$set($t4_5);
15140 $t11_12.$set($t14_15);
15141 $t15_16.$set($t19_20);
15142 $t20_21 = $t9_10.$get();
15143 $t21_22 = { $value: $rt.builtin.makeSlice(1, 1, { ref: null, proposal: null, sender: 0 }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
15144 $t22_23 = $t21_22.$get().addr(0);
15145 $t22_23.$set($rt.builtin.cloneValue($t20_21));
15146 $t23_24 = $rt.builtin.sliceSlice($t21_22.$get(), undefined, undefined, undefined);
15147 $t24_25 = $rt.builtin.appendSlice($t8_9, $t23_24);
15148 $t25_26 = { $get() { return g.$get().pendingProposals; }, $set(v) { const obj = g.$get(); obj.pendingProposals = v; g.$set(obj); } };
15149 $t25_26.$set($t24_25);
15150 return null;
15151 break;
15152 }
15153 }
15154 }
15155 }
15156
15157 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('processProposal', Group$processProposal);
15158 export function Group$processPublicMessage(g, pubMsg) {
15159 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
15160 let $block = 0;
15161 while (true) {
15162 switch ($block) {
15163 case 0: {
15164 $t0_1 = Group$verifyPublicMessage(g, pubMsg);
15165 $t1_2 = $t0_1[0];
15166 $t2_3 = $t0_1[1];
15167 $t3_4 = ($t2_3 !== null);
15168 if ($t3_4) {
15169 $block = 1; break;
15170 }
15171 else {
15172 $block = 2; break;
15173 }
15174 break;
15175 }
15176 case 1: {
15177 return $t2_3;
15178 break;
15179 }
15180 case 2: {
15181 $t4_5 = { $get() { return $t1_2.$get().content; }, $set(v) { const obj = $t1_2.$get(); obj.content = v; $t1_2.$set(obj); } };
15182 $t5_6 = { $get() { return $t4_5.$get().contentType; }, $set(v) { const obj = $t4_5.$get(); obj.contentType = v; $t4_5.$set(obj); } };
15183 $t6_7 = $t5_6.$get();
15184 $t7_8 = ($t6_7 === 2);
15185 if ($t7_8) {
15186 $block = 3; break;
15187 }
15188 else {
15189 $block = 5; break;
15190 }
15191 break;
15192 }
15193 case 3: {
15194 $t8_9 = Group$processProposal(g, $t1_2);
15195 return $t8_9;
15196 break;
15197 }
15198 case 4: {
15199 $t9_10 = Group$processCommit(g, $t1_2, null, null, 0n);
15200 return $t9_10;
15201 break;
15202 }
15203 case 5: {
15204 $t10_11 = ($t6_7 === 3);
15205 if ($t10_11) {
15206 $block = 4; break;
15207 }
15208 else {
15209 $block = 7; break;
15210 }
15211 break;
15212 }
15213 case 6: {
15214 $t11_12 = errors.New('mls: application content must be encrypted');
15215 return $t11_12;
15216 break;
15217 }
15218 case 7: {
15219 $t12_13 = ($t6_7 === 1);
15220 if ($t12_13) {
15221 $block = 6; break;
15222 }
15223 else {
15224 $block = 8; break;
15225 }
15226 break;
15227 }
15228 case 8: {
15229 $t13_14 = errors.New('mls: unsupported content type');
15230 return $t13_14;
15231 break;
15232 }
15233 }
15234 }
15235 }
15236
15237 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('processPublicMessage', Group$processPublicMessage);
15238 export function Group$signPublicMessageMembershipTag(g, pubMsg) {
15239 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
15240 let $block = 0;
15241 while (true) {
15242 switch ($block) {
15243 case 0: {
15244 $t0_1 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15245 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
15246 $t2_3 = $t1_2.$get();
15247 $t3_4 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
15248 $t4_5 = $t3_4.$get();
15249 $t5_6 = secretLabelMembership.$get();
15250 $t6_7 = CipherSuite$deriveSecret($t2_3, $t4_5, $t5_6);
15251 $t7_8 = $t6_7[0];
15252 $t8_9 = $t6_7[1];
15253 $t9_10 = ($t8_9 !== null);
15254 if ($t9_10) {
15255 $block = 1; break;
15256 }
15257 else {
15258 $block = 2; break;
15259 }
15260 break;
15261 }
15262 case 1: {
15263 return [null, $t8_9];
15264 break;
15265 }
15266 case 2: {
15267 $t10_11 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15268 $t11_12 = publicMessage$signMembershipTag(pubMsg, $t2_3, $t7_8, $t10_11);
15269 $t12_13 = ($t11_12 !== null);
15270 if ($t12_13) {
15271 $block = 3; break;
15272 }
15273 else {
15274 $block = 4; break;
15275 }
15276 break;
15277 }
15278 case 3: {
15279 return [null, $t11_12];
15280 break;
15281 }
15282 case 4: {
15283 $t13_14 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15284 $t14_15 = { $get() { return $t13_14.$get().version; }, $set(v) { const obj = $t13_14.$get(); obj.version = v; $t13_14.$set(obj); } };
15285 $t15_16 = { $get() { return $t13_14.$get().wireFormat; }, $set(v) { const obj = $t13_14.$get(); obj.wireFormat = v; $t13_14.$set(obj); } };
15286 $t16_17 = { $get() { return $t13_14.$get().publicMessage; }, $set(v) { const obj = $t13_14.$get(); obj.publicMessage = v; $t13_14.$set(obj); } };
15287 $t14_15.$set(1);
15288 $t15_16.$set(1);
15289 $t16_17.$set(pubMsg);
15290 $t17_18 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t13_14);
15291 $t18_19 = marshalRaw($t17_18);
15292 $t19_20 = $t18_19[0];
15293 $t20_21 = $t18_19[1];
15294 return [$t19_20, $t20_21];
15295 break;
15296 }
15297 }
15298 }
15299 }
15300
15301 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('signPublicMessageMembershipTag', Group$signPublicMessageMembershipTag);
15302 export function Group$verifyPublicMessage(g, pubMsg) {
15303 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50;
15304 let $block = 0;
15305 while (true) {
15306 switch ($block) {
15307 case 0: {
15308 $t0_1 = { $get() { return pubMsg.$get().content; }, $set(v) { const obj = pubMsg.$get(); obj.content = v; pubMsg.$set(obj); } };
15309 $t1_2 = { $get() { return $t0_1.$get().groupID; }, $set(v) { const obj = $t0_1.$get(); obj.groupID = v; $t0_1.$set(obj); } };
15310 $t2_3 = $t1_2.$get();
15311 $t3_4 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15312 $t4_5 = { $get() { return $t3_4.$get().groupID; }, $set(v) { const obj = $t3_4.$get(); obj.groupID = v; $t3_4.$set(obj); } };
15313 $t5_6 = $t4_5.$get();
15314 $t6_7 = GroupID$equal($t2_3, $t5_6);
15315 if ($t6_7) {
15316 $block = 2; break;
15317 }
15318 else {
15319 $block = 1; break;
15320 }
15321 break;
15322 }
15323 case 1: {
15324 $t7_8 = errors.New('mls: group ID mismatch');
15325 return [null, $t7_8];
15326 break;
15327 }
15328 case 2: {
15329 $t8_9 = { $get() { return pubMsg.$get().content; }, $set(v) { const obj = pubMsg.$get(); obj.content = v; pubMsg.$set(obj); } };
15330 $t9_10 = { $get() { return $t8_9.$get().epoch; }, $set(v) { const obj = $t8_9.$get(); obj.epoch = v; $t8_9.$set(obj); } };
15331 $t10_11 = $t9_10.$get();
15332 $t11_12 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15333 $t12_13 = { $get() { return $t11_12.$get().epoch; }, $set(v) { const obj = $t11_12.$get(); obj.epoch = v; $t11_12.$set(obj); } };
15334 $t13_14 = $t12_13.$get();
15335 $t14_15 = ($t10_11 !== $t13_14);
15336 if ($t14_15) {
15337 $block = 3; break;
15338 }
15339 else {
15340 $block = 4; break;
15341 }
15342 break;
15343 }
15344 case 3: {
15345 $t15_16 = errors.New('mls: epoch mismatch');
15346 return [null, $t15_16];
15347 break;
15348 }
15349 case 4: {
15350 $t16_17 = { $get() { return pubMsg.$get().content; }, $set(v) { const obj = pubMsg.$get(); obj.content = v; pubMsg.$set(obj); } };
15351 $t17_18 = { $get() { return $t16_17.$get().sender; }, $set(v) { const obj = $t16_17.$get(); obj.sender = v; $t16_17.$set(obj); } };
15352 $t18_19 = { $get() { return $t17_18.$get().senderType; }, $set(v) { const obj = $t17_18.$get(); obj.senderType = v; $t17_18.$set(obj); } };
15353 $t19_20 = $t18_19.$get();
15354 $t20_21 = ($t19_20 !== 1);
15355 if ($t20_21) {
15356 $block = 5; break;
15357 }
15358 else {
15359 $block = 6; break;
15360 }
15361 break;
15362 }
15363 case 5: {
15364 $t21_22 = errors.New('mls: unsupported sender type');
15365 return [null, $t21_22];
15366 break;
15367 }
15368 case 6: {
15369 $t22_23 = { $get() { return pubMsg.$get().content; }, $set(v) { const obj = pubMsg.$get(); obj.content = v; pubMsg.$set(obj); } };
15370 $t23_24 = { $get() { return $t22_23.$get().sender; }, $set(v) { const obj = $t22_23.$get(); obj.sender = v; $t22_23.$set(obj); } };
15371 $t24_25 = { $get() { return $t23_24.$get().leafIndex; }, $set(v) { const obj = $t23_24.$get(); obj.leafIndex = v; $t23_24.$set(obj); } };
15372 $t25_26 = $t24_25.$get();
15373 $t26_27 = { $get() { return g.$get().tree; }, $set(v) { const obj = g.$get(); obj.tree = v; g.$set(obj); } };
15374 $t27_28 = $t26_27.$get();
15375 $t28_29 = ratchetTree$getLeaf($t27_28, $t25_26);
15376 $t29_30 = ($t28_29 === null);
15377 if ($t29_30) {
15378 $block = 7; break;
15379 }
15380 else {
15381 $block = 8; break;
15382 }
15383 break;
15384 }
15385 case 7: {
15386 $t30_31 = errors.New('mls: blank sender leaf node');
15387 return [null, $t30_31];
15388 break;
15389 }
15390 case 8: {
15391 $t31_32 = publicMessage$authenticatedContent(pubMsg);
15392 $t32_33 = { $get() { return $t28_29.$get().signatureKey; }, $set(v) { const obj = $t28_29.$get(); obj.signatureKey = v; $t28_29.$set(obj); } };
15393 $t33_34 = $t32_33.$get();
15394 $t34_35 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15395 $t35_36 = authenticatedContent$verifySignature($t31_32, $t33_34, $t34_35);
15396 if ($t35_36) {
15397 $block = 10; break;
15398 }
15399 else {
15400 $block = 9; break;
15401 }
15402 break;
15403 }
15404 case 9: {
15405 $t36_37 = errors.New('mls: public message signature verification failed');
15406 return [null, $t36_37];
15407 break;
15408 }
15409 case 10: {
15410 $t37_38 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15411 $t38_39 = { $get() { return $t37_38.$get().cipherSuite; }, $set(v) { const obj = $t37_38.$get(); obj.cipherSuite = v; $t37_38.$set(obj); } };
15412 $t39_40 = $t38_39.$get();
15413 $t40_41 = { $get() { return g.$get().epochSecret; }, $set(v) { const obj = g.$get(); obj.epochSecret = v; g.$set(obj); } };
15414 $t41_42 = $t40_41.$get();
15415 $t42_43 = secretLabelMembership.$get();
15416 $t43_44 = CipherSuite$deriveSecret($t39_40, $t41_42, $t42_43);
15417 $t44_45 = $t43_44[0];
15418 $t45_46 = $t43_44[1];
15419 $t46_47 = ($t45_46 !== null);
15420 if ($t46_47) {
15421 $block = 11; break;
15422 }
15423 else {
15424 $block = 12; break;
15425 }
15426 break;
15427 }
15428 case 11: {
15429 return [null, $t45_46];
15430 break;
15431 }
15432 case 12: {
15433 $t47_48 = { $get() { return g.$get().groupContext; }, $set(v) { const obj = g.$get(); obj.groupContext = v; g.$set(obj); } };
15434 $t48_49 = publicMessage$verifyMembershipTag(pubMsg, $t44_45, $t47_48);
15435 if ($t48_49) {
15436 $block = 14; break;
15437 }
15438 else {
15439 $block = 13; break;
15440 }
15441 break;
15442 }
15443 case 13: {
15444 $t49_50 = errors.New('mls: membership tag verification failed');
15445 return [null, $t49_50];
15446 break;
15447 }
15448 case 14: {
15449 return [$t31_32, null];
15450 break;
15451 }
15452 }
15453 }
15454 }
15455
15456 $rt.types.getType('smesh.lol/web/common/mls.Group')?.methods?.set('verifyPublicMessage', Group$verifyPublicMessage);
15457 export function commit$marshal(c, w) {
15458 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
15459 let $block = 0;
15460 while (true) {
15461 switch ($block) {
15462 case 0: {
15463 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15464 $t0_1.$set(c);
15465 $t1_2 = $t0_1.$get();
15466 $t2_3 = { $get() { return $t1_2.$get().proposals; }, $set(v) { const obj = $t1_2.$get(); obj.proposals = v; $t1_2.$set(obj); } };
15467 $t3_4 = $t2_3.$get();
15468 $t4_5 = $rt.builtin.len($t3_4);
15469 $t5_6 = commit$marshal$1.bind(null, $t0_1);
15470 $t6_7 = Writer$writeVector(w, $t4_5, $t5_6);
15471 $t7_8 = $t0_1.$get();
15472 $t8_9 = { $get() { return $t7_8.$get().path; }, $set(v) { const obj = $t7_8.$get(); obj.path = v; $t7_8.$set(obj); } };
15473 $t9_10 = $t8_9.$get();
15474 $t10_11 = ($t9_10 !== null);
15475 $t11_12 = Writer$writeOptional(w, $t10_11);
15476 $t12_13 = $t0_1.$get();
15477 $t13_14 = { $get() { return $t12_13.$get().path; }, $set(v) { const obj = $t12_13.$get(); obj.path = v; $t12_13.$set(obj); } };
15478 $t14_15 = $t13_14.$get();
15479 $t15_16 = ($t14_15 !== null);
15480 if ($t15_16) {
15481 $block = 1; break;
15482 }
15483 else {
15484 $block = 2; break;
15485 }
15486 break;
15487 }
15488 case 1: {
15489 $t16_17 = $t0_1.$get();
15490 $t17_18 = { $get() { return $t16_17.$get().path; }, $set(v) { const obj = $t16_17.$get(); obj.path = v; $t16_17.$set(obj); } };
15491 $t18_19 = $t17_18.$get();
15492 $t19_20 = updatePath$marshal($t18_19, w);
15493 $block = 2; break;
15494 break;
15495 }
15496 case 2: {
15497 return;
15498 break;
15499 }
15500 }
15501 }
15502 }
15503
15504 function commit$marshal$1(c, w, i) {
15505 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
15506 $t0_1 = c.$get();
15507 $t1_2 = { $get() { return $t0_1.$get().proposals; }, $set(v) { const obj = $t0_1.$get(); obj.proposals = v; $t0_1.$set(obj); } };
15508 $t2_3 = $t1_2.$get();
15509 $t3_4 = $t2_3.addr(i);
15510 $t4_5 = proposalOrRef$marshal($t3_4, w);
15511 return;
15512 }
15513
15514 $rt.types.getType('smesh.lol/web/common/mls.commit')?.methods?.set('marshal', commit$marshal);
15515 export function commit$unmarshal(c, r) {
15516 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
15517 let $block = 0;
15518 while (true) {
15519 switch ($block) {
15520 case 0: {
15521 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15522 $t0_1.$set(c);
15523 $t1_2 = $t0_1.$get();
15524 $t1_2.$set($rt.builtin.cloneValue({ proposals: null, path: null }));
15525 $t2_3 = commit$unmarshal$1.bind(null, $t0_1);
15526 $t3_4 = Reader$readVector(r, $t2_3);
15527 $t4_5 = ($t3_4 !== null);
15528 if ($t4_5) {
15529 $block = 1; break;
15530 }
15531 else {
15532 $block = 2; break;
15533 }
15534 break;
15535 }
15536 case 1: {
15537 return $t3_4;
15538 break;
15539 }
15540 case 2: {
15541 $t5_6 = Reader$readOptional(r);
15542 $t6_7 = $t5_6[0];
15543 $t7_8 = $t5_6[1];
15544 if ($t7_8) {
15545 $block = 4; break;
15546 }
15547 else {
15548 $block = 3; break;
15549 }
15550 break;
15551 }
15552 case 3: {
15553 $t8_9 = errUnexpectedEOF.$get();
15554 return $t8_9;
15555 break;
15556 }
15557 case 4: {
15558 if ($t6_7) {
15559 $block = 5; break;
15560 }
15561 else {
15562 $block = 6; break;
15563 }
15564 break;
15565 }
15566 case 5: {
15567 $t9_10 = $t0_1.$get();
15568 $t10_11 = { $value: { leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, nodes: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15569 $t11_12 = { $get() { return $t9_10.$get().path; }, $set(v) { const obj = $t9_10.$get(); obj.path = v; $t9_10.$set(obj); } };
15570 $t11_12.$set($t10_11);
15571 $t12_13 = $t0_1.$get();
15572 $t13_14 = { $get() { return $t12_13.$get().path; }, $set(v) { const obj = $t12_13.$get(); obj.path = v; $t12_13.$set(obj); } };
15573 $t14_15 = $t13_14.$get();
15574 $t15_16 = updatePath$unmarshal($t14_15, r);
15575 $t16_17 = ($t15_16 !== null);
15576 if ($t16_17) {
15577 $block = 7; break;
15578 }
15579 else {
15580 $block = 6; break;
15581 }
15582 break;
15583 }
15584 case 6: {
15585 return null;
15586 break;
15587 }
15588 case 7: {
15589 return $t15_16;
15590 break;
15591 }
15592 }
15593 }
15594 }
15595
15596 function commit$unmarshal$1(c, r) {
15597 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
15598 let $block = 0;
15599 while (true) {
15600 switch ($block) {
15601 case 0: {
15602 $t0_1 = { $value: { typ: 0, proposal: null, reference: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15603 $t1_2 = proposalOrRef$unmarshal($t0_1, r);
15604 $t2_3 = ($t1_2 !== null);
15605 if ($t2_3) {
15606 $block = 1; break;
15607 }
15608 else {
15609 $block = 2; break;
15610 }
15611 break;
15612 }
15613 case 1: {
15614 return $t1_2;
15615 break;
15616 }
15617 case 2: {
15618 $t3_4 = c.$get();
15619 $t4_5 = c.$get();
15620 $t5_6 = { $get() { return $t4_5.$get().proposals; }, $set(v) { const obj = $t4_5.$get(); obj.proposals = v; $t4_5.$set(obj); } };
15621 $t6_7 = $t5_6.$get();
15622 $t7_8 = $t0_1.$get();
15623 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { typ: 0, proposal: null, reference: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
15624 $t9_10 = $t8_9.$get().addr(0);
15625 $t9_10.$set($rt.builtin.cloneValue($t7_8));
15626 $t10_11 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
15627 $t11_12 = $rt.builtin.appendSlice($t6_7, $t10_11);
15628 $t12_13 = { $get() { return $t3_4.$get().proposals; }, $set(v) { const obj = $t3_4.$get(); obj.proposals = v; $t3_4.$set(obj); } };
15629 $t12_13.$set($t11_12);
15630 return null;
15631 break;
15632 }
15633 }
15634 }
15635 }
15636
15637 $rt.types.getType('smesh.lol/web/common/mls.commit')?.methods?.set('unmarshal', commit$unmarshal);
15638 export function groupInfo$encrypt(info, joinerSecret, pskSecret) {
15639 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27;
15640 let $block = 0;
15641 while (true) {
15642 switch ($block) {
15643 case 0: {
15644 $t0_1 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15645 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
15646 $t2_3 = $t1_2.$get();
15647 $t3_4 = extractWelcomeSecret($t2_3, joinerSecret, pskSecret);
15648 $t4_5 = $t3_4[0];
15649 $t5_6 = $t3_4[1];
15650 $t6_7 = ($t5_6 !== null);
15651 if ($t6_7) {
15652 $block = 1; break;
15653 }
15654 else {
15655 $block = 2; break;
15656 }
15657 break;
15658 }
15659 case 1: {
15660 return [null, $t5_6];
15661 break;
15662 }
15663 case 2: {
15664 $t7_8 = CipherSuite$AEADNonceSize($t2_3);
15665 $t8_9 = ($t7_8 & 0xFFFF);
15666 $t9_10 = CipherSuite$expandWithLabel($t2_3, $t4_5, 'nonce', null, $t8_9);
15667 $t10_11 = $t9_10[0];
15668 $t11_12 = $t9_10[1];
15669 $t12_13 = ($t11_12 !== null);
15670 if ($t12_13) {
15671 $block = 3; break;
15672 }
15673 else {
15674 $block = 4; break;
15675 }
15676 break;
15677 }
15678 case 3: {
15679 return [null, $t11_12];
15680 break;
15681 }
15682 case 4: {
15683 $t13_14 = CipherSuite$AEADKeySize($t2_3);
15684 $t14_15 = ($t13_14 & 0xFFFF);
15685 $t15_16 = CipherSuite$expandWithLabel($t2_3, $t4_5, 'key', null, $t14_15);
15686 $t16_17 = $t15_16[0];
15687 $t17_18 = $t15_16[1];
15688 $t18_19 = ($t17_18 !== null);
15689 if ($t18_19) {
15690 $block = 5; break;
15691 }
15692 else {
15693 $block = 6; break;
15694 }
15695 break;
15696 }
15697 case 5: {
15698 return [null, $t17_18];
15699 break;
15700 }
15701 case 6: {
15702 $t19_20 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupInfo', info);
15703 $t20_21 = marshalRaw($t19_20);
15704 $t21_22 = $t20_21[0];
15705 $t22_23 = $t20_21[1];
15706 $t23_24 = ($t22_23 !== null);
15707 if ($t23_24) {
15708 $block = 7; break;
15709 }
15710 else {
15711 $block = 8; break;
15712 }
15713 break;
15714 }
15715 case 7: {
15716 return [null, $t22_23];
15717 break;
15718 }
15719 case 8: {
15720 $t24_25 = CipherSuite$aeadSeal($t2_3, $t16_17, $t10_11, $t21_22, null);
15721 $t25_26 = $t24_25[0];
15722 $t26_27 = $t24_25[1];
15723 return [$t25_26, $t26_27];
15724 break;
15725 }
15726 }
15727 }
15728 }
15729
15730 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('encrypt', groupInfo$encrypt);
15731 export function groupInfo$marshal(info, w) {
15732 let $t0_1, $t1_2, $t2_3, $t3_4;
15733 $t0_1 = groupInfo$marshalTBS(info, w);
15734 $t1_2 = { $get() { return info.$get().signature; }, $set(v) { const obj = info.$get(); obj.signature = v; info.$set(obj); } };
15735 $t2_3 = $t1_2.$get();
15736 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
15737 return;
15738 }
15739
15740 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('marshal', groupInfo$marshal);
15741 export function groupInfo$marshalTBS(info, w) {
15742 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
15743 $t0_1 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15744 $t1_2 = groupContext$marshal($t0_1, w);
15745 $t2_3 = { $get() { return info.$get().extensions; }, $set(v) { const obj = info.$get(); obj.extensions = v; info.$set(obj); } };
15746 $t3_4 = $t2_3.$get();
15747 $t4_5 = marshalExtensionVec(w, $t3_4);
15748 $t5_6 = { $get() { return info.$get().confirmationTag; }, $set(v) { const obj = info.$get(); obj.confirmationTag = v; info.$set(obj); } };
15749 $t6_7 = $t5_6.$get();
15750 $t7_8 = Writer$writeOpaqueVec(w, $t6_7);
15751 $t8_9 = { $get() { return info.$get().signer; }, $set(v) { const obj = info.$get(); obj.signer = v; info.$set(obj); } };
15752 $t9_10 = $t8_9.$get();
15753 $t10_11 = $t9_10;
15754 $t11_12 = Writer$addUint32(w, $t10_11);
15755 return;
15756 }
15757
15758 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('marshalTBS', groupInfo$marshalTBS);
15759 export function groupInfo$sign(info, signerPriv) {
15760 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
15761 let $block = 0;
15762 while (true) {
15763 switch ($block) {
15764 case 0: {
15765 $t0_1 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15766 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
15767 $t2_3 = $t1_2.$get();
15768 $t3_4 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15769 $t4_5 = groupInfo$marshalTBS(info, $t3_4);
15770 $t5_6 = Writer$bytes($t3_4);
15771 $t6_7 = $t5_6[0];
15772 $t7_8 = $t5_6[1];
15773 $t8_9 = ($t7_8 !== null);
15774 if ($t8_9) {
15775 $block = 1; break;
15776 }
15777 else {
15778 $block = 2; break;
15779 }
15780 break;
15781 }
15782 case 1: {
15783 return $t7_8;
15784 break;
15785 }
15786 case 2: {
15787 $t9_10 = CipherSuite$signWithLabel($t2_3, signerPriv, 'GroupInfoTBS', $t6_7);
15788 $t10_11 = $t9_10[0];
15789 $t11_12 = $t9_10[1];
15790 $t12_13 = ($t11_12 !== null);
15791 if ($t12_13) {
15792 $block = 3; break;
15793 }
15794 else {
15795 $block = 4; break;
15796 }
15797 break;
15798 }
15799 case 3: {
15800 return $t11_12;
15801 break;
15802 }
15803 case 4: {
15804 $t13_14 = { $get() { return info.$get().signature; }, $set(v) { const obj = info.$get(); obj.signature = v; info.$set(obj); } };
15805 $t13_14.$set($t10_11);
15806 return null;
15807 break;
15808 }
15809 }
15810 }
15811 }
15812
15813 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('sign', groupInfo$sign);
15814 export function groupInfo$unmarshal(info, r) {
15815 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
15816 let $block = 0;
15817 while (true) {
15818 switch ($block) {
15819 case 0: {
15820 info.$set($rt.builtin.cloneValue({ groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, extensions: null, confirmationTag: null, signer: 0, signature: null }));
15821 $t0_1 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15822 $t1_2 = groupContext$unmarshal($t0_1, r);
15823 $t2_3 = ($t1_2 !== null);
15824 if ($t2_3) {
15825 $block = 1; break;
15826 }
15827 else {
15828 $block = 2; break;
15829 }
15830 break;
15831 }
15832 case 1: {
15833 return $t1_2;
15834 break;
15835 }
15836 case 2: {
15837 $t3_4 = unmarshalExtensionVec(r);
15838 $t4_5 = $t3_4[0];
15839 $t5_6 = $t3_4[1];
15840 $t6_7 = ($t5_6 !== null);
15841 if ($t6_7) {
15842 $block = 3; break;
15843 }
15844 else {
15845 $block = 4; break;
15846 }
15847 break;
15848 }
15849 case 3: {
15850 return $t5_6;
15851 break;
15852 }
15853 case 4: {
15854 $t7_8 = { $get() { return info.$get().extensions; }, $set(v) { const obj = info.$get(); obj.extensions = v; info.$set(obj); } };
15855 $t7_8.$set($t4_5);
15856 $t8_9 = Reader$readOpaqueVec(r);
15857 $t9_10 = $t8_9[0];
15858 $t10_11 = { $get() { return info.$get().confirmationTag; }, $set(v) { const obj = info.$get(); obj.confirmationTag = v; info.$set(obj); } };
15859 $t10_11.$set($t9_10);
15860 $t11_12 = $t8_9[1];
15861 if ($t11_12) {
15862 $block = 6; break;
15863 }
15864 else {
15865 $block = 5; break;
15866 }
15867 break;
15868 }
15869 case 5: {
15870 $t12_13 = errUnexpectedEOF.$get();
15871 return $t12_13;
15872 break;
15873 }
15874 case 6: {
15875 $t13_14 = Reader$readUint32(r);
15876 $t14_15 = $t13_14[0];
15877 $t15_16 = $t13_14[1];
15878 if ($t15_16) {
15879 $block = 8; break;
15880 }
15881 else {
15882 $block = 7; break;
15883 }
15884 break;
15885 }
15886 case 7: {
15887 $t16_17 = errUnexpectedEOF.$get();
15888 return $t16_17;
15889 break;
15890 }
15891 case 8: {
15892 $t17_18 = $t14_15;
15893 $t18_19 = { $get() { return info.$get().signer; }, $set(v) { const obj = info.$get(); obj.signer = v; info.$set(obj); } };
15894 $t18_19.$set($t17_18);
15895 $t19_20 = Reader$readOpaqueVec(r);
15896 $t20_21 = $t19_20[0];
15897 $t21_22 = { $get() { return info.$get().signature; }, $set(v) { const obj = info.$get(); obj.signature = v; info.$set(obj); } };
15898 $t21_22.$set($t20_21);
15899 $t22_23 = $t19_20[1];
15900 if ($t22_23) {
15901 $block = 10; break;
15902 }
15903 else {
15904 $block = 9; break;
15905 }
15906 break;
15907 }
15908 case 9: {
15909 $t23_24 = errUnexpectedEOF.$get();
15910 return $t23_24;
15911 break;
15912 }
15913 case 10: {
15914 return null;
15915 break;
15916 }
15917 }
15918 }
15919 }
15920
15921 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('unmarshal', groupInfo$unmarshal);
15922 export function groupInfo$verifyConfirmationTag(info, joinerSecret, pskSecret) {
15923 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
15924 let $block = 0;
15925 while (true) {
15926 switch ($block) {
15927 case 0: {
15928 $t0_1 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15929 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
15930 $t2_3 = $t1_2.$get();
15931 $t3_4 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15932 $t4_5 = groupContext$extractEpochSecret($t3_4, joinerSecret, pskSecret);
15933 $t5_6 = $t4_5[0];
15934 $t6_7 = $t4_5[1];
15935 $t7_8 = ($t6_7 !== null);
15936 if ($t7_8) {
15937 $block = 1; break;
15938 }
15939 else {
15940 $block = 2; break;
15941 }
15942 break;
15943 }
15944 case 1: {
15945 return false;
15946 break;
15947 }
15948 case 2: {
15949 $t8_9 = secretLabelConfirm.$get();
15950 $t9_10 = CipherSuite$deriveSecret($t2_3, $t5_6, $t8_9);
15951 $t10_11 = $t9_10[0];
15952 $t11_12 = $t9_10[1];
15953 $t12_13 = ($t11_12 !== null);
15954 if ($t12_13) {
15955 $block = 3; break;
15956 }
15957 else {
15958 $block = 4; break;
15959 }
15960 break;
15961 }
15962 case 3: {
15963 return false;
15964 break;
15965 }
15966 case 4: {
15967 $t13_14 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15968 $t14_15 = { $get() { return $t13_14.$get().confirmedTranscriptHash; }, $set(v) { const obj = $t13_14.$get(); obj.confirmedTranscriptHash = v; $t13_14.$set(obj); } };
15969 $t15_16 = $t14_15.$get();
15970 $t16_17 = { $get() { return info.$get().confirmationTag; }, $set(v) { const obj = info.$get(); obj.confirmationTag = v; info.$set(obj); } };
15971 $t17_18 = $t16_17.$get();
15972 $t18_19 = CipherSuite$verifyMAC($t2_3, $t10_11, $t15_16, $t17_18);
15973 return $t18_19;
15974 break;
15975 }
15976 }
15977 }
15978 }
15979
15980 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('verifyConfirmationTag', groupInfo$verifyConfirmationTag);
15981 export function groupInfo$verifySignature(info, signerPub) {
15982 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
15983 let $block = 0;
15984 while (true) {
15985 switch ($block) {
15986 case 0: {
15987 $t0_1 = { $get() { return info.$get().groupContext; }, $set(v) { const obj = info.$get(); obj.groupContext = v; info.$set(obj); } };
15988 $t1_2 = { $get() { return $t0_1.$get().cipherSuite; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuite = v; $t0_1.$set(obj); } };
15989 $t2_3 = $t1_2.$get();
15990 $t3_4 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
15991 $t4_5 = groupInfo$marshalTBS(info, $t3_4);
15992 $t5_6 = Writer$bytes($t3_4);
15993 $t6_7 = $t5_6[0];
15994 $t7_8 = $t5_6[1];
15995 $t8_9 = ($t7_8 !== null);
15996 if ($t8_9) {
15997 $block = 1; break;
15998 }
15999 else {
16000 $block = 2; break;
16001 }
16002 break;
16003 }
16004 case 1: {
16005 return false;
16006 break;
16007 }
16008 case 2: {
16009 $t9_10 = { $get() { return info.$get().signature; }, $set(v) { const obj = info.$get(); obj.signature = v; info.$set(obj); } };
16010 $t10_11 = $t9_10.$get();
16011 $t11_12 = CipherSuite$verifyWithLabel($t2_3, signerPub, 'GroupInfoTBS', $t6_7, $t10_11);
16012 return $t11_12;
16013 break;
16014 }
16015 }
16016 }
16017 }
16018
16019 $rt.types.getType('smesh.lol/web/common/mls.groupInfo')?.methods?.set('verifySignature', groupInfo$verifySignature);
16020 export function groupSecrets$encrypt(sec, cs, initKey, encryptedGroupInfo) {
16021 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
16022 let $block = 0;
16023 while (true) {
16024 switch ($block) {
16025 case 0: {
16026 $t0_1 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupSecrets', sec);
16027 $t1_2 = marshalRaw($t0_1);
16028 $t2_3 = $t1_2[0];
16029 $t3_4 = $t1_2[1];
16030 $t4_5 = ($t3_4 !== null);
16031 if ($t4_5) {
16032 $block = 1; break;
16033 }
16034 else {
16035 $block = 2; break;
16036 }
16037 break;
16038 }
16039 case 1: {
16040 return [null, $t3_4];
16041 break;
16042 }
16043 case 2: {
16044 $t5_6 = CipherSuite$encryptWithLabel(cs, initKey, 'Welcome', encryptedGroupInfo, $t2_3);
16045 $t6_7 = $t5_6[0];
16046 $t7_8 = $t5_6[1];
16047 $t8_9 = $t5_6[2];
16048 $t9_10 = ($t8_9 !== null);
16049 if ($t9_10) {
16050 $block = 3; break;
16051 }
16052 else {
16053 $block = 4; break;
16054 }
16055 break;
16056 }
16057 case 3: {
16058 return [null, $t8_9];
16059 break;
16060 }
16061 case 4: {
16062 $t10_11 = { $value: { kemOutput: null, ciphertext: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16063 $t11_12 = { $get() { return $t10_11.$get().kemOutput; }, $set(v) { const obj = $t10_11.$get(); obj.kemOutput = v; $t10_11.$set(obj); } };
16064 $t12_13 = { $get() { return $t10_11.$get().ciphertext; }, $set(v) { const obj = $t10_11.$get(); obj.ciphertext = v; $t10_11.$set(obj); } };
16065 $t11_12.$set($t6_7);
16066 $t12_13.$set($t7_8);
16067 return [$t10_11, null];
16068 break;
16069 }
16070 }
16071 }
16072 }
16073
16074 $rt.types.getType('smesh.lol/web/common/mls.groupSecrets')?.methods?.set('encrypt', groupSecrets$encrypt);
16075 export function groupSecrets$marshal(sec, w) {
16076 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
16077 let $block = 0;
16078 while (true) {
16079 switch ($block) {
16080 case 0: {
16081 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16082 $t0_1.$set(sec);
16083 $t1_2 = $t0_1.$get();
16084 $t2_3 = { $get() { return $t1_2.$get().joinerSecret; }, $set(v) { const obj = $t1_2.$get(); obj.joinerSecret = v; $t1_2.$set(obj); } };
16085 $t3_4 = $t2_3.$get();
16086 $t4_5 = Writer$writeOpaqueVec(w, $t3_4);
16087 $t5_6 = $t0_1.$get();
16088 $t6_7 = { $get() { return $t5_6.$get().pathSecret; }, $set(v) { const obj = $t5_6.$get(); obj.pathSecret = v; $t5_6.$set(obj); } };
16089 $t7_8 = $t6_7.$get();
16090 $t8_9 = !$rt.builtin.stringEqual($t7_8, null);
16091 $t9_10 = Writer$writeOptional(w, $t8_9);
16092 $t10_11 = $t0_1.$get();
16093 $t11_12 = { $get() { return $t10_11.$get().pathSecret; }, $set(v) { const obj = $t10_11.$get(); obj.pathSecret = v; $t10_11.$set(obj); } };
16094 $t12_13 = $t11_12.$get();
16095 $t13_14 = !$rt.builtin.stringEqual($t12_13, null);
16096 if ($t13_14) {
16097 $block = 1; break;
16098 }
16099 else {
16100 $block = 2; break;
16101 }
16102 break;
16103 }
16104 case 1: {
16105 $t14_15 = $t0_1.$get();
16106 $t15_16 = { $get() { return $t14_15.$get().pathSecret; }, $set(v) { const obj = $t14_15.$get(); obj.pathSecret = v; $t14_15.$set(obj); } };
16107 $t16_17 = $t15_16.$get();
16108 $t17_18 = Writer$writeOpaqueVec(w, $t16_17);
16109 $block = 2; break;
16110 break;
16111 }
16112 case 2: {
16113 $t18_19 = $t0_1.$get();
16114 $t19_20 = { $get() { return $t18_19.$get().psks; }, $set(v) { const obj = $t18_19.$get(); obj.psks = v; $t18_19.$set(obj); } };
16115 $t20_21 = $t19_20.$get();
16116 $t21_22 = $rt.builtin.len($t20_21);
16117 $t22_23 = groupSecrets$marshal$1.bind(null, $t0_1);
16118 $t23_24 = Writer$writeVector(w, $t21_22, $t22_23);
16119 return;
16120 break;
16121 }
16122 }
16123 }
16124 }
16125
16126 function groupSecrets$marshal$1(sec, w, i) {
16127 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
16128 $t0_1 = sec.$get();
16129 $t1_2 = { $get() { return $t0_1.$get().psks; }, $set(v) { const obj = $t0_1.$get(); obj.psks = v; $t0_1.$set(obj); } };
16130 $t2_3 = $t1_2.$get();
16131 $t3_4 = $t2_3.addr(i);
16132 $t4_5 = preSharedKeyID$marshal($t3_4, w);
16133 return;
16134 }
16135
16136 $rt.types.getType('smesh.lol/web/common/mls.groupSecrets')?.methods?.set('marshal', groupSecrets$marshal);
16137 export function groupSecrets$unmarshal(sec, r) {
16138 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
16139 let $block = 0;
16140 while (true) {
16141 switch ($block) {
16142 case 0: {
16143 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16144 $t0_1.$set(sec);
16145 $t1_2 = $t0_1.$get();
16146 $t1_2.$set($rt.builtin.cloneValue({ joinerSecret: null, pathSecret: null, psks: null }));
16147 $t2_3 = $t0_1.$get();
16148 $t3_4 = Reader$readOpaqueVec(r);
16149 $t4_5 = $t3_4[0];
16150 $t5_6 = { $get() { return $t2_3.$get().joinerSecret; }, $set(v) { const obj = $t2_3.$get(); obj.joinerSecret = v; $t2_3.$set(obj); } };
16151 $t5_6.$set($t4_5);
16152 $t6_7 = $t3_4[1];
16153 if ($t6_7) {
16154 $block = 2; break;
16155 }
16156 else {
16157 $block = 1; break;
16158 }
16159 break;
16160 }
16161 case 1: {
16162 $t7_8 = errUnexpectedEOF.$get();
16163 return $t7_8;
16164 break;
16165 }
16166 case 2: {
16167 $t8_9 = Reader$readOptional(r);
16168 $t9_10 = $t8_9[0];
16169 $t10_11 = $t8_9[1];
16170 if ($t10_11) {
16171 $block = 4; break;
16172 }
16173 else {
16174 $block = 3; break;
16175 }
16176 break;
16177 }
16178 case 3: {
16179 $t11_12 = errUnexpectedEOF.$get();
16180 return $t11_12;
16181 break;
16182 }
16183 case 4: {
16184 if ($t9_10) {
16185 $block = 5; break;
16186 }
16187 else {
16188 $block = 6; break;
16189 }
16190 break;
16191 }
16192 case 5: {
16193 $t12_13 = $t0_1.$get();
16194 $t13_14 = Reader$readOpaqueVec(r);
16195 $t14_15 = $t13_14[0];
16196 $t15_16 = { $get() { return $t12_13.$get().pathSecret; }, $set(v) { const obj = $t12_13.$get(); obj.pathSecret = v; $t12_13.$set(obj); } };
16197 $t15_16.$set($t14_15);
16198 $t16_17 = $t13_14[1];
16199 if ($t16_17) {
16200 $block = 6; break;
16201 }
16202 else {
16203 $block = 7; break;
16204 }
16205 break;
16206 }
16207 case 6: {
16208 $t17_18 = groupSecrets$unmarshal$1.bind(null, $t0_1);
16209 $t18_19 = Reader$readVector(r, $t17_18);
16210 return $t18_19;
16211 break;
16212 }
16213 case 7: {
16214 $t19_20 = errUnexpectedEOF.$get();
16215 return $t19_20;
16216 break;
16217 }
16218 }
16219 }
16220 }
16221
16222 function groupSecrets$unmarshal$1(sec, r) {
16223 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
16224 let $block = 0;
16225 while (true) {
16226 switch ($block) {
16227 case 0: {
16228 $t0_1 = { $value: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16229 $t1_2 = preSharedKeyID$unmarshal($t0_1, r);
16230 $t2_3 = ($t1_2 !== null);
16231 if ($t2_3) {
16232 $block = 1; break;
16233 }
16234 else {
16235 $block = 2; break;
16236 }
16237 break;
16238 }
16239 case 1: {
16240 return $t1_2;
16241 break;
16242 }
16243 case 2: {
16244 $t3_4 = sec.$get();
16245 $t4_5 = sec.$get();
16246 $t5_6 = { $get() { return $t4_5.$get().psks; }, $set(v) { const obj = $t4_5.$get(); obj.psks = v; $t4_5.$set(obj); } };
16247 $t6_7 = $t5_6.$get();
16248 $t7_8 = $t0_1.$get();
16249 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
16250 $t9_10 = $t8_9.$get().addr(0);
16251 $t9_10.$set($rt.builtin.cloneValue($t7_8));
16252 $t10_11 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
16253 $t11_12 = $rt.builtin.appendSlice($t6_7, $t10_11);
16254 $t12_13 = { $get() { return $t3_4.$get().psks; }, $set(v) { const obj = $t3_4.$get(); obj.psks = v; $t3_4.$set(obj); } };
16255 $t12_13.$set($t11_12);
16256 return null;
16257 break;
16258 }
16259 }
16260 }
16261 }
16262
16263 $rt.types.getType('smesh.lol/web/common/mls.groupSecrets')?.methods?.set('unmarshal', groupSecrets$unmarshal);
16264 export function groupSecrets$verifySingleReinitOrBranchPSK(sec) {
16265 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
16266 let $block = 0;
16267 while (true) {
16268 switch ($block) {
16269 case 0: {
16270 $t0_1 = { $get() { return sec.$get().psks; }, $set(v) { const obj = sec.$get(); obj.psks = v; sec.$set(obj); } };
16271 $t1_2 = $t0_1.$get();
16272 $t2_3 = $rt.builtin.len($t1_2);
16273 $t3_4 = 0;
16274 $t4_5 = -1;
16275 $block = 1; break;
16276 break;
16277 }
16278 case 1: {
16279 $t5_6 = ($t4_5 + 1);
16280 $t6_7 = ($t5_6 < $t2_3);
16281 if ($t6_7) {
16282 $block = 2; break;
16283 }
16284 else {
16285 $block = 3; break;
16286 }
16287 break;
16288 }
16289 case 2: {
16290 $t7_8 = $t1_2.addr($t5_6);
16291 $t8_9 = $t7_8.$get();
16292 $t9_10 = { $value: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16293 $t9_10.$set($rt.builtin.cloneValue($t8_9));
16294 $t10_11 = { $get() { return $t9_10.$get().pskType; }, $set(v) { const obj = $t9_10.$get(); obj.pskType = v; $t9_10.$set(obj); } };
16295 $t11_12 = $t10_11.$get();
16296 $t12_13 = ($t11_12 !== 2);
16297 if ($t12_13) {
16298 let $phi0 = $t3_4;
16299 let $phi1 = $t5_6;
16300 $t3_4 = $phi0;
16301 $t4_5 = $phi1;
16302 $block = 1; break;
16303 }
16304 else {
16305 $block = 4; break;
16306 }
16307 break;
16308 }
16309 case 3: {
16310 $t13_14 = ($t3_4 <= 1);
16311 return $t13_14;
16312 break;
16313 }
16314 case 4: {
16315 $t14_15 = { $get() { return $t9_10.$get().usage; }, $set(v) { const obj = $t9_10.$get(); obj.usage = v; $t9_10.$set(obj); } };
16316 $t15_16 = $t14_15.$get();
16317 $t16_17 = ($t15_16 === 2);
16318 if ($t16_17) {
16319 $block = 5; break;
16320 }
16321 else {
16322 $block = 6; break;
16323 }
16324 break;
16325 }
16326 case 5: {
16327 $t17_18 = ($t3_4 + 1);
16328 $t3_4 = $t17_18;
16329 $t4_5 = $t5_6;
16330 $block = 1; break;
16331 break;
16332 }
16333 case 6: {
16334 $t18_19 = ($t15_16 === 3);
16335 if ($t18_19) {
16336 $block = 5; break;
16337 }
16338 else {
16339 let $phi0 = $t3_4;
16340 let $phi1 = $t5_6;
16341 $t3_4 = $phi0;
16342 $t4_5 = $phi1;
16343 $block = 1; break;
16344 }
16345 break;
16346 }
16347 }
16348 }
16349 }
16350
16351 $rt.types.getType('smesh.lol/web/common/mls.groupSecrets')?.methods?.set('verifySingleReinitOrBranchPSK', groupSecrets$verifySingleReinitOrBranchPSK);
16352 export function encryptedGroupSecrets$marshal(sec, w) {
16353 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
16354 $t0_1 = { $get() { return sec.$get().newMember; }, $set(v) { const obj = sec.$get(); obj.newMember = v; sec.$set(obj); } };
16355 $t1_2 = $t0_1.$get();
16356 $t2_3 = $t1_2;
16357 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
16358 $t4_5 = { $get() { return sec.$get().encryptedGroupSecrets; }, $set(v) { const obj = sec.$get(); obj.encryptedGroupSecrets = v; sec.$set(obj); } };
16359 $t5_6 = hpkeCiphertext$marshal($t4_5, w);
16360 return;
16361 }
16362
16363 $rt.types.getType('smesh.lol/web/common/mls.encryptedGroupSecrets')?.methods?.set('marshal', encryptedGroupSecrets$marshal);
16364 export function encryptedGroupSecrets$unmarshal(sec, r) {
16365 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
16366 let $block = 0;
16367 while (true) {
16368 switch ($block) {
16369 case 0: {
16370 sec.$set($rt.builtin.cloneValue({ newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }));
16371 $t0_1 = Reader$readOpaqueVec(r);
16372 $t1_2 = $t0_1[0];
16373 $t2_3 = { $get() { return sec.$get().newMember; }, $set(v) { const obj = sec.$get(); obj.newMember = v; sec.$set(obj); } };
16374 $t3_4 = $t1_2;
16375 $t2_3.$set($t3_4);
16376 $t4_5 = $t0_1[1];
16377 if ($t4_5) {
16378 $block = 2; break;
16379 }
16380 else {
16381 $block = 1; break;
16382 }
16383 break;
16384 }
16385 case 1: {
16386 $t5_6 = errUnexpectedEOF.$get();
16387 return $t5_6;
16388 break;
16389 }
16390 case 2: {
16391 $t6_7 = { $get() { return sec.$get().encryptedGroupSecrets; }, $set(v) { const obj = sec.$get(); obj.encryptedGroupSecrets = v; sec.$set(obj); } };
16392 $t7_8 = hpkeCiphertext$unmarshal($t6_7, r);
16393 return $t7_8;
16394 break;
16395 }
16396 }
16397 }
16398 }
16399
16400 $rt.types.getType('smesh.lol/web/common/mls.encryptedGroupSecrets')?.methods?.set('unmarshal', encryptedGroupSecrets$unmarshal);
16401 export function Welcome$Bytes(w) {
16402 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
16403 let $block = 0;
16404 while (true) {
16405 switch ($block) {
16406 case 0: {
16407 $t0_1 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16408 $t1_2 = { $get() { return $t0_1.$get().version; }, $set(v) { const obj = $t0_1.$get(); obj.version = v; $t0_1.$set(obj); } };
16409 $t2_3 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
16410 $t3_4 = { $get() { return $t0_1.$get().welcome; }, $set(v) { const obj = $t0_1.$get(); obj.welcome = v; $t0_1.$set(obj); } };
16411 $t1_2.$set(1);
16412 $t2_3.$set(3);
16413 $t3_4.$set(w);
16414 $t4_5 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t0_1);
16415 $t5_6 = marshalRaw($t4_5);
16416 $t6_7 = $t5_6[0];
16417 $t7_8 = $t5_6[1];
16418 $t8_9 = ($t7_8 !== null);
16419 if ($t8_9) {
16420 $block = 1; break;
16421 }
16422 else {
16423 $block = 2; break;
16424 }
16425 break;
16426 }
16427 case 1: {
16428 $t9_10 = $rt.types.makeInterface('string', 'mls: failed to marshal welcome');
16429 $rt.runtime.panic($t9_10);
16430 break;
16431 }
16432 case 2: {
16433 return $t6_7;
16434 break;
16435 }
16436 }
16437 }
16438 }
16439
16440 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('Bytes', Welcome$Bytes);
16441 export function Welcome$NewMembers(w) {
16442 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
16443 let $block = 0;
16444 while (true) {
16445 switch ($block) {
16446 case 0: {
16447 $t0_1 = { $get() { return w.$get().secrets; }, $set(v) { const obj = w.$get(); obj.secrets = v; w.$set(obj); } };
16448 $t1_2 = $t0_1.$get();
16449 $t2_3 = $rt.builtin.len($t1_2);
16450 $t3_4 = $rt.builtin.makeSlice($t2_3, $t2_3, null);
16451 $t4_5 = { $get() { return w.$get().secrets; }, $set(v) { const obj = w.$get(); obj.secrets = v; w.$set(obj); } };
16452 $t5_6 = $t4_5.$get();
16453 $t6_7 = $rt.builtin.len($t5_6);
16454 $t7_8 = -1;
16455 $block = 1; break;
16456 break;
16457 }
16458 case 1: {
16459 $t8_9 = ($t7_8 + 1);
16460 $t9_10 = ($t8_9 < $t6_7);
16461 if ($t9_10) {
16462 $block = 2; break;
16463 }
16464 else {
16465 $block = 3; break;
16466 }
16467 break;
16468 }
16469 case 2: {
16470 $t10_11 = $t5_6.addr($t8_9);
16471 $t11_12 = $t10_11.$get();
16472 $t12_13 = { $value: { newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16473 $t12_13.$set($rt.builtin.cloneValue($t11_12));
16474 $t13_14 = { $get() { return $t12_13.$get().newMember; }, $set(v) { const obj = $t12_13.$get(); obj.newMember = v; $t12_13.$set(obj); } };
16475 $t14_15 = $t13_14.$get();
16476 $t15_16 = $t3_4.addr($t8_9);
16477 $t15_16.$set($t14_15);
16478 $t7_8 = $t8_9;
16479 $block = 1; break;
16480 break;
16481 }
16482 case 3: {
16483 return $t3_4;
16484 break;
16485 }
16486 }
16487 }
16488 }
16489
16490 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('NewMembers', Welcome$NewMembers);
16491 export function Welcome$decryptGroupInfo(w, joinerSecret, pskSecret) {
16492 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28;
16493 let $block = 0;
16494 while (true) {
16495 switch ($block) {
16496 case 0: {
16497 $t0_1 = { $get() { return w.$get().cipherSuite; }, $set(v) { const obj = w.$get(); obj.cipherSuite = v; w.$set(obj); } };
16498 $t1_2 = $t0_1.$get();
16499 $t2_3 = extractWelcomeSecret($t1_2, joinerSecret, pskSecret);
16500 $t3_4 = $t2_3[0];
16501 $t4_5 = $t2_3[1];
16502 $t5_6 = ($t4_5 !== null);
16503 if ($t5_6) {
16504 $block = 1; break;
16505 }
16506 else {
16507 $block = 2; break;
16508 }
16509 break;
16510 }
16511 case 1: {
16512 return [null, $t4_5];
16513 break;
16514 }
16515 case 2: {
16516 $t6_7 = CipherSuite$AEADNonceSize($t1_2);
16517 $t7_8 = ($t6_7 & 0xFFFF);
16518 $t8_9 = CipherSuite$expandWithLabel($t1_2, $t3_4, 'nonce', null, $t7_8);
16519 $t9_10 = $t8_9[0];
16520 $t10_11 = $t8_9[1];
16521 $t11_12 = ($t10_11 !== null);
16522 if ($t11_12) {
16523 $block = 3; break;
16524 }
16525 else {
16526 $block = 4; break;
16527 }
16528 break;
16529 }
16530 case 3: {
16531 return [null, $t10_11];
16532 break;
16533 }
16534 case 4: {
16535 $t12_13 = CipherSuite$AEADKeySize($t1_2);
16536 $t13_14 = ($t12_13 & 0xFFFF);
16537 $t14_15 = CipherSuite$expandWithLabel($t1_2, $t3_4, 'key', null, $t13_14);
16538 $t15_16 = $t14_15[0];
16539 $t16_17 = $t14_15[1];
16540 $t17_18 = ($t16_17 !== null);
16541 if ($t17_18) {
16542 $block = 5; break;
16543 }
16544 else {
16545 $block = 6; break;
16546 }
16547 break;
16548 }
16549 case 5: {
16550 return [null, $t16_17];
16551 break;
16552 }
16553 case 6: {
16554 $t18_19 = { $get() { return w.$get().encryptedGroupInfo; }, $set(v) { const obj = w.$get(); obj.encryptedGroupInfo = v; w.$set(obj); } };
16555 $t19_20 = $t18_19.$get();
16556 $t20_21 = CipherSuite$aeadOpen($t1_2, $t15_16, $t9_10, $t19_20, null);
16557 $t21_22 = $t20_21[0];
16558 $t22_23 = $t20_21[1];
16559 $t23_24 = ($t22_23 !== null);
16560 if ($t23_24) {
16561 $block = 7; break;
16562 }
16563 else {
16564 $block = 8; break;
16565 }
16566 break;
16567 }
16568 case 7: {
16569 return [null, $t22_23];
16570 break;
16571 }
16572 case 8: {
16573 $t24_25 = { $value: { groupContext: { version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }, extensions: null, confirmationTag: null, signer: 0, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16574 $t25_26 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupInfo', $t24_25);
16575 $t26_27 = unmarshalRaw($t21_22, $t25_26);
16576 $t27_28 = ($t26_27 !== null);
16577 if ($t27_28) {
16578 $block = 9; break;
16579 }
16580 else {
16581 $block = 10; break;
16582 }
16583 break;
16584 }
16585 case 9: {
16586 return [null, $t26_27];
16587 break;
16588 }
16589 case 10: {
16590 return [$t24_25, null];
16591 break;
16592 }
16593 }
16594 }
16595 }
16596
16597 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('decryptGroupInfo', Welcome$decryptGroupInfo);
16598 export function Welcome$decryptGroupSecrets(w, ref, initKeyPriv) {
16599 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
16600 let $block = 0;
16601 while (true) {
16602 switch ($block) {
16603 case 0: {
16604 $t0_1 = { $get() { return w.$get().cipherSuite; }, $set(v) { const obj = w.$get(); obj.cipherSuite = v; w.$set(obj); } };
16605 $t1_2 = $t0_1.$get();
16606 $t2_3 = Welcome$findSecret(w, ref);
16607 $t3_4 = ($t2_3 === null);
16608 if ($t3_4) {
16609 $block = 1; break;
16610 }
16611 else {
16612 $block = 2; break;
16613 }
16614 break;
16615 }
16616 case 1: {
16617 $t4_5 = errGroupSecretsNotFound.$get();
16618 return [null, $t4_5];
16619 break;
16620 }
16621 case 2: {
16622 $t5_6 = { $get() { return w.$get().encryptedGroupInfo; }, $set(v) { const obj = w.$get(); obj.encryptedGroupInfo = v; w.$set(obj); } };
16623 $t6_7 = $t5_6.$get();
16624 $t7_8 = { $get() { return $t2_3.$get().encryptedGroupSecrets; }, $set(v) { const obj = $t2_3.$get(); obj.encryptedGroupSecrets = v; $t2_3.$set(obj); } };
16625 $t8_9 = { $get() { return $t7_8.$get().kemOutput; }, $set(v) { const obj = $t7_8.$get(); obj.kemOutput = v; $t7_8.$set(obj); } };
16626 $t9_10 = $t8_9.$get();
16627 $t10_11 = { $get() { return $t2_3.$get().encryptedGroupSecrets; }, $set(v) { const obj = $t2_3.$get(); obj.encryptedGroupSecrets = v; $t2_3.$set(obj); } };
16628 $t11_12 = { $get() { return $t10_11.$get().ciphertext; }, $set(v) { const obj = $t10_11.$get(); obj.ciphertext = v; $t10_11.$set(obj); } };
16629 $t12_13 = $t11_12.$get();
16630 $t13_14 = CipherSuite$decryptWithLabel($t1_2, initKeyPriv, 'Welcome', $t6_7, $t9_10, $t12_13);
16631 $t14_15 = $t13_14[0];
16632 $t15_16 = $t13_14[1];
16633 $t16_17 = ($t15_16 !== null);
16634 if ($t16_17) {
16635 $block = 3; break;
16636 }
16637 else {
16638 $block = 4; break;
16639 }
16640 break;
16641 }
16642 case 3: {
16643 return [null, $t15_16];
16644 break;
16645 }
16646 case 4: {
16647 $t17_18 = { $value: { joinerSecret: null, pathSecret: null, psks: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16648 $t18_19 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupSecrets', $t17_18);
16649 $t19_20 = unmarshalRaw($t14_15, $t18_19);
16650 $t20_21 = ($t19_20 !== null);
16651 if ($t20_21) {
16652 $block = 5; break;
16653 }
16654 else {
16655 $block = 6; break;
16656 }
16657 break;
16658 }
16659 case 5: {
16660 return [null, $t19_20];
16661 break;
16662 }
16663 case 6: {
16664 return [$t17_18, null];
16665 break;
16666 }
16667 }
16668 }
16669 }
16670
16671 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('decryptGroupSecrets', Welcome$decryptGroupSecrets);
16672 export function Welcome$findSecret(w, ref) {
16673 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
16674 let $block = 0;
16675 while (true) {
16676 switch ($block) {
16677 case 0: {
16678 $t0_1 = { $get() { return w.$get().secrets; }, $set(v) { const obj = w.$get(); obj.secrets = v; w.$set(obj); } };
16679 $t1_2 = $t0_1.$get();
16680 $t2_3 = $rt.builtin.len($t1_2);
16681 $t3_4 = -1;
16682 $block = 1; break;
16683 break;
16684 }
16685 case 1: {
16686 $t4_5 = ($t3_4 + 1);
16687 $t5_6 = ($t4_5 < $t2_3);
16688 if ($t5_6) {
16689 $block = 2; break;
16690 }
16691 else {
16692 $block = 3; break;
16693 }
16694 break;
16695 }
16696 case 2: {
16697 $t6_7 = $t1_2.addr($t4_5);
16698 $t7_8 = $t6_7.$get();
16699 $t8_9 = { $value: { newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16700 $t8_9.$set($rt.builtin.cloneValue($t7_8));
16701 $t9_10 = { $get() { return $t8_9.$get().newMember; }, $set(v) { const obj = $t8_9.$get(); obj.newMember = v; $t8_9.$set(obj); } };
16702 $t10_11 = $t9_10.$get();
16703 $t11_12 = KeyPackageRef$equal($t10_11, ref);
16704 if ($t11_12) {
16705 $block = 4; break;
16706 }
16707 else {
16708 $t3_4 = $t4_5;
16709 $block = 1; break;
16710 }
16711 break;
16712 }
16713 case 3: {
16714 return null;
16715 break;
16716 }
16717 case 4: {
16718 $t12_13 = { $get() { return w.$get().secrets; }, $set(v) { const obj = w.$get(); obj.secrets = v; w.$set(obj); } };
16719 $t13_14 = $t12_13.$get();
16720 $t14_15 = $t13_14.addr($t4_5);
16721 return $t14_15;
16722 break;
16723 }
16724 }
16725 }
16726 }
16727
16728 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('findSecret', Welcome$findSecret);
16729 export function Welcome$marshal(w, wr) {
16730 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
16731 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16732 $t0_1.$set(w);
16733 $t1_2 = $t0_1.$get();
16734 $t2_3 = { $get() { return $t1_2.$get().cipherSuite; }, $set(v) { const obj = $t1_2.$get(); obj.cipherSuite = v; $t1_2.$set(obj); } };
16735 $t3_4 = $t2_3.$get();
16736 $t4_5 = $t3_4;
16737 $t5_6 = Writer$addUint16(wr, $t4_5);
16738 $t6_7 = $t0_1.$get();
16739 $t7_8 = { $get() { return $t6_7.$get().secrets; }, $set(v) { const obj = $t6_7.$get(); obj.secrets = v; $t6_7.$set(obj); } };
16740 $t8_9 = $t7_8.$get();
16741 $t9_10 = $rt.builtin.len($t8_9);
16742 $t10_11 = Welcome$marshal$1.bind(null, $t0_1);
16743 $t11_12 = Writer$writeVector(wr, $t9_10, $t10_11);
16744 $t12_13 = $t0_1.$get();
16745 $t13_14 = { $get() { return $t12_13.$get().encryptedGroupInfo; }, $set(v) { const obj = $t12_13.$get(); obj.encryptedGroupInfo = v; $t12_13.$set(obj); } };
16746 $t14_15 = $t13_14.$get();
16747 $t15_16 = Writer$writeOpaqueVec(wr, $t14_15);
16748 return;
16749 }
16750
16751 function Welcome$marshal$1(w, wr, i) {
16752 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
16753 $t0_1 = w.$get();
16754 $t1_2 = { $get() { return $t0_1.$get().secrets; }, $set(v) { const obj = $t0_1.$get(); obj.secrets = v; $t0_1.$set(obj); } };
16755 $t2_3 = $t1_2.$get();
16756 $t3_4 = $t2_3.addr(i);
16757 $t4_5 = encryptedGroupSecrets$marshal($t3_4, wr);
16758 return;
16759 }
16760
16761 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('marshal', Welcome$marshal);
16762 export function Welcome$unmarshal(w, r) {
16763 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
16764 let $block = 0;
16765 while (true) {
16766 switch ($block) {
16767 case 0: {
16768 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16769 $t0_1.$set(w);
16770 $t1_2 = $t0_1.$get();
16771 $t1_2.$set($rt.builtin.cloneValue({ cipherSuite: 0, secrets: null, encryptedGroupInfo: null }));
16772 $t2_3 = Reader$readUint16(r);
16773 $t3_4 = $t2_3[0];
16774 $t4_5 = $t2_3[1];
16775 if ($t4_5) {
16776 $block = 2; break;
16777 }
16778 else {
16779 $block = 1; break;
16780 }
16781 break;
16782 }
16783 case 1: {
16784 $t5_6 = errUnexpectedEOF.$get();
16785 return $t5_6;
16786 break;
16787 }
16788 case 2: {
16789 $t6_7 = $t0_1.$get();
16790 $t7_8 = $t3_4;
16791 $t8_9 = { $get() { return $t6_7.$get().cipherSuite; }, $set(v) { const obj = $t6_7.$get(); obj.cipherSuite = v; $t6_7.$set(obj); } };
16792 $t8_9.$set($t7_8);
16793 $t9_10 = Welcome$unmarshal$1.bind(null, $t0_1);
16794 $t10_11 = Reader$readVector(r, $t9_10);
16795 $t11_12 = ($t10_11 !== null);
16796 if ($t11_12) {
16797 $block = 3; break;
16798 }
16799 else {
16800 $block = 4; break;
16801 }
16802 break;
16803 }
16804 case 3: {
16805 return $t10_11;
16806 break;
16807 }
16808 case 4: {
16809 $t12_13 = $t0_1.$get();
16810 $t13_14 = Reader$readOpaqueVec(r);
16811 $t14_15 = $t13_14[0];
16812 $t15_16 = { $get() { return $t12_13.$get().encryptedGroupInfo; }, $set(v) { const obj = $t12_13.$get(); obj.encryptedGroupInfo = v; $t12_13.$set(obj); } };
16813 $t15_16.$set($t14_15);
16814 $t16_17 = $t13_14[1];
16815 if ($t16_17) {
16816 $block = 6; break;
16817 }
16818 else {
16819 $block = 5; break;
16820 }
16821 break;
16822 }
16823 case 5: {
16824 $t17_18 = errUnexpectedEOF.$get();
16825 return $t17_18;
16826 break;
16827 }
16828 case 6: {
16829 return null;
16830 break;
16831 }
16832 }
16833 }
16834 }
16835
16836 function Welcome$unmarshal$1(w, r) {
16837 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
16838 let $block = 0;
16839 while (true) {
16840 switch ($block) {
16841 case 0: {
16842 $t0_1 = { $value: { newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16843 $t1_2 = encryptedGroupSecrets$unmarshal($t0_1, r);
16844 $t2_3 = ($t1_2 !== null);
16845 if ($t2_3) {
16846 $block = 1; break;
16847 }
16848 else {
16849 $block = 2; break;
16850 }
16851 break;
16852 }
16853 case 1: {
16854 return $t1_2;
16855 break;
16856 }
16857 case 2: {
16858 $t3_4 = w.$get();
16859 $t4_5 = w.$get();
16860 $t5_6 = { $get() { return $t4_5.$get().secrets; }, $set(v) { const obj = $t4_5.$get(); obj.secrets = v; $t4_5.$set(obj); } };
16861 $t6_7 = $t5_6.$get();
16862 $t7_8 = $t0_1.$get();
16863 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { newMember: null, encryptedGroupSecrets: { kemOutput: null, ciphertext: null } }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
16864 $t9_10 = $t8_9.$get().addr(0);
16865 $t9_10.$set($rt.builtin.cloneValue($t7_8));
16866 $t10_11 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
16867 $t11_12 = $rt.builtin.appendSlice($t6_7, $t10_11);
16868 $t12_13 = { $get() { return $t3_4.$get().secrets; }, $set(v) { const obj = $t3_4.$get(); obj.secrets = v; $t3_4.$set(obj); } };
16869 $t12_13.$set($t11_12);
16870 return null;
16871 break;
16872 }
16873 }
16874 }
16875 }
16876
16877 $rt.types.getType('smesh.lol/web/common/mls.Welcome')?.methods?.set('unmarshal', Welcome$unmarshal);
16878 export function KeyPackage$Bytes(pkg) {
16879 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
16880 let $block = 0;
16881 while (true) {
16882 switch ($block) {
16883 case 0: {
16884 $t0_1 = { $value: { version: 0, wireFormat: 0, publicMessage: null, privateMessage: null, welcome: null, groupInfo: null, keyPackage: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16885 $t1_2 = { $get() { return $t0_1.$get().version; }, $set(v) { const obj = $t0_1.$get(); obj.version = v; $t0_1.$set(obj); } };
16886 $t2_3 = { $get() { return $t0_1.$get().wireFormat; }, $set(v) { const obj = $t0_1.$get(); obj.wireFormat = v; $t0_1.$set(obj); } };
16887 $t3_4 = { $get() { return $t0_1.$get().keyPackage; }, $set(v) { const obj = $t0_1.$get(); obj.keyPackage = v; $t0_1.$set(obj); } };
16888 $t1_2.$set(1);
16889 $t2_3.$set(5);
16890 $t3_4.$set(pkg);
16891 $t4_5 = $rt.types.makeInterface('*smesh.lol/web/common/mls.mlsMessage', $t0_1);
16892 $t5_6 = marshalRaw($t4_5);
16893 $t6_7 = $t5_6[0];
16894 $t7_8 = $t5_6[1];
16895 $t8_9 = ($t7_8 !== null);
16896 if ($t8_9) {
16897 $block = 1; break;
16898 }
16899 else {
16900 $block = 2; break;
16901 }
16902 break;
16903 }
16904 case 1: {
16905 $t9_10 = $rt.types.makeInterface('string', 'mls: failed to marshal key package');
16906 $rt.runtime.panic($t9_10);
16907 break;
16908 }
16909 case 2: {
16910 return $t6_7;
16911 break;
16912 }
16913 }
16914 }
16915 }
16916
16917 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('Bytes', KeyPackage$Bytes);
16918 export function KeyPackage$GenerateRef(pkg) {
16919 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
16920 let $block = 0;
16921 while (true) {
16922 switch ($block) {
16923 case 0: {
16924 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16925 $t1_2 = KeyPackage$marshal(pkg, $t0_1);
16926 $t2_3 = Writer$bytes($t0_1);
16927 $t3_4 = $t2_3[0];
16928 $t4_5 = $t2_3[1];
16929 $t5_6 = ($t4_5 !== null);
16930 if ($t5_6) {
16931 $block = 1; break;
16932 }
16933 else {
16934 $block = 2; break;
16935 }
16936 break;
16937 }
16938 case 1: {
16939 return [null, $t4_5];
16940 break;
16941 }
16942 case 2: {
16943 $t6_7 = { $get() { return pkg.$get().cipherSuite; }, $set(v) { const obj = pkg.$get(); obj.cipherSuite = v; pkg.$set(obj); } };
16944 $t7_8 = $t6_7.$get();
16945 $t8_9 = CipherSuite$refHash($t7_8, 'MLS 1.0 KeyPackage Reference', $t3_4);
16946 $t9_10 = $t8_9[0];
16947 $t10_11 = $t8_9[1];
16948 $t11_12 = ($t10_11 !== null);
16949 if ($t11_12) {
16950 $block = 3; break;
16951 }
16952 else {
16953 $block = 4; break;
16954 }
16955 break;
16956 }
16957 case 3: {
16958 return [null, $t10_11];
16959 break;
16960 }
16961 case 4: {
16962 $t12_13 = $t9_10;
16963 return [$t12_13, null];
16964 break;
16965 }
16966 }
16967 }
16968 }
16969
16970 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('GenerateRef', KeyPackage$GenerateRef);
16971 export function KeyPackage$RawBytes(pkg) {
16972 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
16973 let $block = 0;
16974 while (true) {
16975 switch ($block) {
16976 case 0: {
16977 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16978 $t1_2 = KeyPackage$marshal(pkg, $t0_1);
16979 $t2_3 = Writer$bytes($t0_1);
16980 $t3_4 = $t2_3[0];
16981 $t4_5 = $t2_3[1];
16982 $t5_6 = ($t4_5 !== null);
16983 if ($t5_6) {
16984 $block = 1; break;
16985 }
16986 else {
16987 $block = 2; break;
16988 }
16989 break;
16990 }
16991 case 1: {
16992 $t6_7 = $rt.types.makeInterface('string', 'mls: failed to marshal raw key package');
16993 $rt.runtime.panic($t6_7);
16994 break;
16995 }
16996 case 2: {
16997 return $t3_4;
16998 break;
16999 }
17000 }
17001 }
17002 }
17003
17004 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('RawBytes', KeyPackage$RawBytes);
17005 export function KeyPackage$marshal(pkg, w) {
17006 let $t0_1, $t1_2, $t2_3, $t3_4;
17007 $t0_1 = KeyPackage$marshalTBS(pkg, w);
17008 $t1_2 = { $get() { return pkg.$get().signature; }, $set(v) { const obj = pkg.$get(); obj.signature = v; pkg.$set(obj); } };
17009 $t2_3 = $t1_2.$get();
17010 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
17011 return;
17012 }
17013
17014 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('marshal', KeyPackage$marshal);
17015 export function KeyPackage$marshalTBS(pkg, w) {
17016 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
17017 $t0_1 = { $get() { return pkg.$get().version; }, $set(v) { const obj = pkg.$get(); obj.version = v; pkg.$set(obj); } };
17018 $t1_2 = $t0_1.$get();
17019 $t2_3 = $t1_2;
17020 $t3_4 = Writer$addUint16(w, $t2_3);
17021 $t4_5 = { $get() { return pkg.$get().cipherSuite; }, $set(v) { const obj = pkg.$get(); obj.cipherSuite = v; pkg.$set(obj); } };
17022 $t5_6 = $t4_5.$get();
17023 $t6_7 = $t5_6;
17024 $t7_8 = Writer$addUint16(w, $t6_7);
17025 $t8_9 = { $get() { return pkg.$get().initKey; }, $set(v) { const obj = pkg.$get(); obj.initKey = v; pkg.$set(obj); } };
17026 $t9_10 = $t8_9.$get();
17027 $t10_11 = $t9_10;
17028 $t11_12 = Writer$writeOpaqueVec(w, $t10_11);
17029 $t12_13 = { $get() { return pkg.$get().leafNode; }, $set(v) { const obj = pkg.$get(); obj.leafNode = v; pkg.$set(obj); } };
17030 $t13_14 = leafNode$marshal($t12_13, w);
17031 $t14_15 = { $get() { return pkg.$get().extensions; }, $set(v) { const obj = pkg.$get(); obj.extensions = v; pkg.$set(obj); } };
17032 $t15_16 = $t14_15.$get();
17033 $t16_17 = marshalExtensionVec(w, $t15_16);
17034 return;
17035 }
17036
17037 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('marshalTBS', KeyPackage$marshalTBS);
17038 export function KeyPackage$sign(pkg, signerPriv) {
17039 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
17040 let $block = 0;
17041 while (true) {
17042 switch ($block) {
17043 case 0: {
17044 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17045 $t1_2 = KeyPackage$marshalTBS(pkg, $t0_1);
17046 $t2_3 = Writer$bytes($t0_1);
17047 $t3_4 = $t2_3[0];
17048 $t4_5 = $t2_3[1];
17049 $t5_6 = ($t4_5 !== null);
17050 if ($t5_6) {
17051 $block = 1; break;
17052 }
17053 else {
17054 $block = 2; break;
17055 }
17056 break;
17057 }
17058 case 1: {
17059 return $t4_5;
17060 break;
17061 }
17062 case 2: {
17063 $t6_7 = { $get() { return pkg.$get().cipherSuite; }, $set(v) { const obj = pkg.$get(); obj.cipherSuite = v; pkg.$set(obj); } };
17064 $t7_8 = $t6_7.$get();
17065 $t8_9 = CipherSuite$signWithLabel($t7_8, signerPriv, 'KeyPackageTBS', $t3_4);
17066 $t9_10 = $t8_9[0];
17067 $t10_11 = $t8_9[1];
17068 $t11_12 = ($t10_11 !== null);
17069 if ($t11_12) {
17070 $block = 3; break;
17071 }
17072 else {
17073 $block = 4; break;
17074 }
17075 break;
17076 }
17077 case 3: {
17078 return $t10_11;
17079 break;
17080 }
17081 case 4: {
17082 $t12_13 = { $get() { return pkg.$get().signature; }, $set(v) { const obj = pkg.$get(); obj.signature = v; pkg.$set(obj); } };
17083 $t12_13.$set($t9_10);
17084 return null;
17085 break;
17086 }
17087 }
17088 }
17089 }
17090
17091 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('sign', KeyPackage$sign);
17092 export function KeyPackage$unmarshal(pkg, r) {
17093 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35;
17094 let $block = 0;
17095 while (true) {
17096 switch ($block) {
17097 case 0: {
17098 pkg.$set($rt.builtin.cloneValue({ version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }));
17099 $t0_1 = Reader$readUint16(r);
17100 $t1_2 = $t0_1[0];
17101 $t2_3 = $t0_1[1];
17102 if ($t2_3) {
17103 $block = 2; break;
17104 }
17105 else {
17106 $block = 1; break;
17107 }
17108 break;
17109 }
17110 case 1: {
17111 $t3_4 = errUnexpectedEOF.$get();
17112 return $t3_4;
17113 break;
17114 }
17115 case 2: {
17116 $t4_5 = $t1_2;
17117 $t5_6 = { $get() { return pkg.$get().version; }, $set(v) { const obj = pkg.$get(); obj.version = v; pkg.$set(obj); } };
17118 $t5_6.$set($t4_5);
17119 $t6_7 = { $get() { return pkg.$get().version; }, $set(v) { const obj = pkg.$get(); obj.version = v; pkg.$set(obj); } };
17120 $t7_8 = $t6_7.$get();
17121 $t8_9 = ($t7_8 !== 1);
17122 if ($t8_9) {
17123 $block = 3; break;
17124 }
17125 else {
17126 $block = 4; break;
17127 }
17128 break;
17129 }
17130 case 3: {
17131 $t9_10 = errInvalidVersion.$get();
17132 return $t9_10;
17133 break;
17134 }
17135 case 4: {
17136 $t10_11 = Reader$readUint16(r);
17137 $t11_12 = $t10_11[0];
17138 $t12_13 = $t10_11[1];
17139 if ($t12_13) {
17140 $block = 6; break;
17141 }
17142 else {
17143 $block = 5; break;
17144 }
17145 break;
17146 }
17147 case 5: {
17148 $t13_14 = errUnexpectedEOF.$get();
17149 return $t13_14;
17150 break;
17151 }
17152 case 6: {
17153 $t14_15 = $t11_12;
17154 $t15_16 = { $get() { return pkg.$get().cipherSuite; }, $set(v) { const obj = pkg.$get(); obj.cipherSuite = v; pkg.$set(obj); } };
17155 $t15_16.$set($t14_15);
17156 $t16_17 = Reader$readOpaqueVec(r);
17157 $t17_18 = $t16_17[0];
17158 $t18_19 = { $get() { return pkg.$get().initKey; }, $set(v) { const obj = pkg.$get(); obj.initKey = v; pkg.$set(obj); } };
17159 $t19_20 = $t17_18;
17160 $t18_19.$set($t19_20);
17161 $t20_21 = $t16_17[1];
17162 if ($t20_21) {
17163 $block = 8; break;
17164 }
17165 else {
17166 $block = 7; break;
17167 }
17168 break;
17169 }
17170 case 7: {
17171 $t21_22 = errUnexpectedEOF.$get();
17172 return $t21_22;
17173 break;
17174 }
17175 case 8: {
17176 $t22_23 = { $get() { return pkg.$get().leafNode; }, $set(v) { const obj = pkg.$get(); obj.leafNode = v; pkg.$set(obj); } };
17177 $t23_24 = leafNode$unmarshal($t22_23, r);
17178 $t24_25 = ($t23_24 !== null);
17179 if ($t24_25) {
17180 $block = 9; break;
17181 }
17182 else {
17183 $block = 10; break;
17184 }
17185 break;
17186 }
17187 case 9: {
17188 return $t23_24;
17189 break;
17190 }
17191 case 10: {
17192 $t25_26 = unmarshalExtensionVec(r);
17193 $t26_27 = $t25_26[0];
17194 $t27_28 = $t25_26[1];
17195 $t28_29 = ($t27_28 !== null);
17196 if ($t28_29) {
17197 $block = 11; break;
17198 }
17199 else {
17200 $block = 12; break;
17201 }
17202 break;
17203 }
17204 case 11: {
17205 return $t27_28;
17206 break;
17207 }
17208 case 12: {
17209 $t29_30 = { $get() { return pkg.$get().extensions; }, $set(v) { const obj = pkg.$get(); obj.extensions = v; pkg.$set(obj); } };
17210 $t29_30.$set($t26_27);
17211 $t30_31 = Reader$readOpaqueVec(r);
17212 $t31_32 = $t30_31[0];
17213 $t32_33 = { $get() { return pkg.$get().signature; }, $set(v) { const obj = pkg.$get(); obj.signature = v; pkg.$set(obj); } };
17214 $t32_33.$set($t31_32);
17215 $t33_34 = $t30_31[1];
17216 if ($t33_34) {
17217 $block = 14; break;
17218 }
17219 else {
17220 $block = 13; break;
17221 }
17222 break;
17223 }
17224 case 13: {
17225 $t34_35 = errUnexpectedEOF.$get();
17226 return $t34_35;
17227 break;
17228 }
17229 case 14: {
17230 return null;
17231 break;
17232 }
17233 }
17234 }
17235 }
17236
17237 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('unmarshal', KeyPackage$unmarshal);
17238 export function KeyPackage$verify(pkg, ctx) {
17239 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28;
17240 let $block = 0;
17241 while (true) {
17242 switch ($block) {
17243 case 0: {
17244 $t0_1 = { $get() { return pkg.$get().version; }, $set(v) { const obj = pkg.$get(); obj.version = v; pkg.$set(obj); } };
17245 $t1_2 = $t0_1.$get();
17246 $t2_3 = { $get() { return ctx.$get().version; }, $set(v) { const obj = ctx.$get(); obj.version = v; ctx.$set(obj); } };
17247 $t3_4 = $t2_3.$get();
17248 $t4_5 = ($t1_2 !== $t3_4);
17249 if ($t4_5) {
17250 $block = 1; break;
17251 }
17252 else {
17253 $block = 2; break;
17254 }
17255 break;
17256 }
17257 case 1: {
17258 $t5_6 = errKeyPackageVersionMismatch.$get();
17259 return $t5_6;
17260 break;
17261 }
17262 case 2: {
17263 $t6_7 = { $get() { return pkg.$get().cipherSuite; }, $set(v) { const obj = pkg.$get(); obj.cipherSuite = v; pkg.$set(obj); } };
17264 $t7_8 = $t6_7.$get();
17265 $t8_9 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
17266 $t9_10 = $t8_9.$get();
17267 $t10_11 = ($t7_8 !== $t9_10);
17268 if ($t10_11) {
17269 $block = 3; break;
17270 }
17271 else {
17272 $block = 4; break;
17273 }
17274 break;
17275 }
17276 case 3: {
17277 $t11_12 = errKeyPackageSuiteMismatch.$get();
17278 return $t11_12;
17279 break;
17280 }
17281 case 4: {
17282 $t12_13 = { $get() { return pkg.$get().leafNode; }, $set(v) { const obj = pkg.$get(); obj.leafNode = v; pkg.$set(obj); } };
17283 $t13_14 = { $get() { return $t12_13.$get().leafNodeSource; }, $set(v) { const obj = $t12_13.$get(); obj.leafNodeSource = v; $t12_13.$set(obj); } };
17284 $t14_15 = $t13_14.$get();
17285 $t15_16 = ($t14_15 !== 1);
17286 if ($t15_16) {
17287 $block = 5; break;
17288 }
17289 else {
17290 $block = 6; break;
17291 }
17292 break;
17293 }
17294 case 5: {
17295 $t16_17 = errKeyPackageBadSource.$get();
17296 return $t16_17;
17297 break;
17298 }
17299 case 6: {
17300 $t17_18 = KeyPackage$verifySignature(pkg);
17301 if ($t17_18) {
17302 $block = 8; break;
17303 }
17304 else {
17305 $block = 7; break;
17306 }
17307 break;
17308 }
17309 case 7: {
17310 $t18_19 = errKeyPackageBadSignature.$get();
17311 return $t18_19;
17312 break;
17313 }
17314 case 8: {
17315 $t19_20 = { $get() { return pkg.$get().leafNode; }, $set(v) { const obj = pkg.$get(); obj.leafNode = v; pkg.$set(obj); } };
17316 $t20_21 = { $get() { return $t19_20.$get().encryptionKey; }, $set(v) { const obj = $t19_20.$get(); obj.encryptionKey = v; $t19_20.$set(obj); } };
17317 $t21_22 = $t20_21.$get();
17318 $t22_23 = { $get() { return pkg.$get().initKey; }, $set(v) { const obj = pkg.$get(); obj.initKey = v; pkg.$set(obj); } };
17319 $t23_24 = $t22_23.$get();
17320 $t24_25 = $t21_22;
17321 $t25_26 = $t23_24;
17322 $t26_27 = bytesEqual($t24_25, $t25_26);
17323 if ($t26_27) {
17324 $block = 9; break;
17325 }
17326 else {
17327 $block = 10; break;
17328 }
17329 break;
17330 }
17331 case 9: {
17332 $t27_28 = errKeyPackageKeysMatch.$get();
17333 return $t27_28;
17334 break;
17335 }
17336 case 10: {
17337 return null;
17338 break;
17339 }
17340 }
17341 }
17342 }
17343
17344 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('verify', KeyPackage$verify);
17345 export function KeyPackage$verifySignature(pkg) {
17346 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
17347 let $block = 0;
17348 while (true) {
17349 switch ($block) {
17350 case 0: {
17351 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17352 $t1_2 = KeyPackage$marshalTBS(pkg, $t0_1);
17353 $t2_3 = Writer$bytes($t0_1);
17354 $t3_4 = $t2_3[0];
17355 $t4_5 = $t2_3[1];
17356 $t5_6 = ($t4_5 !== null);
17357 if ($t5_6) {
17358 $block = 1; break;
17359 }
17360 else {
17361 $block = 2; break;
17362 }
17363 break;
17364 }
17365 case 1: {
17366 return false;
17367 break;
17368 }
17369 case 2: {
17370 $t6_7 = { $get() { return pkg.$get().cipherSuite; }, $set(v) { const obj = pkg.$get(); obj.cipherSuite = v; pkg.$set(obj); } };
17371 $t7_8 = $t6_7.$get();
17372 $t8_9 = { $get() { return pkg.$get().leafNode; }, $set(v) { const obj = pkg.$get(); obj.leafNode = v; pkg.$set(obj); } };
17373 $t9_10 = { $get() { return $t8_9.$get().signatureKey; }, $set(v) { const obj = $t8_9.$get(); obj.signatureKey = v; $t8_9.$set(obj); } };
17374 $t10_11 = $t9_10.$get();
17375 $t11_12 = { $get() { return pkg.$get().signature; }, $set(v) { const obj = pkg.$get(); obj.signature = v; pkg.$set(obj); } };
17376 $t12_13 = $t11_12.$get();
17377 $t13_14 = CipherSuite$verifyWithLabel($t7_8, $t10_11, 'KeyPackageTBS', $t3_4, $t12_13);
17378 return $t13_14;
17379 break;
17380 }
17381 }
17382 }
17383 }
17384
17385 $rt.types.getType('smesh.lol/web/common/mls.KeyPackage')?.methods?.set('verifySignature', KeyPackage$verifySignature);
17386 export function KeyPackageRef$equal(ref, other) {
17387 let $t0_1, $t1_2, $t2_3;
17388 $t0_1 = ref;
17389 $t1_2 = other;
17390 $t2_3 = bytesEqual($t0_1, $t1_2);
17391 return $t2_3;
17392 }
17393
17394 $rt.types.getType('smesh.lol/web/common/mls.KeyPackageRef')?.methods?.set('equal', KeyPackageRef$equal);
17395 export function CipherSuite$AEADKeySize(cs) {
17396 let $t0_1;
17397 $t0_1 = CipherSuite$assertSupported(cs);
17398 return 32;
17399 }
17400
17401 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('AEADKeySize', CipherSuite$AEADKeySize);
17402 export function CipherSuite$AEADNonceSize(cs) {
17403 let $t0_1;
17404 $t0_1 = CipherSuite$assertSupported(cs);
17405 return 12;
17406 }
17407
17408 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('AEADNonceSize', CipherSuite$AEADNonceSize);
17409 export function CipherSuite$ExtractSize(cs) {
17410 let $t0_1;
17411 $t0_1 = CipherSuite$assertSupported(cs);
17412 return 32;
17413 }
17414
17415 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('ExtractSize', CipherSuite$ExtractSize);
17416 export function CipherSuite$HashSize(cs) {
17417 let $t0_1;
17418 $t0_1 = CipherSuite$assertSupported(cs);
17419 return 32;
17420 }
17421
17422 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('HashSize', CipherSuite$HashSize);
17423 export function CipherSuite$aeadOpen(cs, key, nonce, ciphertext, aad) {
17424 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
17425 let $block = 0;
17426 while (true) {
17427 switch ($block) {
17428 case 0: {
17429 $t0_1 = CipherSuite$assertSupported(cs);
17430 $t1_2 = $rt.builtin.len(key);
17431 $t2_3 = ($t1_2 !== 32);
17432 if ($t2_3) {
17433 $block = 1; break;
17434 }
17435 else {
17436 $block = 2; break;
17437 }
17438 break;
17439 }
17440 case 1: {
17441 $t3_4 = errInvalidKeySize.$get();
17442 return [null, $t3_4];
17443 break;
17444 }
17445 case 2: {
17446 $t4_5 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17447 $t5_6 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17448 $t6_7 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
17449 $t7_8 = $rt.builtin.copy($t6_7, key);
17450 $t8_9 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
17451 $t9_10 = $rt.builtin.copy($t8_9, nonce);
17452 $t10_11 = $t4_5.$get();
17453 $t11_12 = $t5_6.$get();
17454 $t12_13 = smesh$lol$web$common$crypto$chacha20poly1305.Open($t10_11, $t11_12, ciphertext, aad);
17455 $t13_14 = $t12_13[0];
17456 $t14_15 = $t12_13[1];
17457 if ($t14_15) {
17458 $block = 4; break;
17459 }
17460 else {
17461 $block = 3; break;
17462 }
17463 break;
17464 }
17465 case 3: {
17466 $t15_16 = errAEADOpenFailed.$get();
17467 return [null, $t15_16];
17468 break;
17469 }
17470 case 4: {
17471 return [$t13_14, null];
17472 break;
17473 }
17474 }
17475 }
17476 }
17477
17478 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('aeadOpen', CipherSuite$aeadOpen);
17479 export function CipherSuite$aeadSeal(cs, key, nonce, plaintext, aad) {
17480 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
17481 let $block = 0;
17482 while (true) {
17483 switch ($block) {
17484 case 0: {
17485 $t0_1 = CipherSuite$assertSupported(cs);
17486 $t1_2 = $rt.builtin.len(key);
17487 $t2_3 = ($t1_2 !== 32);
17488 if ($t2_3) {
17489 $block = 1; break;
17490 }
17491 else {
17492 $block = 2; break;
17493 }
17494 break;
17495 }
17496 case 1: {
17497 $t3_4 = errInvalidKeySize.$get();
17498 return [null, $t3_4];
17499 break;
17500 }
17501 case 2: {
17502 $t4_5 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17503 $t5_6 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17504 $t6_7 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
17505 $t7_8 = $rt.builtin.copy($t6_7, key);
17506 $t8_9 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
17507 $t9_10 = $rt.builtin.copy($t8_9, nonce);
17508 $t10_11 = $t4_5.$get();
17509 $t11_12 = $t5_6.$get();
17510 $t12_13 = smesh$lol$web$common$crypto$chacha20poly1305.Seal($t10_11, $t11_12, plaintext, aad);
17511 return [$t12_13, null];
17512 break;
17513 }
17514 }
17515 }
17516 }
17517
17518 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('aeadSeal', CipherSuite$aeadSeal);
17519 export function CipherSuite$assertSupported(cs) {
17520 let $t0_1, $t1_2;
17521 let $block = 0;
17522 while (true) {
17523 switch ($block) {
17524 case 0: {
17525 $t0_1 = (cs !== 3);
17526 if ($t0_1) {
17527 $block = 1; break;
17528 }
17529 else {
17530 $block = 2; break;
17531 }
17532 break;
17533 }
17534 case 1: {
17535 $t1_2 = $rt.types.makeInterface('string', 'mls: unsupported cipher suite');
17536 $rt.runtime.panic($t1_2);
17537 break;
17538 }
17539 case 2: {
17540 return;
17541 break;
17542 }
17543 }
17544 }
17545 }
17546
17547 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('assertSupported', CipherSuite$assertSupported);
17548 export function CipherSuite$decryptWithLabel(cs, privateKey, label, context, kemOutput, ciphertext) {
17549 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
17550 let $block = 0;
17551 while (true) {
17552 switch ($block) {
17553 case 0: {
17554 $t0_1 = marshalEncryptContext(label, context);
17555 $t1_2 = $t0_1[0];
17556 $t2_3 = $t0_1[1];
17557 $t3_4 = ($t2_3 !== null);
17558 if ($t3_4) {
17559 $block = 1; break;
17560 }
17561 else {
17562 $block = 2; break;
17563 }
17564 break;
17565 }
17566 case 1: {
17567 return [null, $t2_3];
17568 break;
17569 }
17570 case 2: {
17571 $t4_5 = CipherSuite$kemDecap(cs, kemOutput, privateKey);
17572 $t5_6 = $t4_5[0];
17573 $t6_7 = $t4_5[1];
17574 $t7_8 = ($t6_7 !== null);
17575 if ($t7_8) {
17576 $block = 3; break;
17577 }
17578 else {
17579 $block = 4; break;
17580 }
17581 break;
17582 }
17583 case 3: {
17584 return [null, $t6_7];
17585 break;
17586 }
17587 case 4: {
17588 $t8_9 = hpkeKeySchedule($t5_6, $t1_2);
17589 $t9_10 = $t8_9[0];
17590 $t10_11 = $t8_9[1];
17591 $t11_12 = { $value: { key: null, nonce: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17592 $t12_13 = { $get() { return $t11_12.$get().key; }, $set(v) { const obj = $t11_12.$get(); obj.key = v; $t11_12.$set(obj); } };
17593 $t13_14 = { $get() { return $t11_12.$get().nonce; }, $set(v) { const obj = $t11_12.$get(); obj.nonce = v; $t11_12.$set(obj); } };
17594 $t12_13.$set($t9_10);
17595 $t13_14.$set($t10_11);
17596 $t14_15 = hpkeOpener$open($t11_12, ciphertext, null);
17597 $t15_16 = $t14_15[0];
17598 $t16_17 = $t14_15[1];
17599 if ($t16_17) {
17600 $block = 6; break;
17601 }
17602 else {
17603 $block = 5; break;
17604 }
17605 break;
17606 }
17607 case 5: {
17608 $t17_18 = errHPKEDecryptFailed.$get();
17609 return [null, $t17_18];
17610 break;
17611 }
17612 case 6: {
17613 return [$t15_16, null];
17614 break;
17615 }
17616 }
17617 }
17618 }
17619
17620 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('decryptWithLabel', CipherSuite$decryptWithLabel);
17621 export function CipherSuite$deriveEncryptionKeyPair(cs, seed) {
17622 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
17623 $t0_1 = CipherSuite$assertSupported(cs);
17624 $t1_2 = labeledExtractKEM(null, 'dkp_prk', seed);
17625 $t2_3 = labeledExpandKEM($t1_2, 'sk', null, 32);
17626 $t3_4 = smesh$lol$web$common$jsbridge$x25519.ScalarBaseMult($t2_3);
17627 $t4_5 = $t3_4;
17628 $t5_6 = $t2_3;
17629 return [$t4_5, $t5_6, null];
17630 }
17631
17632 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('deriveEncryptionKeyPair', CipherSuite$deriveEncryptionKeyPair);
17633 export function CipherSuite$deriveSecret(cs, secret, label) {
17634 let $t0_1, $t1_2, $t2_3;
17635 $t0_1 = CipherSuite$expandWithLabel(cs, secret, label, null, 32);
17636 $t1_2 = $t0_1[0];
17637 $t2_3 = $t0_1[1];
17638 return [$t1_2, $t2_3];
17639 }
17640
17641 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('deriveSecret', CipherSuite$deriveSecret);
17642 export function CipherSuite$encryptWithLabel(cs, publicKey, label, context, plaintext) {
17643 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
17644 let $block = 0;
17645 while (true) {
17646 switch ($block) {
17647 case 0: {
17648 $t0_1 = marshalEncryptContext(label, context);
17649 $t1_2 = $t0_1[0];
17650 $t2_3 = $t0_1[1];
17651 $t3_4 = ($t2_3 !== null);
17652 if ($t3_4) {
17653 $block = 1; break;
17654 }
17655 else {
17656 $block = 2; break;
17657 }
17658 break;
17659 }
17660 case 1: {
17661 return [null, null, $t2_3];
17662 break;
17663 }
17664 case 2: {
17665 $t4_5 = CipherSuite$kemEncap(cs, publicKey);
17666 $t5_6 = $t4_5[0];
17667 $t6_7 = $t4_5[1];
17668 $t7_8 = $t4_5[2];
17669 $t8_9 = ($t7_8 !== null);
17670 if ($t8_9) {
17671 $block = 3; break;
17672 }
17673 else {
17674 $block = 4; break;
17675 }
17676 break;
17677 }
17678 case 3: {
17679 return [null, null, $t7_8];
17680 break;
17681 }
17682 case 4: {
17683 $t9_10 = hpkeKeySchedule($t5_6, $t1_2);
17684 $t10_11 = $t9_10[0];
17685 $t11_12 = $t9_10[1];
17686 $t12_13 = { $value: { key: null, nonce: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17687 $t13_14 = { $get() { return $t12_13.$get().key; }, $set(v) { const obj = $t12_13.$get(); obj.key = v; $t12_13.$set(obj); } };
17688 $t14_15 = { $get() { return $t12_13.$get().nonce; }, $set(v) { const obj = $t12_13.$get(); obj.nonce = v; $t12_13.$set(obj); } };
17689 $t13_14.$set($t10_11);
17690 $t14_15.$set($t11_12);
17691 $t15_16 = hpkeSealer$seal($t12_13, plaintext, null);
17692 return [$t6_7, $t15_16, null];
17693 break;
17694 }
17695 }
17696 }
17697 }
17698
17699 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('encryptWithLabel', CipherSuite$encryptWithLabel);
17700 export function CipherSuite$expandWithLabel(cs, secret, label, context, length) {
17701 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
17702 let $block = 0;
17703 while (true) {
17704 switch ($block) {
17705 case 0: {
17706 $t0_1 = CipherSuite$assertSupported(cs);
17707 $t1_2 = $rt.builtin.appendSlice('MLS 1.0 ', label);
17708 $t2_3 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17709 $t3_4 = Writer$addUint16($t2_3, length);
17710 $t4_5 = Writer$writeOpaqueVec($t2_3, $t1_2);
17711 $t5_6 = Writer$writeOpaqueVec($t2_3, context);
17712 $t6_7 = Writer$bytes($t2_3);
17713 $t7_8 = $t6_7[0];
17714 $t8_9 = $t6_7[1];
17715 $t9_10 = ($t8_9 !== null);
17716 if ($t9_10) {
17717 $block = 1; break;
17718 }
17719 else {
17720 $block = 2; break;
17721 }
17722 break;
17723 }
17724 case 1: {
17725 return [null, $t8_9];
17726 break;
17727 }
17728 case 2: {
17729 $t10_11 = length;
17730 $t11_12 = smesh$lol$web$common$crypto$hkdf.Expand(secret, $t7_8, $t10_11);
17731 return [$t11_12, null];
17732 break;
17733 }
17734 }
17735 }
17736 }
17737
17738 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('expandWithLabel', CipherSuite$expandWithLabel);
17739 export function CipherSuite$generateEncryptionKeyPair(cs) {
17740 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
17741 $t0_1 = CipherSuite$assertSupported(cs);
17742 $t1_2 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17743 $t2_3 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, 32, undefined);
17744 $t3_4 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t2_3);
17745 $t4_5 = smesh$lol$web$common$jsbridge$x25519.ScalarBaseMult($t2_3);
17746 $t5_6 = $t4_5;
17747 $t6_7 = $t2_3;
17748 return [$t5_6, $t6_7, null];
17749 }
17750
17751 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('generateEncryptionKeyPair', CipherSuite$generateEncryptionKeyPair);
17752 export function CipherSuite$generateSignatureKeyPair(cs) {
17753 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
17754 $t0_1 = CipherSuite$assertSupported(cs);
17755 $t1_2 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17756 $t2_3 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, 32, undefined);
17757 $t3_4 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t2_3);
17758 $t4_5 = smesh$lol$web$common$jsbridge$ed25519.NewKeyFromSeed($t2_3);
17759 $t5_6 = $t4_5;
17760 $t6_7 = $t2_3;
17761 return [$t5_6, $t6_7, null];
17762 }
17763
17764 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('generateSignatureKeyPair', CipherSuite$generateSignatureKeyPair);
17765 export function CipherSuite$hash(cs, data) {
17766 let $t0_1, $t1_2;
17767 $t0_1 = CipherSuite$assertSupported(cs);
17768 $t1_2 = smesh$lol$web$common$jsbridge$schnorr.SHA256Sum(data);
17769 return $t1_2;
17770 }
17771
17772 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('hash', CipherSuite$hash);
17773 export function CipherSuite$hkdfExpand(cs, prk, info, length) {
17774 let $t0_1, $t1_2;
17775 $t0_1 = CipherSuite$assertSupported(cs);
17776 $t1_2 = smesh$lol$web$common$crypto$hkdf.Expand(prk, info, length);
17777 return $t1_2;
17778 }
17779
17780 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('hkdfExpand', CipherSuite$hkdfExpand);
17781 export function CipherSuite$hkdfExtract(cs, salt, ikm) {
17782 let $t0_1, $t1_2, $t2_3, $t3_4;
17783 $t0_1 = CipherSuite$assertSupported(cs);
17784 $t1_2 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17785 $t2_3 = smesh$lol$web$common$crypto$hkdf.Extract(salt, ikm);
17786 $t1_2.$set($rt.builtin.cloneValue($t2_3));
17787 $t3_4 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, undefined, undefined);
17788 return $t3_4;
17789 }
17790
17791 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('hkdfExtract', CipherSuite$hkdfExtract);
17792 export function CipherSuite$kemDecap(cs, enc, skR) {
17793 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
17794 $t0_1 = CipherSuite$assertSupported(cs);
17795 $t1_2 = skR;
17796 $t2_3 = smesh$lol$web$common$jsbridge$x25519.ScalarBaseMult($t1_2);
17797 $t3_4 = skR;
17798 $t4_5 = smesh$lol$web$common$jsbridge$x25519.ScalarMult($t3_4, enc);
17799 $t5_6 = $rt.builtin.len(enc);
17800 $t6_7 = $rt.builtin.len($t2_3);
17801 $t7_8 = ($t5_6 + $t6_7);
17802 $t8_9 = $rt.builtin.makeSlice(0, $t7_8, 0);
17803 $t9_10 = $rt.builtin.appendSlice($t8_9, enc);
17804 $t10_11 = $rt.builtin.appendSlice($t9_10, $t2_3);
17805 $t11_12 = extractAndExpand($t4_5, $t10_11);
17806 return [$t11_12, null];
17807 }
17808
17809 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('kemDecap', CipherSuite$kemDecap);
17810 export function CipherSuite$kemEncap(cs, pkR) {
17811 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
17812 $t0_1 = CipherSuite$assertSupported(cs);
17813 $t1_2 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17814 $t2_3 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, 32, undefined);
17815 $t3_4 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t2_3);
17816 $t4_5 = smesh$lol$web$common$jsbridge$x25519.ScalarBaseMult($t2_3);
17817 $t5_6 = pkR;
17818 $t6_7 = smesh$lol$web$common$jsbridge$x25519.ScalarMult($t2_3, $t5_6);
17819 $t7_8 = pkR;
17820 $t8_9 = $rt.builtin.appendSlice($t4_5, $t7_8);
17821 $t9_10 = extractAndExpand($t6_7, $t8_9);
17822 return [$t9_10, $t4_5, null];
17823 }
17824
17825 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('kemEncap', CipherSuite$kemEncap);
17826 export function CipherSuite$randomBytes(cs, n) {
17827 let $t0_1, $t1_2;
17828 $t0_1 = $rt.builtin.makeSlice(n, n, 0);
17829 $t1_2 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t0_1);
17830 return $t0_1;
17831 }
17832
17833 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('randomBytes', CipherSuite$randomBytes);
17834 export function CipherSuite$refHash(cs, label, value) {
17835 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
17836 let $block = 0;
17837 while (true) {
17838 switch ($block) {
17839 case 0: {
17840 $t0_1 = CipherSuite$assertSupported(cs);
17841 $t1_2 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17842 $t2_3 = Writer$writeOpaqueVec($t1_2, label);
17843 $t3_4 = Writer$writeOpaqueVec($t1_2, value);
17844 $t4_5 = Writer$bytes($t1_2);
17845 $t5_6 = $t4_5[0];
17846 $t6_7 = $t4_5[1];
17847 $t7_8 = ($t6_7 !== null);
17848 if ($t7_8) {
17849 $block = 1; break;
17850 }
17851 else {
17852 $block = 2; break;
17853 }
17854 break;
17855 }
17856 case 1: {
17857 return [null, $t6_7];
17858 break;
17859 }
17860 case 2: {
17861 $t8_9 = smesh$lol$web$common$jsbridge$schnorr.SHA256Sum($t5_6);
17862 return [$t8_9, null];
17863 break;
17864 }
17865 }
17866 }
17867 }
17868
17869 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('refHash', CipherSuite$refHash);
17870 export function CipherSuite$signMAC(cs, key, message) {
17871 let $t0_1, $t1_2, $t2_3, $t3_4;
17872 $t0_1 = CipherSuite$assertSupported(cs);
17873 $t1_2 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17874 $t2_3 = smesh$lol$web$common$crypto$hmac.Sum(key, message);
17875 $t1_2.$set($rt.builtin.cloneValue($t2_3));
17876 $t3_4 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, undefined, undefined);
17877 return $t3_4;
17878 }
17879
17880 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('signMAC', CipherSuite$signMAC);
17881 export function CipherSuite$signWithLabel(cs, signKey, label, content) {
17882 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
17883 let $block = 0;
17884 while (true) {
17885 switch ($block) {
17886 case 0: {
17887 $t0_1 = CipherSuite$assertSupported(cs);
17888 $t1_2 = marshalSignContent(label, content);
17889 $t2_3 = $t1_2[0];
17890 $t3_4 = $t1_2[1];
17891 $t4_5 = ($t3_4 !== null);
17892 if ($t4_5) {
17893 $block = 1; break;
17894 }
17895 else {
17896 $block = 2; break;
17897 }
17898 break;
17899 }
17900 case 1: {
17901 return [null, $t3_4];
17902 break;
17903 }
17904 case 2: {
17905 $t5_6 = signKey;
17906 $t6_7 = smesh$lol$web$common$jsbridge$ed25519.Sign($t5_6, $t2_3);
17907 return [$t6_7, null];
17908 break;
17909 }
17910 }
17911 }
17912 }
17913
17914 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('signWithLabel', CipherSuite$signWithLabel);
17915 export function CipherSuite$verifyMAC(cs, key, message, tag) {
17916 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
17917 $t0_1 = CipherSuite$assertSupported(cs);
17918 $t1_2 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
17919 $t2_3 = smesh$lol$web$common$crypto$hmac.Sum(key, message);
17920 $t1_2.$set($rt.builtin.cloneValue($t2_3));
17921 $t3_4 = $rt.builtin.sliceSlice($t1_2.$get(), undefined, undefined, undefined);
17922 $t4_5 = hmacEqual(tag, $t3_4);
17923 return $t4_5;
17924 }
17925
17926 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('verifyMAC', CipherSuite$verifyMAC);
17927 export function CipherSuite$verifyWithLabel(cs, verifKey, label, content, signValue) {
17928 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
17929 let $block = 0;
17930 while (true) {
17931 switch ($block) {
17932 case 0: {
17933 $t0_1 = CipherSuite$assertSupported(cs);
17934 $t1_2 = marshalSignContent(label, content);
17935 $t2_3 = $t1_2[0];
17936 $t3_4 = $t1_2[1];
17937 $t4_5 = ($t3_4 !== null);
17938 if ($t4_5) {
17939 $block = 1; break;
17940 }
17941 else {
17942 $block = 2; break;
17943 }
17944 break;
17945 }
17946 case 1: {
17947 return false;
17948 break;
17949 }
17950 case 2: {
17951 $t5_6 = verifKey;
17952 $t6_7 = smesh$lol$web$common$jsbridge$ed25519.Verify($t5_6, $t2_3, signValue);
17953 return $t6_7;
17954 break;
17955 }
17956 }
17957 }
17958 }
17959
17960 $rt.types.getType('smesh.lol/web/common/mls.CipherSuite')?.methods?.set('verifyWithLabel', CipherSuite$verifyWithLabel);
17961 export function groupContext$extractEpochSecret(ctx, joinerSecret, pskSecret) {
17962 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
17963 let $block = 0;
17964 while (true) {
17965 switch ($block) {
17966 case 0: {
17967 $t0_1 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
17968 $t1_2 = $t0_1.$get();
17969 $t2_3 = $rt.builtin.stringEqual(pskSecret, null);
17970 if ($t2_3) {
17971 $block = 1; break;
17972 }
17973 else {
17974 $t5_6 = pskSecret;
17975 $block = 2; break;
17976 }
17977 break;
17978 }
17979 case 1: {
17980 $t3_4 = CipherSuite$ExtractSize($t1_2);
17981 $t4_5 = $rt.builtin.makeSlice($t3_4, $t3_4, 0);
17982 $t5_6 = $t4_5;
17983 $block = 2; break;
17984 break;
17985 }
17986 case 2: {
17987 $t6_7 = CipherSuite$hkdfExtract($t1_2, joinerSecret, $t5_6);
17988 $t7_8 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupContext', ctx);
17989 $t8_9 = marshalRaw($t7_8);
17990 $t9_10 = $t8_9[0];
17991 $t10_11 = $t8_9[1];
17992 $t11_12 = ($t10_11 !== null);
17993 if ($t11_12) {
17994 $block = 3; break;
17995 }
17996 else {
17997 $block = 4; break;
17998 }
17999 break;
18000 }
18001 case 3: {
18002 return [null, $t10_11];
18003 break;
18004 }
18005 case 4: {
18006 $t12_13 = CipherSuite$ExtractSize($t1_2);
18007 $t13_14 = ($t12_13 & 0xFFFF);
18008 $t14_15 = CipherSuite$expandWithLabel($t1_2, $t6_7, 'epoch', $t9_10, $t13_14);
18009 $t15_16 = $t14_15[0];
18010 $t16_17 = $t14_15[1];
18011 return [$t15_16, $t16_17];
18012 break;
18013 }
18014 }
18015 }
18016 }
18017
18018 $rt.types.getType('smesh.lol/web/common/mls.groupContext')?.methods?.set('extractEpochSecret', groupContext$extractEpochSecret);
18019 export function groupContext$extractJoinerSecret(ctx, prevInitSecret, commitSecret) {
18020 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
18021 let $block = 0;
18022 while (true) {
18023 switch ($block) {
18024 case 0: {
18025 $t0_1 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
18026 $t1_2 = $t0_1.$get();
18027 $t2_3 = CipherSuite$hkdfExtract($t1_2, prevInitSecret, commitSecret);
18028 $t3_4 = $rt.types.makeInterface('*smesh.lol/web/common/mls.groupContext', ctx);
18029 $t4_5 = marshalRaw($t3_4);
18030 $t5_6 = $t4_5[0];
18031 $t6_7 = $t4_5[1];
18032 $t7_8 = ($t6_7 !== null);
18033 if ($t7_8) {
18034 $block = 1; break;
18035 }
18036 else {
18037 $block = 2; break;
18038 }
18039 break;
18040 }
18041 case 1: {
18042 return [null, $t6_7];
18043 break;
18044 }
18045 case 2: {
18046 $t8_9 = CipherSuite$ExtractSize($t1_2);
18047 $t9_10 = ($t8_9 & 0xFFFF);
18048 $t10_11 = CipherSuite$expandWithLabel($t1_2, $t2_3, 'joiner', $t5_6, $t9_10);
18049 $t11_12 = $t10_11[0];
18050 $t12_13 = $t10_11[1];
18051 return [$t11_12, $t12_13];
18052 break;
18053 }
18054 }
18055 }
18056 }
18057
18058 $rt.types.getType('smesh.lol/web/common/mls.groupContext')?.methods?.set('extractJoinerSecret', groupContext$extractJoinerSecret);
18059 export function groupContext$marshal(ctx, w) {
18060 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
18061 $t0_1 = { $get() { return ctx.$get().version; }, $set(v) { const obj = ctx.$get(); obj.version = v; ctx.$set(obj); } };
18062 $t1_2 = $t0_1.$get();
18063 $t2_3 = $t1_2;
18064 $t3_4 = Writer$addUint16(w, $t2_3);
18065 $t4_5 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
18066 $t5_6 = $t4_5.$get();
18067 $t6_7 = $t5_6;
18068 $t7_8 = Writer$addUint16(w, $t6_7);
18069 $t8_9 = { $get() { return ctx.$get().groupID; }, $set(v) { const obj = ctx.$get(); obj.groupID = v; ctx.$set(obj); } };
18070 $t9_10 = $t8_9.$get();
18071 $t10_11 = $t9_10;
18072 $t11_12 = Writer$writeOpaqueVec(w, $t10_11);
18073 $t12_13 = { $get() { return ctx.$get().epoch; }, $set(v) { const obj = ctx.$get(); obj.epoch = v; ctx.$set(obj); } };
18074 $t13_14 = $t12_13.$get();
18075 $t14_15 = Writer$addUint64(w, $t13_14);
18076 $t15_16 = { $get() { return ctx.$get().treeHash; }, $set(v) { const obj = ctx.$get(); obj.treeHash = v; ctx.$set(obj); } };
18077 $t16_17 = $t15_16.$get();
18078 $t17_18 = Writer$writeOpaqueVec(w, $t16_17);
18079 $t18_19 = { $get() { return ctx.$get().confirmedTranscriptHash; }, $set(v) { const obj = ctx.$get(); obj.confirmedTranscriptHash = v; ctx.$set(obj); } };
18080 $t19_20 = $t18_19.$get();
18081 $t20_21 = Writer$writeOpaqueVec(w, $t19_20);
18082 $t21_22 = { $get() { return ctx.$get().extensions; }, $set(v) { const obj = ctx.$get(); obj.extensions = v; ctx.$set(obj); } };
18083 $t22_23 = $t21_22.$get();
18084 $t23_24 = marshalExtensionVec(w, $t22_23);
18085 return;
18086 }
18087
18088 $rt.types.getType('smesh.lol/web/common/mls.groupContext')?.methods?.set('marshal', groupContext$marshal);
18089 export function groupContext$signConfirmationTag(ctx, epochSecret) {
18090 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
18091 let $block = 0;
18092 while (true) {
18093 switch ($block) {
18094 case 0: {
18095 $t0_1 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
18096 $t1_2 = $t0_1.$get();
18097 $t2_3 = secretLabelConfirm.$get();
18098 $t3_4 = CipherSuite$deriveSecret($t1_2, epochSecret, $t2_3);
18099 $t4_5 = $t3_4[0];
18100 $t5_6 = $t3_4[1];
18101 $t6_7 = ($t5_6 !== null);
18102 if ($t6_7) {
18103 $block = 1; break;
18104 }
18105 else {
18106 $block = 2; break;
18107 }
18108 break;
18109 }
18110 case 1: {
18111 return [null, $t5_6];
18112 break;
18113 }
18114 case 2: {
18115 $t7_8 = { $get() { return ctx.$get().confirmedTranscriptHash; }, $set(v) { const obj = ctx.$get(); obj.confirmedTranscriptHash = v; ctx.$set(obj); } };
18116 $t8_9 = $t7_8.$get();
18117 $t9_10 = CipherSuite$signMAC($t1_2, $t4_5, $t8_9);
18118 return [$t9_10, null];
18119 break;
18120 }
18121 }
18122 }
18123 }
18124
18125 $rt.types.getType('smesh.lol/web/common/mls.groupContext')?.methods?.set('signConfirmationTag', groupContext$signConfirmationTag);
18126 export function groupContext$unmarshal(ctx, r) {
18127 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
18128 let $block = 0;
18129 while (true) {
18130 switch ($block) {
18131 case 0: {
18132 ctx.$set($rt.builtin.cloneValue({ version: 0, cipherSuite: 0, groupID: null, epoch: 0n, treeHash: null, confirmedTranscriptHash: null, extensions: null }));
18133 $t0_1 = Reader$readUint16(r);
18134 $t1_2 = $t0_1[0];
18135 $t2_3 = $t0_1[1];
18136 if ($t2_3) {
18137 $block = 2; break;
18138 }
18139 else {
18140 $block = 1; break;
18141 }
18142 break;
18143 }
18144 case 1: {
18145 $t3_4 = errUnexpectedEOF.$get();
18146 return $t3_4;
18147 break;
18148 }
18149 case 2: {
18150 $t4_5 = $t1_2;
18151 $t5_6 = { $get() { return ctx.$get().version; }, $set(v) { const obj = ctx.$get(); obj.version = v; ctx.$set(obj); } };
18152 $t5_6.$set($t4_5);
18153 $t6_7 = { $get() { return ctx.$get().version; }, $set(v) { const obj = ctx.$get(); obj.version = v; ctx.$set(obj); } };
18154 $t7_8 = $t6_7.$get();
18155 $t8_9 = ($t7_8 !== 1);
18156 if ($t8_9) {
18157 $block = 3; break;
18158 }
18159 else {
18160 $block = 4; break;
18161 }
18162 break;
18163 }
18164 case 3: {
18165 $t9_10 = errInvalidVersion.$get();
18166 return $t9_10;
18167 break;
18168 }
18169 case 4: {
18170 $t10_11 = Reader$readUint16(r);
18171 $t11_12 = $t10_11[0];
18172 $t12_13 = $t10_11[1];
18173 if ($t12_13) {
18174 $block = 6; break;
18175 }
18176 else {
18177 $block = 5; break;
18178 }
18179 break;
18180 }
18181 case 5: {
18182 $t13_14 = errUnexpectedEOF.$get();
18183 return $t13_14;
18184 break;
18185 }
18186 case 6: {
18187 $t14_15 = $t11_12;
18188 $t15_16 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
18189 $t15_16.$set($t14_15);
18190 $t16_17 = Reader$readOpaqueVec(r);
18191 $t17_18 = $t16_17[0];
18192 $t18_19 = { $get() { return ctx.$get().groupID; }, $set(v) { const obj = ctx.$get(); obj.groupID = v; ctx.$set(obj); } };
18193 $t19_20 = $t17_18;
18194 $t18_19.$set($t19_20);
18195 $t20_21 = $t16_17[1];
18196 if ($t20_21) {
18197 $block = 8; break;
18198 }
18199 else {
18200 $block = 7; break;
18201 }
18202 break;
18203 }
18204 case 7: {
18205 $t21_22 = errUnexpectedEOF.$get();
18206 return $t21_22;
18207 break;
18208 }
18209 case 8: {
18210 $t22_23 = Reader$readUint64(r);
18211 $t23_24 = $t22_23[0];
18212 $t24_25 = { $get() { return ctx.$get().epoch; }, $set(v) { const obj = ctx.$get(); obj.epoch = v; ctx.$set(obj); } };
18213 $t24_25.$set($t23_24);
18214 $t25_26 = $t22_23[1];
18215 if ($t25_26) {
18216 $block = 10; break;
18217 }
18218 else {
18219 $block = 9; break;
18220 }
18221 break;
18222 }
18223 case 9: {
18224 $t26_27 = errUnexpectedEOF.$get();
18225 return $t26_27;
18226 break;
18227 }
18228 case 10: {
18229 $t27_28 = Reader$readOpaqueVec(r);
18230 $t28_29 = $t27_28[0];
18231 $t29_30 = { $get() { return ctx.$get().treeHash; }, $set(v) { const obj = ctx.$get(); obj.treeHash = v; ctx.$set(obj); } };
18232 $t29_30.$set($t28_29);
18233 $t30_31 = $t27_28[1];
18234 if ($t30_31) {
18235 $block = 12; break;
18236 }
18237 else {
18238 $block = 11; break;
18239 }
18240 break;
18241 }
18242 case 11: {
18243 $t31_32 = errUnexpectedEOF.$get();
18244 return $t31_32;
18245 break;
18246 }
18247 case 12: {
18248 $t32_33 = Reader$readOpaqueVec(r);
18249 $t33_34 = $t32_33[0];
18250 $t34_35 = { $get() { return ctx.$get().confirmedTranscriptHash; }, $set(v) { const obj = ctx.$get(); obj.confirmedTranscriptHash = v; ctx.$set(obj); } };
18251 $t34_35.$set($t33_34);
18252 $t35_36 = $t32_33[1];
18253 if ($t35_36) {
18254 $block = 14; break;
18255 }
18256 else {
18257 $block = 13; break;
18258 }
18259 break;
18260 }
18261 case 13: {
18262 $t36_37 = errUnexpectedEOF.$get();
18263 return $t36_37;
18264 break;
18265 }
18266 case 14: {
18267 $t37_38 = unmarshalExtensionVec(r);
18268 $t38_39 = $t37_38[0];
18269 $t39_40 = $t37_38[1];
18270 $t40_41 = ($t39_40 !== null);
18271 if ($t40_41) {
18272 $block = 15; break;
18273 }
18274 else {
18275 $block = 16; break;
18276 }
18277 break;
18278 }
18279 case 15: {
18280 return $t39_40;
18281 break;
18282 }
18283 case 16: {
18284 $t41_42 = { $get() { return ctx.$get().extensions; }, $set(v) { const obj = ctx.$get(); obj.extensions = v; ctx.$set(obj); } };
18285 $t41_42.$set($t38_39);
18286 return null;
18287 break;
18288 }
18289 }
18290 }
18291 }
18292
18293 $rt.types.getType('smesh.lol/web/common/mls.groupContext')?.methods?.set('unmarshal', groupContext$unmarshal);
18294 export function confirmedTranscriptHashInput$hashValue(input, cs, interimTranscriptHashBefore) {
18295 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
18296 let $block = 0;
18297 while (true) {
18298 switch ($block) {
18299 case 0: {
18300 $t0_1 = $rt.types.makeInterface('*smesh.lol/web/common/mls.confirmedTranscriptHashInput', input);
18301 $t1_2 = marshalRaw($t0_1);
18302 $t2_3 = $t1_2[0];
18303 $t3_4 = $t1_2[1];
18304 $t4_5 = ($t3_4 !== null);
18305 if ($t4_5) {
18306 $block = 1; break;
18307 }
18308 else {
18309 $block = 2; break;
18310 }
18311 break;
18312 }
18313 case 1: {
18314 return [null, $t3_4];
18315 break;
18316 }
18317 case 2: {
18318 $t5_6 = $rt.builtin.appendSlice(interimTranscriptHashBefore, $t2_3);
18319 $t6_7 = CipherSuite$hash(cs, $t5_6);
18320 return [$t6_7, null];
18321 break;
18322 }
18323 }
18324 }
18325 }
18326
18327 $rt.types.getType('smesh.lol/web/common/mls.confirmedTranscriptHashInput')?.methods?.set('hashValue', confirmedTranscriptHashInput$hashValue);
18328 export function confirmedTranscriptHashInput$marshal(input, w) {
18329 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
18330 $t0_1 = { $get() { return input.$get().wireFormat; }, $set(v) { const obj = input.$get(); obj.wireFormat = v; input.$set(obj); } };
18331 $t1_2 = $t0_1.$get();
18332 $t2_3 = wireFormat$marshal($t1_2, w);
18333 $t3_4 = { $get() { return input.$get().content; }, $set(v) { const obj = input.$get(); obj.content = v; input.$set(obj); } };
18334 $t4_5 = framedContent$marshal($t3_4, w);
18335 $t5_6 = { $get() { return input.$get().signature; }, $set(v) { const obj = input.$get(); obj.signature = v; input.$set(obj); } };
18336 $t6_7 = $t5_6.$get();
18337 $t7_8 = Writer$writeOpaqueVec(w, $t6_7);
18338 return;
18339 }
18340
18341 $rt.types.getType('smesh.lol/web/common/mls.confirmedTranscriptHashInput')?.methods?.set('marshal', confirmedTranscriptHashInput$marshal);
18342 export function pskType$marshal(t, w) {
18343 let $t0_1, $t1_2;
18344 $t0_1 = t;
18345 $t1_2 = Writer$addByte(w, $t0_1);
18346 return;
18347 }
18348
18349 $rt.types.getType('smesh.lol/web/common/mls.pskType')?.methods?.set('marshal', pskType$marshal);
18350 export function pskType$unmarshal(t, r) {
18351 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
18352 let $block = 0;
18353 while (true) {
18354 switch ($block) {
18355 case 0: {
18356 $t0_1 = Reader$readByte(r);
18357 $t1_2 = $t0_1[0];
18358 $t2_3 = $t0_1[1];
18359 if ($t2_3) {
18360 $block = 2; break;
18361 }
18362 else {
18363 $block = 1; break;
18364 }
18365 break;
18366 }
18367 case 1: {
18368 $t3_4 = errUnexpectedEOF.$get();
18369 return $t3_4;
18370 break;
18371 }
18372 case 2: {
18373 $t4_5 = $t1_2;
18374 t.$set($t4_5);
18375 $t5_6 = t.$get();
18376 $t6_7 = ($t5_6 === 1);
18377 if ($t6_7) {
18378 $block = 3; break;
18379 }
18380 else {
18381 $block = 4; break;
18382 }
18383 break;
18384 }
18385 case 3: {
18386 return null;
18387 break;
18388 }
18389 case 4: {
18390 $t7_8 = ($t5_6 === 2);
18391 if ($t7_8) {
18392 $block = 3; break;
18393 }
18394 else {
18395 $block = 5; break;
18396 }
18397 break;
18398 }
18399 case 5: {
18400 $t8_9 = errInvalidPSKType.$get();
18401 return $t8_9;
18402 break;
18403 }
18404 }
18405 }
18406 }
18407
18408 $rt.types.getType('smesh.lol/web/common/mls.pskType')?.methods?.set('unmarshal', pskType$unmarshal);
18409 export function resumptionPSKUsage$marshal(usage, w) {
18410 let $t0_1, $t1_2;
18411 $t0_1 = usage;
18412 $t1_2 = Writer$addByte(w, $t0_1);
18413 return;
18414 }
18415
18416 $rt.types.getType('smesh.lol/web/common/mls.resumptionPSKUsage')?.methods?.set('marshal', resumptionPSKUsage$marshal);
18417 export function resumptionPSKUsage$unmarshal(usage, r) {
18418 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
18419 let $block = 0;
18420 while (true) {
18421 switch ($block) {
18422 case 0: {
18423 $t0_1 = Reader$readByte(r);
18424 $t1_2 = $t0_1[0];
18425 $t2_3 = $t0_1[1];
18426 if ($t2_3) {
18427 $block = 2; break;
18428 }
18429 else {
18430 $block = 1; break;
18431 }
18432 break;
18433 }
18434 case 1: {
18435 $t3_4 = errUnexpectedEOF.$get();
18436 return $t3_4;
18437 break;
18438 }
18439 case 2: {
18440 $t4_5 = $t1_2;
18441 usage.$set($t4_5);
18442 $t5_6 = usage.$get();
18443 $t6_7 = ($t5_6 === 1);
18444 if ($t6_7) {
18445 $block = 3; break;
18446 }
18447 else {
18448 $block = 4; break;
18449 }
18450 break;
18451 }
18452 case 3: {
18453 return null;
18454 break;
18455 }
18456 case 4: {
18457 $t7_8 = ($t5_6 === 2);
18458 if ($t7_8) {
18459 $block = 3; break;
18460 }
18461 else {
18462 $block = 5; break;
18463 }
18464 break;
18465 }
18466 case 5: {
18467 $t8_9 = ($t5_6 === 3);
18468 if ($t8_9) {
18469 $block = 3; break;
18470 }
18471 else {
18472 $block = 6; break;
18473 }
18474 break;
18475 }
18476 case 6: {
18477 $t9_10 = errInvalidPSKUsage.$get();
18478 return $t9_10;
18479 break;
18480 }
18481 }
18482 }
18483 }
18484
18485 $rt.types.getType('smesh.lol/web/common/mls.resumptionPSKUsage')?.methods?.set('unmarshal', resumptionPSKUsage$unmarshal);
18486 export function preSharedKeyID$marshal(id, w) {
18487 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24;
18488 let $block = 0;
18489 while (true) {
18490 switch ($block) {
18491 case 0: {
18492 $t0_1 = { $get() { return id.$get().pskType; }, $set(v) { const obj = id.$get(); obj.pskType = v; id.$set(obj); } };
18493 $t1_2 = $t0_1.$get();
18494 $t2_3 = pskType$marshal($t1_2, w);
18495 $t3_4 = { $get() { return id.$get().pskType; }, $set(v) { const obj = id.$get(); obj.pskType = v; id.$set(obj); } };
18496 $t4_5 = $t3_4.$get();
18497 $t5_6 = ($t4_5 === 1);
18498 if ($t5_6) {
18499 $block = 2; break;
18500 }
18501 else {
18502 $block = 4; break;
18503 }
18504 break;
18505 }
18506 case 1: {
18507 $t6_7 = { $get() { return id.$get().pskNonce; }, $set(v) { const obj = id.$get(); obj.pskNonce = v; id.$set(obj); } };
18508 $t7_8 = $t6_7.$get();
18509 $t8_9 = Writer$writeOpaqueVec(w, $t7_8);
18510 return;
18511 break;
18512 }
18513 case 2: {
18514 $t9_10 = { $get() { return id.$get().pskID; }, $set(v) { const obj = id.$get(); obj.pskID = v; id.$set(obj); } };
18515 $t10_11 = $t9_10.$get();
18516 $t11_12 = Writer$writeOpaqueVec(w, $t10_11);
18517 $block = 1; break;
18518 break;
18519 }
18520 case 3: {
18521 $t12_13 = { $get() { return id.$get().usage; }, $set(v) { const obj = id.$get(); obj.usage = v; id.$set(obj); } };
18522 $t13_14 = $t12_13.$get();
18523 $t14_15 = resumptionPSKUsage$marshal($t13_14, w);
18524 $t15_16 = { $get() { return id.$get().pskGroupID; }, $set(v) { const obj = id.$get(); obj.pskGroupID = v; id.$set(obj); } };
18525 $t16_17 = $t15_16.$get();
18526 $t17_18 = $t16_17;
18527 $t18_19 = Writer$writeOpaqueVec(w, $t17_18);
18528 $t19_20 = { $get() { return id.$get().pskEpoch; }, $set(v) { const obj = id.$get(); obj.pskEpoch = v; id.$set(obj); } };
18529 $t20_21 = $t19_20.$get();
18530 $t21_22 = Writer$addUint64(w, $t20_21);
18531 $block = 1; break;
18532 break;
18533 }
18534 case 4: {
18535 $t22_23 = ($t4_5 === 2);
18536 if ($t22_23) {
18537 $block = 3; break;
18538 }
18539 else {
18540 $block = 5; break;
18541 }
18542 break;
18543 }
18544 case 5: {
18545 $t23_24 = $rt.types.makeInterface('string', 'unreachable');
18546 $rt.runtime.panic($t23_24);
18547 break;
18548 }
18549 }
18550 }
18551 }
18552
18553 $rt.types.getType('smesh.lol/web/common/mls.preSharedKeyID')?.methods?.set('marshal', preSharedKeyID$marshal);
18554 export function preSharedKeyID$unmarshal(id, r) {
18555 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32;
18556 let $block = 0;
18557 while (true) {
18558 switch ($block) {
18559 case 0: {
18560 id.$set($rt.builtin.cloneValue({ pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null }));
18561 $t0_1 = { $get() { return id.$get().pskType; }, $set(v) { const obj = id.$get(); obj.pskType = v; id.$set(obj); } };
18562 $t1_2 = pskType$unmarshal($t0_1, r);
18563 $t2_3 = ($t1_2 !== null);
18564 if ($t2_3) {
18565 $block = 1; break;
18566 }
18567 else {
18568 $block = 2; break;
18569 }
18570 break;
18571 }
18572 case 1: {
18573 return $t1_2;
18574 break;
18575 }
18576 case 2: {
18577 $t3_4 = { $get() { return id.$get().pskType; }, $set(v) { const obj = id.$get(); obj.pskType = v; id.$set(obj); } };
18578 $t4_5 = $t3_4.$get();
18579 $t5_6 = ($t4_5 === 1);
18580 if ($t5_6) {
18581 $block = 4; break;
18582 }
18583 else {
18584 $block = 6; break;
18585 }
18586 break;
18587 }
18588 case 3: {
18589 $t6_7 = Reader$readOpaqueVec(r);
18590 $t7_8 = $t6_7[0];
18591 $t8_9 = { $get() { return id.$get().pskNonce; }, $set(v) { const obj = id.$get(); obj.pskNonce = v; id.$set(obj); } };
18592 $t8_9.$set($t7_8);
18593 $t9_10 = $t6_7[1];
18594 if ($t9_10) {
18595 $block = 15; break;
18596 }
18597 else {
18598 $block = 14; break;
18599 }
18600 break;
18601 }
18602 case 4: {
18603 $t10_11 = Reader$readOpaqueVec(r);
18604 $t11_12 = $t10_11[0];
18605 $t12_13 = { $get() { return id.$get().pskID; }, $set(v) { const obj = id.$get(); obj.pskID = v; id.$set(obj); } };
18606 $t12_13.$set($t11_12);
18607 $t13_14 = $t10_11[1];
18608 if ($t13_14) {
18609 $block = 3; break;
18610 }
18611 else {
18612 $block = 7; break;
18613 }
18614 break;
18615 }
18616 case 5: {
18617 $t14_15 = { $get() { return id.$get().usage; }, $set(v) { const obj = id.$get(); obj.usage = v; id.$set(obj); } };
18618 $t15_16 = resumptionPSKUsage$unmarshal($t14_15, r);
18619 $t16_17 = ($t15_16 !== null);
18620 if ($t16_17) {
18621 $block = 9; break;
18622 }
18623 else {
18624 $block = 10; break;
18625 }
18626 break;
18627 }
18628 case 6: {
18629 $t17_18 = ($t4_5 === 2);
18630 if ($t17_18) {
18631 $block = 5; break;
18632 }
18633 else {
18634 $block = 8; break;
18635 }
18636 break;
18637 }
18638 case 7: {
18639 $t18_19 = errUnexpectedEOF.$get();
18640 return $t18_19;
18641 break;
18642 }
18643 case 8: {
18644 $t19_20 = $rt.types.makeInterface('string', 'unreachable');
18645 $rt.runtime.panic($t19_20);
18646 break;
18647 }
18648 case 9: {
18649 return $t15_16;
18650 break;
18651 }
18652 case 10: {
18653 $t20_21 = Reader$readOpaqueVec(r);
18654 $t21_22 = $t20_21[0];
18655 $t22_23 = { $get() { return id.$get().pskGroupID; }, $set(v) { const obj = id.$get(); obj.pskGroupID = v; id.$set(obj); } };
18656 $t23_24 = $t21_22;
18657 $t22_23.$set($t23_24);
18658 $t24_25 = $t20_21[1];
18659 if ($t24_25) {
18660 $block = 12; break;
18661 }
18662 else {
18663 $block = 11; break;
18664 }
18665 break;
18666 }
18667 case 11: {
18668 $t25_26 = errUnexpectedEOF.$get();
18669 return $t25_26;
18670 break;
18671 }
18672 case 12: {
18673 $t26_27 = Reader$readUint64(r);
18674 $t27_28 = $t26_27[0];
18675 $t28_29 = { $get() { return id.$get().pskEpoch; }, $set(v) { const obj = id.$get(); obj.pskEpoch = v; id.$set(obj); } };
18676 $t28_29.$set($t27_28);
18677 $t29_30 = $t26_27[1];
18678 if ($t29_30) {
18679 $block = 3; break;
18680 }
18681 else {
18682 $block = 13; break;
18683 }
18684 break;
18685 }
18686 case 13: {
18687 $t30_31 = errUnexpectedEOF.$get();
18688 return $t30_31;
18689 break;
18690 }
18691 case 14: {
18692 $t31_32 = errUnexpectedEOF.$get();
18693 return $t31_32;
18694 break;
18695 }
18696 case 15: {
18697 return null;
18698 break;
18699 }
18700 }
18701 }
18702 }
18703
18704 $rt.types.getType('smesh.lol/web/common/mls.preSharedKeyID')?.methods?.set('unmarshal', preSharedKeyID$unmarshal);
18705 export function pskLabel$marshal(label, w) {
18706 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
18707 $t0_1 = { $get() { return label.$get().id; }, $set(v) { const obj = label.$get(); obj.id = v; label.$set(obj); } };
18708 $t1_2 = preSharedKeyID$marshal($t0_1, w);
18709 $t2_3 = { $get() { return label.$get().index; }, $set(v) { const obj = label.$get(); obj.index = v; label.$set(obj); } };
18710 $t3_4 = $t2_3.$get();
18711 $t4_5 = Writer$addUint16(w, $t3_4);
18712 $t5_6 = { $get() { return label.$get().count; }, $set(v) { const obj = label.$get(); obj.count = v; label.$set(obj); } };
18713 $t6_7 = $t5_6.$get();
18714 $t7_8 = Writer$addUint16(w, $t6_7);
18715 return;
18716 }
18717
18718 $rt.types.getType('smesh.lol/web/common/mls.pskLabel')?.methods?.set('marshal', pskLabel$marshal);
18719 export function proposalType$marshal(t, w) {
18720 let $t0_1, $t1_2;
18721 $t0_1 = t;
18722 $t1_2 = Writer$addUint16(w, $t0_1);
18723 return;
18724 }
18725
18726 $rt.types.getType('smesh.lol/web/common/mls.proposalType')?.methods?.set('marshal', proposalType$marshal);
18727 export function proposalType$unmarshal(t, r) {
18728 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
18729 let $block = 0;
18730 while (true) {
18731 switch ($block) {
18732 case 0: {
18733 $t0_1 = Reader$readUint16(r);
18734 $t1_2 = $t0_1[0];
18735 $t2_3 = $t0_1[1];
18736 if ($t2_3) {
18737 $block = 2; break;
18738 }
18739 else {
18740 $block = 1; break;
18741 }
18742 break;
18743 }
18744 case 1: {
18745 $t3_4 = errUnexpectedEOF.$get();
18746 return $t3_4;
18747 break;
18748 }
18749 case 2: {
18750 $t4_5 = $t1_2;
18751 t.$set($t4_5);
18752 $t5_6 = t.$get();
18753 $t6_7 = ($t5_6 === 1);
18754 if ($t6_7) {
18755 $block = 3; break;
18756 }
18757 else {
18758 $block = 4; break;
18759 }
18760 break;
18761 }
18762 case 3: {
18763 return null;
18764 break;
18765 }
18766 case 4: {
18767 $t7_8 = ($t5_6 === 2);
18768 if ($t7_8) {
18769 $block = 3; break;
18770 }
18771 else {
18772 $block = 5; break;
18773 }
18774 break;
18775 }
18776 case 5: {
18777 $t8_9 = ($t5_6 === 3);
18778 if ($t8_9) {
18779 $block = 3; break;
18780 }
18781 else {
18782 $block = 6; break;
18783 }
18784 break;
18785 }
18786 case 6: {
18787 $t9_10 = ($t5_6 === 4);
18788 if ($t9_10) {
18789 $block = 3; break;
18790 }
18791 else {
18792 $block = 7; break;
18793 }
18794 break;
18795 }
18796 case 7: {
18797 $t10_11 = ($t5_6 === 5);
18798 if ($t10_11) {
18799 $block = 3; break;
18800 }
18801 else {
18802 $block = 8; break;
18803 }
18804 break;
18805 }
18806 case 8: {
18807 $t11_12 = ($t5_6 === 6);
18808 if ($t11_12) {
18809 $block = 3; break;
18810 }
18811 else {
18812 $block = 9; break;
18813 }
18814 break;
18815 }
18816 case 9: {
18817 $t12_13 = ($t5_6 === 7);
18818 if ($t12_13) {
18819 $block = 3; break;
18820 }
18821 else {
18822 $block = 10; break;
18823 }
18824 break;
18825 }
18826 case 10: {
18827 $t13_14 = errInvalidProposalType.$get();
18828 return $t13_14;
18829 break;
18830 }
18831 }
18832 }
18833 }
18834
18835 $rt.types.getType('smesh.lol/web/common/mls.proposalType')?.methods?.set('unmarshal', proposalType$unmarshal);
18836 export function proposal$marshal(prop, w) {
18837 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34;
18838 let $block = 0;
18839 while (true) {
18840 switch ($block) {
18841 case 0: {
18842 $t0_1 = { $get() { return prop.$get().proposalType; }, $set(v) { const obj = prop.$get(); obj.proposalType = v; prop.$set(obj); } };
18843 $t1_2 = $t0_1.$get();
18844 $t2_3 = proposalType$marshal($t1_2, w);
18845 $t3_4 = { $get() { return prop.$get().proposalType; }, $set(v) { const obj = prop.$get(); obj.proposalType = v; prop.$set(obj); } };
18846 $t4_5 = $t3_4.$get();
18847 $t5_6 = ($t4_5 === 1);
18848 if ($t5_6) {
18849 $block = 2; break;
18850 }
18851 else {
18852 $block = 4; break;
18853 }
18854 break;
18855 }
18856 case 1: {
18857 return;
18858 break;
18859 }
18860 case 2: {
18861 $t6_7 = { $get() { return prop.$get().add; }, $set(v) { const obj = prop.$get(); obj.add = v; prop.$set(obj); } };
18862 $t7_8 = $t6_7.$get();
18863 $t8_9 = add$marshal($t7_8, w);
18864 $block = 1; break;
18865 break;
18866 }
18867 case 3: {
18868 $t9_10 = { $get() { return prop.$get().update; }, $set(v) { const obj = prop.$get(); obj.update = v; prop.$set(obj); } };
18869 $t10_11 = $t9_10.$get();
18870 $t11_12 = update$marshal($t10_11, w);
18871 $block = 1; break;
18872 break;
18873 }
18874 case 4: {
18875 $t12_13 = ($t4_5 === 2);
18876 if ($t12_13) {
18877 $block = 3; break;
18878 }
18879 else {
18880 $block = 6; break;
18881 }
18882 break;
18883 }
18884 case 5: {
18885 $t13_14 = { $get() { return prop.$get().remove; }, $set(v) { const obj = prop.$get(); obj.remove = v; prop.$set(obj); } };
18886 $t14_15 = $t13_14.$get();
18887 $t15_16 = remove$marshal($t14_15, w);
18888 $block = 1; break;
18889 break;
18890 }
18891 case 6: {
18892 $t16_17 = ($t4_5 === 3);
18893 if ($t16_17) {
18894 $block = 5; break;
18895 }
18896 else {
18897 $block = 8; break;
18898 }
18899 break;
18900 }
18901 case 7: {
18902 $t17_18 = { $get() { return prop.$get().preSharedKey; }, $set(v) { const obj = prop.$get(); obj.preSharedKey = v; prop.$set(obj); } };
18903 $t18_19 = $t17_18.$get();
18904 $t19_20 = preSharedKey$marshal($t18_19, w);
18905 $block = 1; break;
18906 break;
18907 }
18908 case 8: {
18909 $t20_21 = ($t4_5 === 4);
18910 if ($t20_21) {
18911 $block = 7; break;
18912 }
18913 else {
18914 $block = 10; break;
18915 }
18916 break;
18917 }
18918 case 9: {
18919 $t21_22 = { $get() { return prop.$get().reInit; }, $set(v) { const obj = prop.$get(); obj.reInit = v; prop.$set(obj); } };
18920 $t22_23 = $t21_22.$get();
18921 $t23_24 = reInit$marshal($t22_23, w);
18922 $block = 1; break;
18923 break;
18924 }
18925 case 10: {
18926 $t24_25 = ($t4_5 === 5);
18927 if ($t24_25) {
18928 $block = 9; break;
18929 }
18930 else {
18931 $block = 12; break;
18932 }
18933 break;
18934 }
18935 case 11: {
18936 $t25_26 = { $get() { return prop.$get().externalInit; }, $set(v) { const obj = prop.$get(); obj.externalInit = v; prop.$set(obj); } };
18937 $t26_27 = $t25_26.$get();
18938 $t27_28 = externalInit$marshal($t26_27, w);
18939 $block = 1; break;
18940 break;
18941 }
18942 case 12: {
18943 $t28_29 = ($t4_5 === 6);
18944 if ($t28_29) {
18945 $block = 11; break;
18946 }
18947 else {
18948 $block = 14; break;
18949 }
18950 break;
18951 }
18952 case 13: {
18953 $t29_30 = { $get() { return prop.$get().groupContextExtensions; }, $set(v) { const obj = prop.$get(); obj.groupContextExtensions = v; prop.$set(obj); } };
18954 $t30_31 = $t29_30.$get();
18955 $t31_32 = groupContextExtensions$marshal($t30_31, w);
18956 $block = 1; break;
18957 break;
18958 }
18959 case 14: {
18960 $t32_33 = ($t4_5 === 7);
18961 if ($t32_33) {
18962 $block = 13; break;
18963 }
18964 else {
18965 $block = 15; break;
18966 }
18967 break;
18968 }
18969 case 15: {
18970 $t33_34 = $rt.types.makeInterface('string', 'unreachable');
18971 $rt.runtime.panic($t33_34);
18972 break;
18973 }
18974 }
18975 }
18976 }
18977
18978 $rt.types.getType('smesh.lol/web/common/mls.proposal')?.methods?.set('marshal', proposal$marshal);
18979 export function proposal$unmarshal(prop, r) {
18980 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48;
18981 let $block = 0;
18982 while (true) {
18983 switch ($block) {
18984 case 0: {
18985 prop.$set($rt.builtin.cloneValue({ proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }));
18986 $t0_1 = { $get() { return prop.$get().proposalType; }, $set(v) { const obj = prop.$get(); obj.proposalType = v; prop.$set(obj); } };
18987 $t1_2 = proposalType$unmarshal($t0_1, r);
18988 $t2_3 = ($t1_2 !== null);
18989 if ($t2_3) {
18990 $block = 1; break;
18991 }
18992 else {
18993 $block = 2; break;
18994 }
18995 break;
18996 }
18997 case 1: {
18998 return $t1_2;
18999 break;
19000 }
19001 case 2: {
19002 $t3_4 = { $get() { return prop.$get().proposalType; }, $set(v) { const obj = prop.$get(); obj.proposalType = v; prop.$set(obj); } };
19003 $t4_5 = $t3_4.$get();
19004 $t5_6 = ($t4_5 === 1);
19005 if ($t5_6) {
19006 $block = 3; break;
19007 }
19008 else {
19009 $block = 5; break;
19010 }
19011 break;
19012 }
19013 case 3: {
19014 $t6_7 = { $value: { keyPackage: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19015 $t7_8 = { $get() { return prop.$get().add; }, $set(v) { const obj = prop.$get(); obj.add = v; prop.$set(obj); } };
19016 $t7_8.$set($t6_7);
19017 $t8_9 = { $get() { return prop.$get().add; }, $set(v) { const obj = prop.$get(); obj.add = v; prop.$set(obj); } };
19018 $t9_10 = $t8_9.$get();
19019 $t10_11 = add$unmarshal($t9_10, r);
19020 return $t10_11;
19021 break;
19022 }
19023 case 4: {
19024 $t11_12 = { $value: { leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19025 $t12_13 = { $get() { return prop.$get().update; }, $set(v) { const obj = prop.$get(); obj.update = v; prop.$set(obj); } };
19026 $t12_13.$set($t11_12);
19027 $t13_14 = { $get() { return prop.$get().update; }, $set(v) { const obj = prop.$get(); obj.update = v; prop.$set(obj); } };
19028 $t14_15 = $t13_14.$get();
19029 $t15_16 = update$unmarshal($t14_15, r);
19030 return $t15_16;
19031 break;
19032 }
19033 case 5: {
19034 $t16_17 = ($t4_5 === 2);
19035 if ($t16_17) {
19036 $block = 4; break;
19037 }
19038 else {
19039 $block = 7; break;
19040 }
19041 break;
19042 }
19043 case 6: {
19044 $t17_18 = { $value: { removed: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19045 $t18_19 = { $get() { return prop.$get().remove; }, $set(v) { const obj = prop.$get(); obj.remove = v; prop.$set(obj); } };
19046 $t18_19.$set($t17_18);
19047 $t19_20 = { $get() { return prop.$get().remove; }, $set(v) { const obj = prop.$get(); obj.remove = v; prop.$set(obj); } };
19048 $t20_21 = $t19_20.$get();
19049 $t21_22 = remove$unmarshal($t20_21, r);
19050 return $t21_22;
19051 break;
19052 }
19053 case 7: {
19054 $t22_23 = ($t4_5 === 3);
19055 if ($t22_23) {
19056 $block = 6; break;
19057 }
19058 else {
19059 $block = 9; break;
19060 }
19061 break;
19062 }
19063 case 8: {
19064 $t23_24 = { $value: { psk: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null } }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19065 $t24_25 = { $get() { return prop.$get().preSharedKey; }, $set(v) { const obj = prop.$get(); obj.preSharedKey = v; prop.$set(obj); } };
19066 $t24_25.$set($t23_24);
19067 $t25_26 = { $get() { return prop.$get().preSharedKey; }, $set(v) { const obj = prop.$get(); obj.preSharedKey = v; prop.$set(obj); } };
19068 $t26_27 = $t25_26.$get();
19069 $t27_28 = preSharedKey$unmarshal($t26_27, r);
19070 return $t27_28;
19071 break;
19072 }
19073 case 9: {
19074 $t28_29 = ($t4_5 === 4);
19075 if ($t28_29) {
19076 $block = 8; break;
19077 }
19078 else {
19079 $block = 11; break;
19080 }
19081 break;
19082 }
19083 case 10: {
19084 $t29_30 = { $value: { groupID: null, version: 0, cipherSuite: 0, extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19085 $t30_31 = { $get() { return prop.$get().reInit; }, $set(v) { const obj = prop.$get(); obj.reInit = v; prop.$set(obj); } };
19086 $t30_31.$set($t29_30);
19087 $t31_32 = { $get() { return prop.$get().reInit; }, $set(v) { const obj = prop.$get(); obj.reInit = v; prop.$set(obj); } };
19088 $t32_33 = $t31_32.$get();
19089 $t33_34 = reInit$unmarshal($t32_33, r);
19090 return $t33_34;
19091 break;
19092 }
19093 case 11: {
19094 $t34_35 = ($t4_5 === 5);
19095 if ($t34_35) {
19096 $block = 10; break;
19097 }
19098 else {
19099 $block = 13; break;
19100 }
19101 break;
19102 }
19103 case 12: {
19104 $t35_36 = { $value: { kemOutput: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19105 $t36_37 = { $get() { return prop.$get().externalInit; }, $set(v) { const obj = prop.$get(); obj.externalInit = v; prop.$set(obj); } };
19106 $t36_37.$set($t35_36);
19107 $t37_38 = { $get() { return prop.$get().externalInit; }, $set(v) { const obj = prop.$get(); obj.externalInit = v; prop.$set(obj); } };
19108 $t38_39 = $t37_38.$get();
19109 $t39_40 = externalInit$unmarshal($t38_39, r);
19110 return $t39_40;
19111 break;
19112 }
19113 case 13: {
19114 $t40_41 = ($t4_5 === 6);
19115 if ($t40_41) {
19116 $block = 12; break;
19117 }
19118 else {
19119 $block = 15; break;
19120 }
19121 break;
19122 }
19123 case 14: {
19124 $t41_42 = { $value: { extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19125 $t42_43 = { $get() { return prop.$get().groupContextExtensions; }, $set(v) { const obj = prop.$get(); obj.groupContextExtensions = v; prop.$set(obj); } };
19126 $t42_43.$set($t41_42);
19127 $t43_44 = { $get() { return prop.$get().groupContextExtensions; }, $set(v) { const obj = prop.$get(); obj.groupContextExtensions = v; prop.$set(obj); } };
19128 $t44_45 = $t43_44.$get();
19129 $t45_46 = groupContextExtensions$unmarshal($t44_45, r);
19130 return $t45_46;
19131 break;
19132 }
19133 case 15: {
19134 $t46_47 = ($t4_5 === 7);
19135 if ($t46_47) {
19136 $block = 14; break;
19137 }
19138 else {
19139 $block = 16; break;
19140 }
19141 break;
19142 }
19143 case 16: {
19144 $t47_48 = $rt.types.makeInterface('string', 'unreachable');
19145 $rt.runtime.panic($t47_48);
19146 break;
19147 }
19148 }
19149 }
19150 }
19151
19152 $rt.types.getType('smesh.lol/web/common/mls.proposal')?.methods?.set('unmarshal', proposal$unmarshal);
19153 export function add$marshal(a, w) {
19154 let $t0_1, $t1_2;
19155 $t0_1 = { $get() { return a.$get().keyPackage; }, $set(v) { const obj = a.$get(); obj.keyPackage = v; a.$set(obj); } };
19156 $t1_2 = KeyPackage$marshal($t0_1, w);
19157 return;
19158 }
19159
19160 $rt.types.getType('smesh.lol/web/common/mls.add')?.methods?.set('marshal', add$marshal);
19161 export function add$unmarshal(a, r) {
19162 let $t0_1, $t1_2;
19163 a.$set($rt.builtin.cloneValue({ keyPackage: { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null } }));
19164 $t0_1 = { $get() { return a.$get().keyPackage; }, $set(v) { const obj = a.$get(); obj.keyPackage = v; a.$set(obj); } };
19165 $t1_2 = KeyPackage$unmarshal($t0_1, r);
19166 return $t1_2;
19167 }
19168
19169 $rt.types.getType('smesh.lol/web/common/mls.add')?.methods?.set('unmarshal', add$unmarshal);
19170 export function update$marshal(upd, w) {
19171 let $t0_1, $t1_2;
19172 $t0_1 = { $get() { return upd.$get().leafNode; }, $set(v) { const obj = upd.$get(); obj.leafNode = v; upd.$set(obj); } };
19173 $t1_2 = leafNode$marshal($t0_1, w);
19174 return;
19175 }
19176
19177 $rt.types.getType('smesh.lol/web/common/mls.update')?.methods?.set('marshal', update$marshal);
19178 export function update$unmarshal(upd, r) {
19179 let $t0_1, $t1_2;
19180 upd.$set($rt.builtin.cloneValue({ leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null } }));
19181 $t0_1 = { $get() { return upd.$get().leafNode; }, $set(v) { const obj = upd.$get(); obj.leafNode = v; upd.$set(obj); } };
19182 $t1_2 = leafNode$unmarshal($t0_1, r);
19183 return $t1_2;
19184 }
19185
19186 $rt.types.getType('smesh.lol/web/common/mls.update')?.methods?.set('unmarshal', update$unmarshal);
19187 export function remove$marshal(rm, w) {
19188 let $t0_1, $t1_2, $t2_3, $t3_4;
19189 $t0_1 = { $get() { return rm.$get().removed; }, $set(v) { const obj = rm.$get(); obj.removed = v; rm.$set(obj); } };
19190 $t1_2 = $t0_1.$get();
19191 $t2_3 = $t1_2;
19192 $t3_4 = Writer$addUint32(w, $t2_3);
19193 return;
19194 }
19195
19196 $rt.types.getType('smesh.lol/web/common/mls.remove')?.methods?.set('marshal', remove$marshal);
19197 export function remove$unmarshal(rm, r) {
19198 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
19199 let $block = 0;
19200 while (true) {
19201 switch ($block) {
19202 case 0: {
19203 rm.$set($rt.builtin.cloneValue({ removed: 0 }));
19204 $t0_1 = Reader$readUint32(r);
19205 $t1_2 = $t0_1[0];
19206 $t2_3 = $t0_1[1];
19207 if ($t2_3) {
19208 $block = 2; break;
19209 }
19210 else {
19211 $block = 1; break;
19212 }
19213 break;
19214 }
19215 case 1: {
19216 $t3_4 = errUnexpectedEOF.$get();
19217 return $t3_4;
19218 break;
19219 }
19220 case 2: {
19221 $t4_5 = $t1_2;
19222 $t5_6 = { $get() { return rm.$get().removed; }, $set(v) { const obj = rm.$get(); obj.removed = v; rm.$set(obj); } };
19223 $t5_6.$set($t4_5);
19224 return null;
19225 break;
19226 }
19227 }
19228 }
19229 }
19230
19231 $rt.types.getType('smesh.lol/web/common/mls.remove')?.methods?.set('unmarshal', remove$unmarshal);
19232 export function preSharedKey$marshal(psk, w) {
19233 let $t0_1, $t1_2;
19234 $t0_1 = { $get() { return psk.$get().psk; }, $set(v) { const obj = psk.$get(); obj.psk = v; psk.$set(obj); } };
19235 $t1_2 = preSharedKeyID$marshal($t0_1, w);
19236 return;
19237 }
19238
19239 $rt.types.getType('smesh.lol/web/common/mls.preSharedKey')?.methods?.set('marshal', preSharedKey$marshal);
19240 export function preSharedKey$unmarshal(psk, r) {
19241 let $t0_1, $t1_2;
19242 psk.$set($rt.builtin.cloneValue({ psk: { pskType: 0, pskID: null, usage: 0, pskGroupID: null, pskEpoch: 0n, pskNonce: null } }));
19243 $t0_1 = { $get() { return psk.$get().psk; }, $set(v) { const obj = psk.$get(); obj.psk = v; psk.$set(obj); } };
19244 $t1_2 = preSharedKeyID$unmarshal($t0_1, r);
19245 return $t1_2;
19246 }
19247
19248 $rt.types.getType('smesh.lol/web/common/mls.preSharedKey')?.methods?.set('unmarshal', preSharedKey$unmarshal);
19249 export function reInit$marshal(ri, w) {
19250 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
19251 $t0_1 = { $get() { return ri.$get().groupID; }, $set(v) { const obj = ri.$get(); obj.groupID = v; ri.$set(obj); } };
19252 $t1_2 = $t0_1.$get();
19253 $t2_3 = $t1_2;
19254 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
19255 $t4_5 = { $get() { return ri.$get().version; }, $set(v) { const obj = ri.$get(); obj.version = v; ri.$set(obj); } };
19256 $t5_6 = $t4_5.$get();
19257 $t6_7 = $t5_6;
19258 $t7_8 = Writer$addUint16(w, $t6_7);
19259 $t8_9 = { $get() { return ri.$get().cipherSuite; }, $set(v) { const obj = ri.$get(); obj.cipherSuite = v; ri.$set(obj); } };
19260 $t9_10 = $t8_9.$get();
19261 $t10_11 = $t9_10;
19262 $t11_12 = Writer$addUint16(w, $t10_11);
19263 $t12_13 = { $get() { return ri.$get().extensions; }, $set(v) { const obj = ri.$get(); obj.extensions = v; ri.$set(obj); } };
19264 $t13_14 = $t12_13.$get();
19265 $t14_15 = marshalExtensionVec(w, $t13_14);
19266 return;
19267 }
19268
19269 $rt.types.getType('smesh.lol/web/common/mls.reInit')?.methods?.set('marshal', reInit$marshal);
19270 export function reInit$unmarshal(ri, r) {
19271 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
19272 let $block = 0;
19273 while (true) {
19274 switch ($block) {
19275 case 0: {
19276 ri.$set($rt.builtin.cloneValue({ groupID: null, version: 0, cipherSuite: 0, extensions: null }));
19277 $t0_1 = Reader$readOpaqueVec(r);
19278 $t1_2 = $t0_1[0];
19279 $t2_3 = { $get() { return ri.$get().groupID; }, $set(v) { const obj = ri.$get(); obj.groupID = v; ri.$set(obj); } };
19280 $t3_4 = $t1_2;
19281 $t2_3.$set($t3_4);
19282 $t4_5 = $t0_1[1];
19283 if ($t4_5) {
19284 $block = 2; break;
19285 }
19286 else {
19287 $block = 1; break;
19288 }
19289 break;
19290 }
19291 case 1: {
19292 $t5_6 = errUnexpectedEOF.$get();
19293 return $t5_6;
19294 break;
19295 }
19296 case 2: {
19297 $t6_7 = Reader$readUint16(r);
19298 $t7_8 = $t6_7[0];
19299 $t8_9 = $t6_7[1];
19300 if ($t8_9) {
19301 $block = 4; break;
19302 }
19303 else {
19304 $block = 3; break;
19305 }
19306 break;
19307 }
19308 case 3: {
19309 $t9_10 = errUnexpectedEOF.$get();
19310 return $t9_10;
19311 break;
19312 }
19313 case 4: {
19314 $t10_11 = $t7_8;
19315 $t11_12 = { $get() { return ri.$get().version; }, $set(v) { const obj = ri.$get(); obj.version = v; ri.$set(obj); } };
19316 $t11_12.$set($t10_11);
19317 $t12_13 = Reader$readUint16(r);
19318 $t13_14 = $t12_13[0];
19319 $t14_15 = $t12_13[1];
19320 if ($t14_15) {
19321 $block = 6; break;
19322 }
19323 else {
19324 $block = 5; break;
19325 }
19326 break;
19327 }
19328 case 5: {
19329 $t15_16 = errUnexpectedEOF.$get();
19330 return $t15_16;
19331 break;
19332 }
19333 case 6: {
19334 $t16_17 = $t13_14;
19335 $t17_18 = { $get() { return ri.$get().cipherSuite; }, $set(v) { const obj = ri.$get(); obj.cipherSuite = v; ri.$set(obj); } };
19336 $t17_18.$set($t16_17);
19337 $t18_19 = unmarshalExtensionVec(r);
19338 $t19_20 = $t18_19[0];
19339 $t20_21 = $t18_19[1];
19340 $t21_22 = ($t20_21 !== null);
19341 if ($t21_22) {
19342 $block = 7; break;
19343 }
19344 else {
19345 $block = 8; break;
19346 }
19347 break;
19348 }
19349 case 7: {
19350 return $t20_21;
19351 break;
19352 }
19353 case 8: {
19354 $t22_23 = { $get() { return ri.$get().extensions; }, $set(v) { const obj = ri.$get(); obj.extensions = v; ri.$set(obj); } };
19355 $t22_23.$set($t19_20);
19356 return null;
19357 break;
19358 }
19359 }
19360 }
19361 }
19362
19363 $rt.types.getType('smesh.lol/web/common/mls.reInit')?.methods?.set('unmarshal', reInit$unmarshal);
19364 export function externalInit$marshal(ei, w) {
19365 let $t0_1, $t1_2, $t2_3;
19366 $t0_1 = { $get() { return ei.$get().kemOutput; }, $set(v) { const obj = ei.$get(); obj.kemOutput = v; ei.$set(obj); } };
19367 $t1_2 = $t0_1.$get();
19368 $t2_3 = Writer$writeOpaqueVec(w, $t1_2);
19369 return;
19370 }
19371
19372 $rt.types.getType('smesh.lol/web/common/mls.externalInit')?.methods?.set('marshal', externalInit$marshal);
19373 export function externalInit$unmarshal(ei, r) {
19374 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
19375 let $block = 0;
19376 while (true) {
19377 switch ($block) {
19378 case 0: {
19379 ei.$set($rt.builtin.cloneValue({ kemOutput: null }));
19380 $t0_1 = Reader$readOpaqueVec(r);
19381 $t1_2 = $t0_1[0];
19382 $t2_3 = { $get() { return ei.$get().kemOutput; }, $set(v) { const obj = ei.$get(); obj.kemOutput = v; ei.$set(obj); } };
19383 $t2_3.$set($t1_2);
19384 $t3_4 = $t0_1[1];
19385 if ($t3_4) {
19386 $block = 2; break;
19387 }
19388 else {
19389 $block = 1; break;
19390 }
19391 break;
19392 }
19393 case 1: {
19394 $t4_5 = errUnexpectedEOF.$get();
19395 return $t4_5;
19396 break;
19397 }
19398 case 2: {
19399 return null;
19400 break;
19401 }
19402 }
19403 }
19404 }
19405
19406 $rt.types.getType('smesh.lol/web/common/mls.externalInit')?.methods?.set('unmarshal', externalInit$unmarshal);
19407 export function groupContextExtensions$marshal(exts, w) {
19408 let $t0_1, $t1_2, $t2_3;
19409 $t0_1 = { $get() { return exts.$get().extensions; }, $set(v) { const obj = exts.$get(); obj.extensions = v; exts.$set(obj); } };
19410 $t1_2 = $t0_1.$get();
19411 $t2_3 = marshalExtensionVec(w, $t1_2);
19412 return;
19413 }
19414
19415 $rt.types.getType('smesh.lol/web/common/mls.groupContextExtensions')?.methods?.set('marshal', groupContextExtensions$marshal);
19416 export function groupContextExtensions$unmarshal(exts, r) {
19417 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
19418 let $block = 0;
19419 while (true) {
19420 switch ($block) {
19421 case 0: {
19422 exts.$set($rt.builtin.cloneValue({ extensions: null }));
19423 $t0_1 = unmarshalExtensionVec(r);
19424 $t1_2 = $t0_1[0];
19425 $t2_3 = $t0_1[1];
19426 $t3_4 = ($t2_3 !== null);
19427 if ($t3_4) {
19428 $block = 1; break;
19429 }
19430 else {
19431 $block = 2; break;
19432 }
19433 break;
19434 }
19435 case 1: {
19436 return $t2_3;
19437 break;
19438 }
19439 case 2: {
19440 $t4_5 = { $get() { return exts.$get().extensions; }, $set(v) { const obj = exts.$get(); obj.extensions = v; exts.$set(obj); } };
19441 $t4_5.$set($t1_2);
19442 return null;
19443 break;
19444 }
19445 }
19446 }
19447 }
19448
19449 $rt.types.getType('smesh.lol/web/common/mls.groupContextExtensions')?.methods?.set('unmarshal', groupContextExtensions$unmarshal);
19450 export function proposalOrRefType$marshal(t, w) {
19451 let $t0_1, $t1_2;
19452 $t0_1 = t;
19453 $t1_2 = Writer$addByte(w, $t0_1);
19454 return;
19455 }
19456
19457 $rt.types.getType('smesh.lol/web/common/mls.proposalOrRefType')?.methods?.set('marshal', proposalOrRefType$marshal);
19458 export function proposalOrRefType$unmarshal(t, r) {
19459 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
19460 let $block = 0;
19461 while (true) {
19462 switch ($block) {
19463 case 0: {
19464 $t0_1 = Reader$readByte(r);
19465 $t1_2 = $t0_1[0];
19466 $t2_3 = $t0_1[1];
19467 if ($t2_3) {
19468 $block = 2; break;
19469 }
19470 else {
19471 $block = 1; break;
19472 }
19473 break;
19474 }
19475 case 1: {
19476 $t3_4 = errUnexpectedEOF.$get();
19477 return $t3_4;
19478 break;
19479 }
19480 case 2: {
19481 $t4_5 = $t1_2;
19482 t.$set($t4_5);
19483 $t5_6 = t.$get();
19484 $t6_7 = ($t5_6 === 1);
19485 if ($t6_7) {
19486 $block = 3; break;
19487 }
19488 else {
19489 $block = 4; break;
19490 }
19491 break;
19492 }
19493 case 3: {
19494 return null;
19495 break;
19496 }
19497 case 4: {
19498 $t7_8 = ($t5_6 === 2);
19499 if ($t7_8) {
19500 $block = 3; break;
19501 }
19502 else {
19503 $block = 5; break;
19504 }
19505 break;
19506 }
19507 case 5: {
19508 $t8_9 = errInvalidProposalOrRefType.$get();
19509 return $t8_9;
19510 break;
19511 }
19512 }
19513 }
19514 }
19515
19516 $rt.types.getType('smesh.lol/web/common/mls.proposalOrRefType')?.methods?.set('unmarshal', proposalOrRefType$unmarshal);
19517 export function proposalRef$equal(ref, other) {
19518 let $t0_1, $t1_2, $t2_3;
19519 $t0_1 = ref;
19520 $t1_2 = other;
19521 $t2_3 = bytesEqual($t0_1, $t1_2);
19522 return $t2_3;
19523 }
19524
19525 $rt.types.getType('smesh.lol/web/common/mls.proposalRef')?.methods?.set('equal', proposalRef$equal);
19526 export function proposalOrRef$marshal(por, w) {
19527 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
19528 let $block = 0;
19529 while (true) {
19530 switch ($block) {
19531 case 0: {
19532 $t0_1 = { $get() { return por.$get().typ; }, $set(v) { const obj = por.$get(); obj.typ = v; por.$set(obj); } };
19533 $t1_2 = $t0_1.$get();
19534 $t2_3 = proposalOrRefType$marshal($t1_2, w);
19535 $t3_4 = { $get() { return por.$get().typ; }, $set(v) { const obj = por.$get(); obj.typ = v; por.$set(obj); } };
19536 $t4_5 = $t3_4.$get();
19537 $t5_6 = ($t4_5 === 1);
19538 if ($t5_6) {
19539 $block = 2; break;
19540 }
19541 else {
19542 $block = 4; break;
19543 }
19544 break;
19545 }
19546 case 1: {
19547 return;
19548 break;
19549 }
19550 case 2: {
19551 $t6_7 = { $get() { return por.$get().proposal; }, $set(v) { const obj = por.$get(); obj.proposal = v; por.$set(obj); } };
19552 $t7_8 = $t6_7.$get();
19553 $t8_9 = proposal$marshal($t7_8, w);
19554 $block = 1; break;
19555 break;
19556 }
19557 case 3: {
19558 $t9_10 = { $get() { return por.$get().reference; }, $set(v) { const obj = por.$get(); obj.reference = v; por.$set(obj); } };
19559 $t10_11 = $t9_10.$get();
19560 $t11_12 = $t10_11;
19561 $t12_13 = Writer$writeOpaqueVec(w, $t11_12);
19562 $block = 1; break;
19563 break;
19564 }
19565 case 4: {
19566 $t13_14 = ($t4_5 === 2);
19567 if ($t13_14) {
19568 $block = 3; break;
19569 }
19570 else {
19571 $block = 5; break;
19572 }
19573 break;
19574 }
19575 case 5: {
19576 $t14_15 = $rt.types.makeInterface('string', 'unreachable');
19577 $rt.runtime.panic($t14_15);
19578 break;
19579 }
19580 }
19581 }
19582 }
19583
19584 $rt.types.getType('smesh.lol/web/common/mls.proposalOrRef')?.methods?.set('marshal', proposalOrRef$marshal);
19585 export function proposalOrRef$unmarshal(por, r) {
19586 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19;
19587 let $block = 0;
19588 while (true) {
19589 switch ($block) {
19590 case 0: {
19591 por.$set($rt.builtin.cloneValue({ typ: 0, proposal: null, reference: null }));
19592 $t0_1 = { $get() { return por.$get().typ; }, $set(v) { const obj = por.$get(); obj.typ = v; por.$set(obj); } };
19593 $t1_2 = proposalOrRefType$unmarshal($t0_1, r);
19594 $t2_3 = ($t1_2 !== null);
19595 if ($t2_3) {
19596 $block = 1; break;
19597 }
19598 else {
19599 $block = 2; break;
19600 }
19601 break;
19602 }
19603 case 1: {
19604 return $t1_2;
19605 break;
19606 }
19607 case 2: {
19608 $t3_4 = { $get() { return por.$get().typ; }, $set(v) { const obj = por.$get(); obj.typ = v; por.$set(obj); } };
19609 $t4_5 = $t3_4.$get();
19610 $t5_6 = ($t4_5 === 1);
19611 if ($t5_6) {
19612 $block = 3; break;
19613 }
19614 else {
19615 $block = 5; break;
19616 }
19617 break;
19618 }
19619 case 3: {
19620 $t6_7 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19621 $t7_8 = { $get() { return por.$get().proposal; }, $set(v) { const obj = por.$get(); obj.proposal = v; por.$set(obj); } };
19622 $t7_8.$set($t6_7);
19623 $t8_9 = { $get() { return por.$get().proposal; }, $set(v) { const obj = por.$get(); obj.proposal = v; por.$set(obj); } };
19624 $t9_10 = $t8_9.$get();
19625 $t10_11 = proposal$unmarshal($t9_10, r);
19626 return $t10_11;
19627 break;
19628 }
19629 case 4: {
19630 $t11_12 = Reader$readOpaqueVec(r);
19631 $t12_13 = $t11_12[0];
19632 $t13_14 = { $get() { return por.$get().reference; }, $set(v) { const obj = por.$get(); obj.reference = v; por.$set(obj); } };
19633 $t14_15 = $t12_13;
19634 $t13_14.$set($t14_15);
19635 $t15_16 = $t11_12[1];
19636 if ($t15_16) {
19637 $block = 8; break;
19638 }
19639 else {
19640 $block = 7; break;
19641 }
19642 break;
19643 }
19644 case 5: {
19645 $t16_17 = ($t4_5 === 2);
19646 if ($t16_17) {
19647 $block = 4; break;
19648 }
19649 else {
19650 $block = 6; break;
19651 }
19652 break;
19653 }
19654 case 6: {
19655 $t17_18 = $rt.types.makeInterface('string', 'unreachable');
19656 $rt.runtime.panic($t17_18);
19657 break;
19658 }
19659 case 7: {
19660 $t18_19 = errUnexpectedEOF.$get();
19661 return $t18_19;
19662 break;
19663 }
19664 case 8: {
19665 return null;
19666 break;
19667 }
19668 }
19669 }
19670 }
19671
19672 $rt.types.getType('smesh.lol/web/common/mls.proposalOrRef')?.methods?.set('unmarshal', proposalOrRef$unmarshal);
19673 export function secretTree$deriveChildren(tree, cs, x) {
19674 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
19675 let $block = 0;
19676 while (true) {
19677 switch ($block) {
19678 case 0: {
19679 $t0_1 = nodeIndex$children(x);
19680 $t1_2 = $t0_1[0];
19681 $t2_3 = $t0_1[1];
19682 $t3_4 = $t0_1[2];
19683 if ($t3_4) {
19684 $block = 2; break;
19685 }
19686 else {
19687 $block = 1; break;
19688 }
19689 break;
19690 }
19691 case 1: {
19692 return null;
19693 break;
19694 }
19695 case 2: {
19696 $t4_5 = secretTree$get(tree, x);
19697 $t5_6 = CipherSuite$ExtractSize(cs);
19698 $t6_7 = ($t5_6 & 0xFFFF);
19699 $t7_8 = CipherSuite$expandWithLabel(cs, $t4_5, 'tree', 'left', $t6_7);
19700 $t8_9 = $t7_8[0];
19701 $t9_10 = $t7_8[1];
19702 $t10_11 = ($t9_10 !== null);
19703 if ($t10_11) {
19704 $block = 3; break;
19705 }
19706 else {
19707 $block = 4; break;
19708 }
19709 break;
19710 }
19711 case 3: {
19712 return $t9_10;
19713 break;
19714 }
19715 case 4: {
19716 $t11_12 = CipherSuite$expandWithLabel(cs, $t4_5, 'tree', 'right', $t6_7);
19717 $t12_13 = $t11_12[0];
19718 $t13_14 = $t11_12[1];
19719 $t14_15 = ($t13_14 !== null);
19720 if ($t14_15) {
19721 $block = 5; break;
19722 }
19723 else {
19724 $block = 6; break;
19725 }
19726 break;
19727 }
19728 case 5: {
19729 return $t13_14;
19730 break;
19731 }
19732 case 6: {
19733 $t15_16 = secretTree$set(tree, $t1_2, $t8_9);
19734 $t16_17 = secretTree$set(tree, $t2_3, $t12_13);
19735 $t17_18 = secretTree$deriveChildren(tree, cs, $t1_2);
19736 $t18_19 = ($t17_18 !== null);
19737 if ($t18_19) {
19738 $block = 7; break;
19739 }
19740 else {
19741 $block = 8; break;
19742 }
19743 break;
19744 }
19745 case 7: {
19746 return $t17_18;
19747 break;
19748 }
19749 case 8: {
19750 $t19_20 = secretTree$deriveChildren(tree, cs, $t2_3);
19751 return $t19_20;
19752 break;
19753 }
19754 }
19755 }
19756 }
19757
19758 $rt.types.getType('smesh.lol/web/common/mls.secretTree')?.methods?.set('deriveChildren', secretTree$deriveChildren);
19759 export function secretTree$deriveRatchetRoot(tree, cs, ni, label) {
19760 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
19761 $t0_1 = CipherSuite$ExtractSize(cs);
19762 $t1_2 = ($t0_1 & 0xFFFF);
19763 $t2_3 = secretTree$get(tree, ni);
19764 $t3_4 = label;
19765 $t4_5 = CipherSuite$expandWithLabel(cs, $t2_3, $t3_4, null, $t1_2);
19766 $t5_6 = $t4_5[0];
19767 $t6_7 = $t4_5[1];
19768 $t7_8 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19769 $t8_9 = { $get() { return $t7_8.$get().secret; }, $set(v) { const obj = $t7_8.$get(); obj.secret = v; $t7_8.$set(obj); } };
19770 $t9_10 = { $get() { return $t7_8.$get().generation; }, $set(v) { const obj = $t7_8.$get(); obj.generation = v; $t7_8.$set(obj); } };
19771 $t8_9.$set($t5_6);
19772 $t9_10.$set(0);
19773 $t10_11 = $t7_8.$get();
19774 return [$t10_11, $t6_7];
19775 }
19776
19777 $rt.types.getType('smesh.lol/web/common/mls.secretTree')?.methods?.set('deriveRatchetRoot', secretTree$deriveRatchetRoot);
19778 export function secretTree$get(tree, ni) {
19779 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
19780 let $block = 0;
19781 while (true) {
19782 switch ($block) {
19783 case 0: {
19784 $t0_1 = ni;
19785 $t1_2 = tree.addr($t0_1);
19786 $t2_3 = $t1_2.$get();
19787 $t3_4 = $rt.builtin.stringEqual($t2_3, null);
19788 if ($t3_4) {
19789 $block = 1; break;
19790 }
19791 else {
19792 $block = 2; break;
19793 }
19794 break;
19795 }
19796 case 1: {
19797 $t4_5 = $rt.types.makeInterface('string', 'empty node in secret tree');
19798 $rt.runtime.panic($t4_5);
19799 break;
19800 }
19801 case 2: {
19802 return $t2_3;
19803 break;
19804 }
19805 }
19806 }
19807 }
19808
19809 $rt.types.getType('smesh.lol/web/common/mls.secretTree')?.methods?.set('get', secretTree$get);
19810 export function secretTree$set(tree, ni, secret) {
19811 let $t0_1, $t1_2;
19812 $t0_1 = ni;
19813 $t1_2 = tree.addr($t0_1);
19814 $t1_2.$set(secret);
19815 return;
19816 }
19817
19818 $rt.types.getType('smesh.lol/web/common/mls.secretTree')?.methods?.set('set', secretTree$set);
19819 export function ratchetSecret$deriveKey(secret, cs) {
19820 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
19821 $t0_1 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19822 $t0_1.$set($rt.builtin.cloneValue(secret));
19823 $t1_2 = { $get() { return $t0_1.$get().secret; }, $set(v) { const obj = $t0_1.$get(); obj.secret = v; $t0_1.$set(obj); } };
19824 $t2_3 = $t1_2.$get();
19825 $t3_4 = { $get() { return $t0_1.$get().generation; }, $set(v) { const obj = $t0_1.$get(); obj.generation = v; $t0_1.$set(obj); } };
19826 $t4_5 = $t3_4.$get();
19827 $t5_6 = CipherSuite$AEADKeySize(cs);
19828 $t6_7 = ($t5_6 & 0xFFFF);
19829 $t7_8 = deriveTreeSecret(cs, $t2_3, 'key', $t4_5, $t6_7);
19830 $t8_9 = $t7_8[0];
19831 $t9_10 = $t7_8[1];
19832 return [$t8_9, $t9_10];
19833 }
19834
19835 $rt.types.getType('smesh.lol/web/common/mls.ratchetSecret')?.methods?.set('deriveKey', ratchetSecret$deriveKey);
19836 export function ratchetSecret$deriveNext(secret, cs) {
19837 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
19838 $t0_1 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19839 $t0_1.$set($rt.builtin.cloneValue(secret));
19840 $t1_2 = CipherSuite$ExtractSize(cs);
19841 $t2_3 = ($t1_2 & 0xFFFF);
19842 $t3_4 = { $get() { return $t0_1.$get().secret; }, $set(v) { const obj = $t0_1.$get(); obj.secret = v; $t0_1.$set(obj); } };
19843 $t4_5 = $t3_4.$get();
19844 $t5_6 = { $get() { return $t0_1.$get().generation; }, $set(v) { const obj = $t0_1.$get(); obj.generation = v; $t0_1.$set(obj); } };
19845 $t6_7 = $t5_6.$get();
19846 $t7_8 = deriveTreeSecret(cs, $t4_5, 'secret', $t6_7, $t2_3);
19847 $t8_9 = $t7_8[0];
19848 $t9_10 = $t7_8[1];
19849 $t10_11 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19850 $t11_12 = { $get() { return $t10_11.$get().secret; }, $set(v) { const obj = $t10_11.$get(); obj.secret = v; $t10_11.$set(obj); } };
19851 $t12_13 = { $get() { return $t10_11.$get().generation; }, $set(v) { const obj = $t10_11.$get(); obj.generation = v; $t10_11.$set(obj); } };
19852 $t13_14 = { $get() { return $t0_1.$get().generation; }, $set(v) { const obj = $t0_1.$get(); obj.generation = v; $t0_1.$set(obj); } };
19853 $t14_15 = $t13_14.$get();
19854 $t15_16 = (($t14_15 + 1) >>> 0);
19855 $t11_12.$set($t8_9);
19856 $t12_13.$set($t15_16);
19857 $t16_17 = $t10_11.$get();
19858 return [$t16_17, $t9_10];
19859 }
19860
19861 $rt.types.getType('smesh.lol/web/common/mls.ratchetSecret')?.methods?.set('deriveNext', ratchetSecret$deriveNext);
19862 export function ratchetSecret$deriveNonce(secret, cs) {
19863 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
19864 $t0_1 = { $value: { secret: null, generation: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19865 $t0_1.$set($rt.builtin.cloneValue(secret));
19866 $t1_2 = { $get() { return $t0_1.$get().secret; }, $set(v) { const obj = $t0_1.$get(); obj.secret = v; $t0_1.$set(obj); } };
19867 $t2_3 = $t1_2.$get();
19868 $t3_4 = { $get() { return $t0_1.$get().generation; }, $set(v) { const obj = $t0_1.$get(); obj.generation = v; $t0_1.$set(obj); } };
19869 $t4_5 = $t3_4.$get();
19870 $t5_6 = CipherSuite$AEADNonceSize(cs);
19871 $t6_7 = ($t5_6 & 0xFFFF);
19872 $t7_8 = deriveTreeSecret(cs, $t2_3, 'nonce', $t4_5, $t6_7);
19873 $t8_9 = $t7_8[0];
19874 $t9_10 = $t7_8[1];
19875 return [$t8_9, $t9_10];
19876 }
19877
19878 $rt.types.getType('smesh.lol/web/common/mls.ratchetSecret')?.methods?.set('deriveNonce', ratchetSecret$deriveNonce);
19879 export function parentNode$computeParentHash(node, cs, originalSiblingTreeHash) {
19880 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
19881 let $block = 0;
19882 while (true) {
19883 switch ($block) {
19884 case 0: {
19885 $t0_1 = { $get() { return node.$get().encryptionKey; }, $set(v) { const obj = node.$get(); obj.encryptionKey = v; node.$set(obj); } };
19886 $t1_2 = $t0_1.$get();
19887 $t2_3 = { $get() { return node.$get().parentHash; }, $set(v) { const obj = node.$get(); obj.parentHash = v; node.$set(obj); } };
19888 $t3_4 = $t2_3.$get();
19889 $t4_5 = marshalParentHashInput($t1_2, $t3_4, originalSiblingTreeHash);
19890 $t5_6 = $t4_5[0];
19891 $t6_7 = $t4_5[1];
19892 $t7_8 = ($t6_7 !== null);
19893 if ($t7_8) {
19894 $block = 1; break;
19895 }
19896 else {
19897 $block = 2; break;
19898 }
19899 break;
19900 }
19901 case 1: {
19902 return [null, $t6_7];
19903 break;
19904 }
19905 case 2: {
19906 $t8_9 = CipherSuite$hash(cs, $t5_6);
19907 return [$t8_9, null];
19908 break;
19909 }
19910 }
19911 }
19912 }
19913
19914 $rt.types.getType('smesh.lol/web/common/mls.parentNode')?.methods?.set('computeParentHash', parentNode$computeParentHash);
19915 export function parentNode$marshal(node, w) {
19916 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
19917 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19918 $t0_1.$set(node);
19919 $t1_2 = $t0_1.$get();
19920 $t2_3 = { $get() { return $t1_2.$get().encryptionKey; }, $set(v) { const obj = $t1_2.$get(); obj.encryptionKey = v; $t1_2.$set(obj); } };
19921 $t3_4 = $t2_3.$get();
19922 $t4_5 = $t3_4;
19923 $t5_6 = Writer$writeOpaqueVec(w, $t4_5);
19924 $t6_7 = $t0_1.$get();
19925 $t7_8 = { $get() { return $t6_7.$get().parentHash; }, $set(v) { const obj = $t6_7.$get(); obj.parentHash = v; $t6_7.$set(obj); } };
19926 $t8_9 = $t7_8.$get();
19927 $t9_10 = Writer$writeOpaqueVec(w, $t8_9);
19928 $t10_11 = $t0_1.$get();
19929 $t11_12 = { $get() { return $t10_11.$get().unmergedLeaves; }, $set(v) { const obj = $t10_11.$get(); obj.unmergedLeaves = v; $t10_11.$set(obj); } };
19930 $t12_13 = $t11_12.$get();
19931 $t13_14 = $rt.builtin.len($t12_13);
19932 $t14_15 = parentNode$marshal$1.bind(null, $t0_1);
19933 $t15_16 = Writer$writeVector(w, $t13_14, $t14_15);
19934 return;
19935 }
19936
19937 function parentNode$marshal$1(node, w, i) {
19938 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
19939 $t0_1 = node.$get();
19940 $t1_2 = { $get() { return $t0_1.$get().unmergedLeaves; }, $set(v) { const obj = $t0_1.$get(); obj.unmergedLeaves = v; $t0_1.$set(obj); } };
19941 $t2_3 = $t1_2.$get();
19942 $t3_4 = $t2_3.addr(i);
19943 $t4_5 = $t3_4.$get();
19944 $t5_6 = $t4_5;
19945 $t6_7 = Writer$addUint32(w, $t5_6);
19946 return;
19947 }
19948
19949 $rt.types.getType('smesh.lol/web/common/mls.parentNode')?.methods?.set('marshal', parentNode$marshal);
19950 export function parentNode$unmarshal(node, r) {
19951 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
19952 let $block = 0;
19953 while (true) {
19954 switch ($block) {
19955 case 0: {
19956 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
19957 $t0_1.$set(node);
19958 $t1_2 = $t0_1.$get();
19959 $t1_2.$set($rt.builtin.cloneValue({ encryptionKey: null, parentHash: null, unmergedLeaves: null }));
19960 $t2_3 = $t0_1.$get();
19961 $t3_4 = Reader$readOpaqueVec(r);
19962 $t4_5 = $t3_4[0];
19963 $t5_6 = { $get() { return $t2_3.$get().encryptionKey; }, $set(v) { const obj = $t2_3.$get(); obj.encryptionKey = v; $t2_3.$set(obj); } };
19964 $t6_7 = $t4_5;
19965 $t5_6.$set($t6_7);
19966 $t7_8 = $t3_4[1];
19967 if ($t7_8) {
19968 $block = 2; break;
19969 }
19970 else {
19971 $block = 1; break;
19972 }
19973 break;
19974 }
19975 case 1: {
19976 $t8_9 = errUnexpectedEOF.$get();
19977 return $t8_9;
19978 break;
19979 }
19980 case 2: {
19981 $t9_10 = $t0_1.$get();
19982 $t10_11 = Reader$readOpaqueVec(r);
19983 $t11_12 = $t10_11[0];
19984 $t12_13 = { $get() { return $t9_10.$get().parentHash; }, $set(v) { const obj = $t9_10.$get(); obj.parentHash = v; $t9_10.$set(obj); } };
19985 $t12_13.$set($t11_12);
19986 $t13_14 = $t10_11[1];
19987 if ($t13_14) {
19988 $block = 4; break;
19989 }
19990 else {
19991 $block = 3; break;
19992 }
19993 break;
19994 }
19995 case 3: {
19996 $t14_15 = errUnexpectedEOF.$get();
19997 return $t14_15;
19998 break;
19999 }
20000 case 4: {
20001 $t15_16 = parentNode$unmarshal$1.bind(null, $t0_1);
20002 $t16_17 = Reader$readVector(r, $t15_16);
20003 return $t16_17;
20004 break;
20005 }
20006 }
20007 }
20008 }
20009
20010 function parentNode$unmarshal$1(node, r) {
20011 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20012 let $block = 0;
20013 while (true) {
20014 switch ($block) {
20015 case 0: {
20016 $t0_1 = Reader$readUint32(r);
20017 $t1_2 = $t0_1[0];
20018 $t2_3 = $t0_1[1];
20019 if ($t2_3) {
20020 $block = 2; break;
20021 }
20022 else {
20023 $block = 1; break;
20024 }
20025 break;
20026 }
20027 case 1: {
20028 $t3_4 = errUnexpectedEOF.$get();
20029 return $t3_4;
20030 break;
20031 }
20032 case 2: {
20033 $t4_5 = node.$get();
20034 $t5_6 = node.$get();
20035 $t6_7 = { $get() { return $t5_6.$get().unmergedLeaves; }, $set(v) { const obj = $t5_6.$get(); obj.unmergedLeaves = v; $t5_6.$set(obj); } };
20036 $t7_8 = $t6_7.$get();
20037 $t8_9 = $t1_2;
20038 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
20039 $t10_11 = $t9_10.$get().addr(0);
20040 $t10_11.$set($t8_9);
20041 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
20042 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
20043 $t13_14 = { $get() { return $t4_5.$get().unmergedLeaves; }, $set(v) { const obj = $t4_5.$get(); obj.unmergedLeaves = v; $t4_5.$set(obj); } };
20044 $t13_14.$set($t12_13);
20045 return null;
20046 break;
20047 }
20048 }
20049 }
20050 }
20051
20052 $rt.types.getType('smesh.lol/web/common/mls.parentNode')?.methods?.set('unmarshal', parentNode$unmarshal);
20053 export function leafNodeSource$marshal(src, w) {
20054 let $t0_1, $t1_2;
20055 $t0_1 = src;
20056 $t1_2 = Writer$addByte(w, $t0_1);
20057 return;
20058 }
20059
20060 $rt.types.getType('smesh.lol/web/common/mls.leafNodeSource')?.methods?.set('marshal', leafNodeSource$marshal);
20061 export function leafNodeSource$unmarshal(src, r) {
20062 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
20063 let $block = 0;
20064 while (true) {
20065 switch ($block) {
20066 case 0: {
20067 $t0_1 = Reader$readByte(r);
20068 $t1_2 = $t0_1[0];
20069 $t2_3 = $t0_1[1];
20070 if ($t2_3) {
20071 $block = 2; break;
20072 }
20073 else {
20074 $block = 1; break;
20075 }
20076 break;
20077 }
20078 case 1: {
20079 $t3_4 = errUnexpectedEOF.$get();
20080 return $t3_4;
20081 break;
20082 }
20083 case 2: {
20084 $t4_5 = $t1_2;
20085 src.$set($t4_5);
20086 $t5_6 = src.$get();
20087 $t6_7 = ($t5_6 === 1);
20088 if ($t6_7) {
20089 $block = 3; break;
20090 }
20091 else {
20092 $block = 4; break;
20093 }
20094 break;
20095 }
20096 case 3: {
20097 return null;
20098 break;
20099 }
20100 case 4: {
20101 $t7_8 = ($t5_6 === 2);
20102 if ($t7_8) {
20103 $block = 3; break;
20104 }
20105 else {
20106 $block = 5; break;
20107 }
20108 break;
20109 }
20110 case 5: {
20111 $t8_9 = ($t5_6 === 3);
20112 if ($t8_9) {
20113 $block = 3; break;
20114 }
20115 else {
20116 $block = 6; break;
20117 }
20118 break;
20119 }
20120 case 6: {
20121 $t9_10 = errInvalidLeafNodeSource.$get();
20122 return $t9_10;
20123 break;
20124 }
20125 }
20126 }
20127 }
20128
20129 $rt.types.getType('smesh.lol/web/common/mls.leafNodeSource')?.methods?.set('unmarshal', leafNodeSource$unmarshal);
20130 export function capabilities$marshal(caps, w) {
20131 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31;
20132 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
20133 $t0_1.$set(caps);
20134 $t1_2 = $t0_1.$get();
20135 $t2_3 = { $get() { return $t1_2.$get().versions; }, $set(v) { const obj = $t1_2.$get(); obj.versions = v; $t1_2.$set(obj); } };
20136 $t3_4 = $t2_3.$get();
20137 $t4_5 = $rt.builtin.len($t3_4);
20138 $t5_6 = capabilities$marshal$1.bind(null, $t0_1);
20139 $t6_7 = Writer$writeVector(w, $t4_5, $t5_6);
20140 $t7_8 = $t0_1.$get();
20141 $t8_9 = { $get() { return $t7_8.$get().cipherSuites; }, $set(v) { const obj = $t7_8.$get(); obj.cipherSuites = v; $t7_8.$set(obj); } };
20142 $t9_10 = $t8_9.$get();
20143 $t10_11 = $rt.builtin.len($t9_10);
20144 $t11_12 = capabilities$marshal$2.bind(null, $t0_1);
20145 $t12_13 = Writer$writeVector(w, $t10_11, $t11_12);
20146 $t13_14 = $t0_1.$get();
20147 $t14_15 = { $get() { return $t13_14.$get().extensions; }, $set(v) { const obj = $t13_14.$get(); obj.extensions = v; $t13_14.$set(obj); } };
20148 $t15_16 = $t14_15.$get();
20149 $t16_17 = $rt.builtin.len($t15_16);
20150 $t17_18 = capabilities$marshal$3.bind(null, $t0_1);
20151 $t18_19 = Writer$writeVector(w, $t16_17, $t17_18);
20152 $t19_20 = $t0_1.$get();
20153 $t20_21 = { $get() { return $t19_20.$get().proposals; }, $set(v) { const obj = $t19_20.$get(); obj.proposals = v; $t19_20.$set(obj); } };
20154 $t21_22 = $t20_21.$get();
20155 $t22_23 = $rt.builtin.len($t21_22);
20156 $t23_24 = capabilities$marshal$4.bind(null, $t0_1);
20157 $t24_25 = Writer$writeVector(w, $t22_23, $t23_24);
20158 $t25_26 = $t0_1.$get();
20159 $t26_27 = { $get() { return $t25_26.$get().credentials; }, $set(v) { const obj = $t25_26.$get(); obj.credentials = v; $t25_26.$set(obj); } };
20160 $t27_28 = $t26_27.$get();
20161 $t28_29 = $rt.builtin.len($t27_28);
20162 $t29_30 = capabilities$marshal$5.bind(null, $t0_1);
20163 $t30_31 = Writer$writeVector(w, $t28_29, $t29_30);
20164 return;
20165 }
20166
20167 function capabilities$marshal$1(caps, w, i) {
20168 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
20169 $t0_1 = caps.$get();
20170 $t1_2 = { $get() { return $t0_1.$get().versions; }, $set(v) { const obj = $t0_1.$get(); obj.versions = v; $t0_1.$set(obj); } };
20171 $t2_3 = $t1_2.$get();
20172 $t3_4 = $t2_3.addr(i);
20173 $t4_5 = $t3_4.$get();
20174 $t5_6 = $t4_5;
20175 $t6_7 = Writer$addUint16(w, $t5_6);
20176 return;
20177 }
20178
20179 function capabilities$marshal$2(caps, w, i) {
20180 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
20181 $t0_1 = caps.$get();
20182 $t1_2 = { $get() { return $t0_1.$get().cipherSuites; }, $set(v) { const obj = $t0_1.$get(); obj.cipherSuites = v; $t0_1.$set(obj); } };
20183 $t2_3 = $t1_2.$get();
20184 $t3_4 = $t2_3.addr(i);
20185 $t4_5 = $t3_4.$get();
20186 $t5_6 = $t4_5;
20187 $t6_7 = Writer$addUint16(w, $t5_6);
20188 return;
20189 }
20190
20191 function capabilities$marshal$3(caps, w, i) {
20192 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
20193 $t0_1 = caps.$get();
20194 $t1_2 = { $get() { return $t0_1.$get().extensions; }, $set(v) { const obj = $t0_1.$get(); obj.extensions = v; $t0_1.$set(obj); } };
20195 $t2_3 = $t1_2.$get();
20196 $t3_4 = $t2_3.addr(i);
20197 $t4_5 = $t3_4.$get();
20198 $t5_6 = $t4_5;
20199 $t6_7 = Writer$addUint16(w, $t5_6);
20200 return;
20201 }
20202
20203 function capabilities$marshal$4(caps, w, i) {
20204 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
20205 $t0_1 = caps.$get();
20206 $t1_2 = { $get() { return $t0_1.$get().proposals; }, $set(v) { const obj = $t0_1.$get(); obj.proposals = v; $t0_1.$set(obj); } };
20207 $t2_3 = $t1_2.$get();
20208 $t3_4 = $t2_3.addr(i);
20209 $t4_5 = $t3_4.$get();
20210 $t5_6 = $t4_5;
20211 $t6_7 = Writer$addUint16(w, $t5_6);
20212 return;
20213 }
20214
20215 function capabilities$marshal$5(caps, w, i) {
20216 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
20217 $t0_1 = caps.$get();
20218 $t1_2 = { $get() { return $t0_1.$get().credentials; }, $set(v) { const obj = $t0_1.$get(); obj.credentials = v; $t0_1.$set(obj); } };
20219 $t2_3 = $t1_2.$get();
20220 $t3_4 = $t2_3.addr(i);
20221 $t4_5 = $t3_4.$get();
20222 $t5_6 = $t4_5;
20223 $t6_7 = Writer$addUint16(w, $t5_6);
20224 return;
20225 }
20226
20227 $rt.types.getType('smesh.lol/web/common/mls.capabilities')?.methods?.set('marshal', capabilities$marshal);
20228 export function capabilities$unmarshal(caps, r) {
20229 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
20230 let $block = 0;
20231 while (true) {
20232 switch ($block) {
20233 case 0: {
20234 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
20235 $t0_1.$set(caps);
20236 $t1_2 = $t0_1.$get();
20237 $t1_2.$set($rt.builtin.cloneValue({ versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }));
20238 $t2_3 = capabilities$unmarshal$1.bind(null, $t0_1);
20239 $t3_4 = Reader$readVector(r, $t2_3);
20240 $t4_5 = ($t3_4 !== null);
20241 if ($t4_5) {
20242 $block = 1; break;
20243 }
20244 else {
20245 $block = 2; break;
20246 }
20247 break;
20248 }
20249 case 1: {
20250 return $t3_4;
20251 break;
20252 }
20253 case 2: {
20254 $t5_6 = capabilities$unmarshal$2.bind(null, $t0_1);
20255 $t6_7 = Reader$readVector(r, $t5_6);
20256 $t7_8 = ($t6_7 !== null);
20257 if ($t7_8) {
20258 $block = 3; break;
20259 }
20260 else {
20261 $block = 4; break;
20262 }
20263 break;
20264 }
20265 case 3: {
20266 return $t6_7;
20267 break;
20268 }
20269 case 4: {
20270 $t8_9 = capabilities$unmarshal$3.bind(null, $t0_1);
20271 $t9_10 = Reader$readVector(r, $t8_9);
20272 $t10_11 = ($t9_10 !== null);
20273 if ($t10_11) {
20274 $block = 5; break;
20275 }
20276 else {
20277 $block = 6; break;
20278 }
20279 break;
20280 }
20281 case 5: {
20282 return $t9_10;
20283 break;
20284 }
20285 case 6: {
20286 $t11_12 = capabilities$unmarshal$4.bind(null, $t0_1);
20287 $t12_13 = Reader$readVector(r, $t11_12);
20288 $t13_14 = ($t12_13 !== null);
20289 if ($t13_14) {
20290 $block = 7; break;
20291 }
20292 else {
20293 $block = 8; break;
20294 }
20295 break;
20296 }
20297 case 7: {
20298 return $t12_13;
20299 break;
20300 }
20301 case 8: {
20302 $t14_15 = capabilities$unmarshal$5.bind(null, $t0_1);
20303 $t15_16 = Reader$readVector(r, $t14_15);
20304 return $t15_16;
20305 break;
20306 }
20307 }
20308 }
20309 }
20310
20311 function capabilities$unmarshal$1(caps, r) {
20312 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20313 let $block = 0;
20314 while (true) {
20315 switch ($block) {
20316 case 0: {
20317 $t0_1 = Reader$readUint16(r);
20318 $t1_2 = $t0_1[0];
20319 $t2_3 = $t0_1[1];
20320 if ($t2_3) {
20321 $block = 2; break;
20322 }
20323 else {
20324 $block = 1; break;
20325 }
20326 break;
20327 }
20328 case 1: {
20329 $t3_4 = errUnexpectedEOF.$get();
20330 return $t3_4;
20331 break;
20332 }
20333 case 2: {
20334 $t4_5 = caps.$get();
20335 $t5_6 = caps.$get();
20336 $t6_7 = { $get() { return $t5_6.$get().versions; }, $set(v) { const obj = $t5_6.$get(); obj.versions = v; $t5_6.$set(obj); } };
20337 $t7_8 = $t6_7.$get();
20338 $t8_9 = $t1_2;
20339 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
20340 $t10_11 = $t9_10.$get().addr(0);
20341 $t10_11.$set($t8_9);
20342 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
20343 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
20344 $t13_14 = { $get() { return $t4_5.$get().versions; }, $set(v) { const obj = $t4_5.$get(); obj.versions = v; $t4_5.$set(obj); } };
20345 $t13_14.$set($t12_13);
20346 return null;
20347 break;
20348 }
20349 }
20350 }
20351 }
20352
20353 function capabilities$unmarshal$2(caps, r) {
20354 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20355 let $block = 0;
20356 while (true) {
20357 switch ($block) {
20358 case 0: {
20359 $t0_1 = Reader$readUint16(r);
20360 $t1_2 = $t0_1[0];
20361 $t2_3 = $t0_1[1];
20362 if ($t2_3) {
20363 $block = 2; break;
20364 }
20365 else {
20366 $block = 1; break;
20367 }
20368 break;
20369 }
20370 case 1: {
20371 $t3_4 = errUnexpectedEOF.$get();
20372 return $t3_4;
20373 break;
20374 }
20375 case 2: {
20376 $t4_5 = caps.$get();
20377 $t5_6 = caps.$get();
20378 $t6_7 = { $get() { return $t5_6.$get().cipherSuites; }, $set(v) { const obj = $t5_6.$get(); obj.cipherSuites = v; $t5_6.$set(obj); } };
20379 $t7_8 = $t6_7.$get();
20380 $t8_9 = $t1_2;
20381 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
20382 $t10_11 = $t9_10.$get().addr(0);
20383 $t10_11.$set($t8_9);
20384 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
20385 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
20386 $t13_14 = { $get() { return $t4_5.$get().cipherSuites; }, $set(v) { const obj = $t4_5.$get(); obj.cipherSuites = v; $t4_5.$set(obj); } };
20387 $t13_14.$set($t12_13);
20388 return null;
20389 break;
20390 }
20391 }
20392 }
20393 }
20394
20395 function capabilities$unmarshal$3(caps, r) {
20396 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20397 let $block = 0;
20398 while (true) {
20399 switch ($block) {
20400 case 0: {
20401 $t0_1 = Reader$readUint16(r);
20402 $t1_2 = $t0_1[0];
20403 $t2_3 = $t0_1[1];
20404 if ($t2_3) {
20405 $block = 2; break;
20406 }
20407 else {
20408 $block = 1; break;
20409 }
20410 break;
20411 }
20412 case 1: {
20413 $t3_4 = errUnexpectedEOF.$get();
20414 return $t3_4;
20415 break;
20416 }
20417 case 2: {
20418 $t4_5 = caps.$get();
20419 $t5_6 = caps.$get();
20420 $t6_7 = { $get() { return $t5_6.$get().extensions; }, $set(v) { const obj = $t5_6.$get(); obj.extensions = v; $t5_6.$set(obj); } };
20421 $t7_8 = $t6_7.$get();
20422 $t8_9 = $t1_2;
20423 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
20424 $t10_11 = $t9_10.$get().addr(0);
20425 $t10_11.$set($t8_9);
20426 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
20427 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
20428 $t13_14 = { $get() { return $t4_5.$get().extensions; }, $set(v) { const obj = $t4_5.$get(); obj.extensions = v; $t4_5.$set(obj); } };
20429 $t13_14.$set($t12_13);
20430 return null;
20431 break;
20432 }
20433 }
20434 }
20435 }
20436
20437 function capabilities$unmarshal$4(caps, r) {
20438 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20439 let $block = 0;
20440 while (true) {
20441 switch ($block) {
20442 case 0: {
20443 $t0_1 = Reader$readUint16(r);
20444 $t1_2 = $t0_1[0];
20445 $t2_3 = $t0_1[1];
20446 if ($t2_3) {
20447 $block = 2; break;
20448 }
20449 else {
20450 $block = 1; break;
20451 }
20452 break;
20453 }
20454 case 1: {
20455 $t3_4 = errUnexpectedEOF.$get();
20456 return $t3_4;
20457 break;
20458 }
20459 case 2: {
20460 $t4_5 = caps.$get();
20461 $t5_6 = caps.$get();
20462 $t6_7 = { $get() { return $t5_6.$get().proposals; }, $set(v) { const obj = $t5_6.$get(); obj.proposals = v; $t5_6.$set(obj); } };
20463 $t7_8 = $t6_7.$get();
20464 $t8_9 = $t1_2;
20465 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
20466 $t10_11 = $t9_10.$get().addr(0);
20467 $t10_11.$set($t8_9);
20468 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
20469 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
20470 $t13_14 = { $get() { return $t4_5.$get().proposals; }, $set(v) { const obj = $t4_5.$get(); obj.proposals = v; $t4_5.$set(obj); } };
20471 $t13_14.$set($t12_13);
20472 return null;
20473 break;
20474 }
20475 }
20476 }
20477 }
20478
20479 function capabilities$unmarshal$5(caps, r) {
20480 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20481 let $block = 0;
20482 while (true) {
20483 switch ($block) {
20484 case 0: {
20485 $t0_1 = Reader$readUint16(r);
20486 $t1_2 = $t0_1[0];
20487 $t2_3 = $t0_1[1];
20488 if ($t2_3) {
20489 $block = 2; break;
20490 }
20491 else {
20492 $block = 1; break;
20493 }
20494 break;
20495 }
20496 case 1: {
20497 $t3_4 = errUnexpectedEOF.$get();
20498 return $t3_4;
20499 break;
20500 }
20501 case 2: {
20502 $t4_5 = caps.$get();
20503 $t5_6 = caps.$get();
20504 $t6_7 = { $get() { return $t5_6.$get().credentials; }, $set(v) { const obj = $t5_6.$get(); obj.credentials = v; $t5_6.$set(obj); } };
20505 $t7_8 = $t6_7.$get();
20506 $t8_9 = $t1_2;
20507 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
20508 $t10_11 = $t9_10.$get().addr(0);
20509 $t10_11.$set($t8_9);
20510 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
20511 $t12_13 = $rt.builtin.appendSlice($t7_8, $t11_12);
20512 $t13_14 = { $get() { return $t4_5.$get().credentials; }, $set(v) { const obj = $t4_5.$get(); obj.credentials = v; $t4_5.$set(obj); } };
20513 $t13_14.$set($t12_13);
20514 return null;
20515 break;
20516 }
20517 }
20518 }
20519 }
20520
20521 $rt.types.getType('smesh.lol/web/common/mls.capabilities')?.methods?.set('unmarshal', capabilities$unmarshal);
20522 export function lifetime$marshal(lt, w) {
20523 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
20524 $t0_1 = { $get() { return lt.$get().notBefore; }, $set(v) { const obj = lt.$get(); obj.notBefore = v; lt.$set(obj); } };
20525 $t1_2 = $t0_1.$get();
20526 $t2_3 = Writer$addUint64(w, $t1_2);
20527 $t3_4 = { $get() { return lt.$get().notAfter; }, $set(v) { const obj = lt.$get(); obj.notAfter = v; lt.$set(obj); } };
20528 $t4_5 = $t3_4.$get();
20529 $t5_6 = Writer$addUint64(w, $t4_5);
20530 return;
20531 }
20532
20533 $rt.types.getType('smesh.lol/web/common/mls.lifetime')?.methods?.set('marshal', lifetime$marshal);
20534 export function lifetime$unmarshal(lt, r) {
20535 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
20536 let $block = 0;
20537 while (true) {
20538 switch ($block) {
20539 case 0: {
20540 lt.$set($rt.builtin.cloneValue({ notBefore: 0n, notAfter: 0n }));
20541 $t0_1 = Reader$readUint64(r);
20542 $t1_2 = $t0_1[0];
20543 $t2_3 = { $get() { return lt.$get().notBefore; }, $set(v) { const obj = lt.$get(); obj.notBefore = v; lt.$set(obj); } };
20544 $t2_3.$set($t1_2);
20545 $t3_4 = $t0_1[1];
20546 if ($t3_4) {
20547 $block = 2; break;
20548 }
20549 else {
20550 $block = 1; break;
20551 }
20552 break;
20553 }
20554 case 1: {
20555 $t4_5 = errUnexpectedEOF.$get();
20556 return $t4_5;
20557 break;
20558 }
20559 case 2: {
20560 $t5_6 = Reader$readUint64(r);
20561 $t6_7 = $t5_6[0];
20562 $t7_8 = { $get() { return lt.$get().notAfter; }, $set(v) { const obj = lt.$get(); obj.notAfter = v; lt.$set(obj); } };
20563 $t7_8.$set($t6_7);
20564 $t8_9 = $t5_6[1];
20565 if ($t8_9) {
20566 $block = 4; break;
20567 }
20568 else {
20569 $block = 3; break;
20570 }
20571 break;
20572 }
20573 case 3: {
20574 $t9_10 = errUnexpectedEOF.$get();
20575 return $t9_10;
20576 break;
20577 }
20578 case 4: {
20579 return null;
20580 break;
20581 }
20582 }
20583 }
20584 }
20585
20586 $rt.types.getType('smesh.lol/web/common/mls.lifetime')?.methods?.set('unmarshal', lifetime$unmarshal);
20587 export function lifetime$verifyAt(lt, nowUnix) {
20588 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
20589 let $block = 0;
20590 while (true) {
20591 switch ($block) {
20592 case 0: {
20593 $t0_1 = { $get() { return lt.$get().notBefore; }, $set(v) { const obj = lt.$get(); obj.notBefore = v; lt.$set(obj); } };
20594 $t1_2 = $t0_1.$get();
20595 $t2_3 = BigInt.asIntN(64, BigInt($t1_2));
20596 $t3_4 = { $get() { return lt.$get().notAfter; }, $set(v) { const obj = lt.$get(); obj.notAfter = v; lt.$set(obj); } };
20597 $t4_5 = $t3_4.$get();
20598 $t5_6 = BigInt.asIntN(64, BigInt($t4_5));
20599 $t6_7 = BigInt.asIntN(64, $t5_6 - $t2_3);
20600 $t7_8 = ($t6_7 <= 0n);
20601 if ($t7_8) {
20602 $block = 1; break;
20603 }
20604 else {
20605 $block = 3; break;
20606 }
20607 break;
20608 }
20609 case 1: {
20610 return false;
20611 break;
20612 }
20613 case 2: {
20614 $t8_9 = (nowUnix > $t2_3);
20615 if ($t8_9) {
20616 $block = 4; break;
20617 }
20618 else {
20619 $t11_12 = false;
20620 $block = 5; break;
20621 }
20622 break;
20623 }
20624 case 3: {
20625 $t9_10 = ($t6_7 > 7776000n);
20626 if ($t9_10) {
20627 $block = 1; break;
20628 }
20629 else {
20630 $block = 2; break;
20631 }
20632 break;
20633 }
20634 case 4: {
20635 $t10_11 = ($t5_6 > nowUnix);
20636 $t11_12 = $t10_11;
20637 $block = 5; break;
20638 break;
20639 }
20640 case 5: {
20641 return $t11_12;
20642 break;
20643 }
20644 }
20645 }
20646 }
20647
20648 $rt.types.getType('smesh.lol/web/common/mls.lifetime')?.methods?.set('verifyAt', lifetime$verifyAt);
20649 export function leafNode$marshal(node, w) {
20650 let $t0_1, $t1_2, $t2_3, $t3_4;
20651 $t0_1 = leafNode$marshalBase(node, w);
20652 $t1_2 = { $get() { return node.$get().signature; }, $set(v) { const obj = node.$get(); obj.signature = v; node.$set(obj); } };
20653 $t2_3 = $t1_2.$get();
20654 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
20655 return;
20656 }
20657
20658 $rt.types.getType('smesh.lol/web/common/mls.leafNode')?.methods?.set('marshal', leafNode$marshal);
20659 export function leafNode$marshalBase(node, w) {
20660 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28;
20661 let $block = 0;
20662 while (true) {
20663 switch ($block) {
20664 case 0: {
20665 $t0_1 = { $get() { return node.$get().encryptionKey; }, $set(v) { const obj = node.$get(); obj.encryptionKey = v; node.$set(obj); } };
20666 $t1_2 = $t0_1.$get();
20667 $t2_3 = $t1_2;
20668 $t3_4 = Writer$writeOpaqueVec(w, $t2_3);
20669 $t4_5 = { $get() { return node.$get().signatureKey; }, $set(v) { const obj = node.$get(); obj.signatureKey = v; node.$set(obj); } };
20670 $t5_6 = $t4_5.$get();
20671 $t6_7 = $t5_6;
20672 $t7_8 = Writer$writeOpaqueVec(w, $t6_7);
20673 $t8_9 = { $get() { return node.$get().credential; }, $set(v) { const obj = node.$get(); obj.credential = v; node.$set(obj); } };
20674 $t9_10 = Credential$marshal($t8_9, w);
20675 $t10_11 = { $get() { return node.$get().capabilities; }, $set(v) { const obj = node.$get(); obj.capabilities = v; node.$set(obj); } };
20676 $t11_12 = capabilities$marshal($t10_11, w);
20677 $t12_13 = { $get() { return node.$get().leafNodeSource; }, $set(v) { const obj = node.$get(); obj.leafNodeSource = v; node.$set(obj); } };
20678 $t13_14 = $t12_13.$get();
20679 $t14_15 = leafNodeSource$marshal($t13_14, w);
20680 $t15_16 = { $get() { return node.$get().leafNodeSource; }, $set(v) { const obj = node.$get(); obj.leafNodeSource = v; node.$set(obj); } };
20681 $t16_17 = $t15_16.$get();
20682 $t17_18 = ($t16_17 === 1);
20683 if ($t17_18) {
20684 $block = 2; break;
20685 }
20686 else {
20687 $block = 4; break;
20688 }
20689 break;
20690 }
20691 case 1: {
20692 $t18_19 = { $get() { return node.$get().extensions; }, $set(v) { const obj = node.$get(); obj.extensions = v; node.$set(obj); } };
20693 $t19_20 = $t18_19.$get();
20694 $t20_21 = marshalExtensionVec(w, $t19_20);
20695 return;
20696 break;
20697 }
20698 case 2: {
20699 $t21_22 = { $get() { return node.$get().lifetime; }, $set(v) { const obj = node.$get(); obj.lifetime = v; node.$set(obj); } };
20700 $t22_23 = $t21_22.$get();
20701 $t23_24 = lifetime$marshal($t22_23, w);
20702 $block = 1; break;
20703 break;
20704 }
20705 case 3: {
20706 $t24_25 = { $get() { return node.$get().parentHash; }, $set(v) { const obj = node.$get(); obj.parentHash = v; node.$set(obj); } };
20707 $t25_26 = $t24_25.$get();
20708 $t26_27 = Writer$writeOpaqueVec(w, $t25_26);
20709 $block = 1; break;
20710 break;
20711 }
20712 case 4: {
20713 $t27_28 = ($t16_17 === 3);
20714 if ($t27_28) {
20715 $block = 3; break;
20716 }
20717 else {
20718 $block = 1; break;
20719 }
20720 break;
20721 }
20722 }
20723 }
20724 }
20725
20726 $rt.types.getType('smesh.lol/web/common/mls.leafNode')?.methods?.set('marshalBase', leafNode$marshalBase);
20727 export function leafNode$sign(node, cs, groupID, li, signerPriv) {
20728 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
20729 let $block = 0;
20730 while (true) {
20731 switch ($block) {
20732 case 0: {
20733 $t0_1 = { $value: { node: null, groupID: null, leafIndex: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
20734 $t1_2 = { $get() { return $t0_1.$get().node; }, $set(v) { const obj = $t0_1.$get(); obj.node = v; $t0_1.$set(obj); } };
20735 $t2_3 = { $get() { return $t0_1.$get().groupID; }, $set(v) { const obj = $t0_1.$get(); obj.groupID = v; $t0_1.$set(obj); } };
20736 $t3_4 = { $get() { return $t0_1.$get().leafIndex; }, $set(v) { const obj = $t0_1.$get(); obj.leafIndex = v; $t0_1.$set(obj); } };
20737 $t1_2.$set(node);
20738 $t2_3.$set(groupID);
20739 $t3_4.$set(li);
20740 $t4_5 = $rt.types.makeInterface('*smesh.lol/web/common/mls.leafNodeTBS', $t0_1);
20741 $t5_6 = marshalRaw($t4_5);
20742 $t6_7 = $t5_6[0];
20743 $t7_8 = $t5_6[1];
20744 $t8_9 = ($t7_8 !== null);
20745 if ($t8_9) {
20746 $block = 1; break;
20747 }
20748 else {
20749 $block = 2; break;
20750 }
20751 break;
20752 }
20753 case 1: {
20754 return $t7_8;
20755 break;
20756 }
20757 case 2: {
20758 $t9_10 = CipherSuite$signWithLabel(cs, signerPriv, 'LeafNodeTBS', $t6_7);
20759 $t10_11 = $t9_10[0];
20760 $t11_12 = $t9_10[1];
20761 $t12_13 = ($t11_12 !== null);
20762 if ($t12_13) {
20763 $block = 3; break;
20764 }
20765 else {
20766 $block = 4; break;
20767 }
20768 break;
20769 }
20770 case 3: {
20771 return $t11_12;
20772 break;
20773 }
20774 case 4: {
20775 $t13_14 = { $get() { return node.$get().signature; }, $set(v) { const obj = node.$get(); obj.signature = v; node.$set(obj); } };
20776 $t13_14.$set($t10_11);
20777 return null;
20778 break;
20779 }
20780 }
20781 }
20782 }
20783
20784 $rt.types.getType('smesh.lol/web/common/mls.leafNode')?.methods?.set('sign', leafNode$sign);
20785 export function leafNode$unmarshal(node, r) {
20786 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47;
20787 let $block = 0;
20788 while (true) {
20789 switch ($block) {
20790 case 0: {
20791 node.$set($rt.builtin.cloneValue({ encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }));
20792 $t0_1 = Reader$readOpaqueVec(r);
20793 $t1_2 = $t0_1[0];
20794 $t2_3 = { $get() { return node.$get().encryptionKey; }, $set(v) { const obj = node.$get(); obj.encryptionKey = v; node.$set(obj); } };
20795 $t3_4 = $t1_2;
20796 $t2_3.$set($t3_4);
20797 $t4_5 = $t0_1[1];
20798 if ($t4_5) {
20799 $block = 2; break;
20800 }
20801 else {
20802 $block = 1; break;
20803 }
20804 break;
20805 }
20806 case 1: {
20807 $t5_6 = errUnexpectedEOF.$get();
20808 return $t5_6;
20809 break;
20810 }
20811 case 2: {
20812 $t6_7 = Reader$readOpaqueVec(r);
20813 $t7_8 = $t6_7[0];
20814 $t8_9 = { $get() { return node.$get().signatureKey; }, $set(v) { const obj = node.$get(); obj.signatureKey = v; node.$set(obj); } };
20815 $t9_10 = $t7_8;
20816 $t8_9.$set($t9_10);
20817 $t10_11 = $t6_7[1];
20818 if ($t10_11) {
20819 $block = 4; break;
20820 }
20821 else {
20822 $block = 3; break;
20823 }
20824 break;
20825 }
20826 case 3: {
20827 $t11_12 = errUnexpectedEOF.$get();
20828 return $t11_12;
20829 break;
20830 }
20831 case 4: {
20832 $t12_13 = { $get() { return node.$get().credential; }, $set(v) { const obj = node.$get(); obj.credential = v; node.$set(obj); } };
20833 $t13_14 = Credential$unmarshal($t12_13, r);
20834 $t14_15 = ($t13_14 !== null);
20835 if ($t14_15) {
20836 $block = 5; break;
20837 }
20838 else {
20839 $block = 6; break;
20840 }
20841 break;
20842 }
20843 case 5: {
20844 return $t13_14;
20845 break;
20846 }
20847 case 6: {
20848 $t15_16 = { $get() { return node.$get().capabilities; }, $set(v) { const obj = node.$get(); obj.capabilities = v; node.$set(obj); } };
20849 $t16_17 = capabilities$unmarshal($t15_16, r);
20850 $t17_18 = ($t16_17 !== null);
20851 if ($t17_18) {
20852 $block = 7; break;
20853 }
20854 else {
20855 $block = 8; break;
20856 }
20857 break;
20858 }
20859 case 7: {
20860 return $t16_17;
20861 break;
20862 }
20863 case 8: {
20864 $t18_19 = { $get() { return node.$get().leafNodeSource; }, $set(v) { const obj = node.$get(); obj.leafNodeSource = v; node.$set(obj); } };
20865 $t19_20 = leafNodeSource$unmarshal($t18_19, r);
20866 $t20_21 = ($t19_20 !== null);
20867 if ($t20_21) {
20868 $block = 9; break;
20869 }
20870 else {
20871 $block = 10; break;
20872 }
20873 break;
20874 }
20875 case 9: {
20876 return $t19_20;
20877 break;
20878 }
20879 case 10: {
20880 $t21_22 = { $get() { return node.$get().leafNodeSource; }, $set(v) { const obj = node.$get(); obj.leafNodeSource = v; node.$set(obj); } };
20881 $t22_23 = $t21_22.$get();
20882 $t23_24 = ($t22_23 === 1);
20883 if ($t23_24) {
20884 $block = 12; break;
20885 }
20886 else {
20887 $block = 14; break;
20888 }
20889 break;
20890 }
20891 case 11: {
20892 $t25_26 = ($t24_25 !== null);
20893 if ($t25_26) {
20894 $block = 16; break;
20895 }
20896 else {
20897 $block = 17; break;
20898 }
20899 break;
20900 }
20901 case 12: {
20902 $t26_27 = { $value: { notBefore: 0n, notAfter: 0n }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
20903 $t27_28 = { $get() { return node.$get().lifetime; }, $set(v) { const obj = node.$get(); obj.lifetime = v; node.$set(obj); } };
20904 $t27_28.$set($t26_27);
20905 $t28_29 = { $get() { return node.$get().lifetime; }, $set(v) { const obj = node.$get(); obj.lifetime = v; node.$set(obj); } };
20906 $t29_30 = $t28_29.$get();
20907 $t30_31 = lifetime$unmarshal($t29_30, r);
20908 $t24_25 = $t30_31;
20909 $block = 11; break;
20910 break;
20911 }
20912 case 13: {
20913 $t31_32 = Reader$readOpaqueVec(r);
20914 $t32_33 = $t31_32[0];
20915 $t33_34 = { $get() { return node.$get().parentHash; }, $set(v) { const obj = node.$get(); obj.parentHash = v; node.$set(obj); } };
20916 $t33_34.$set($t32_33);
20917 $t34_35 = $t31_32[1];
20918 if ($t34_35) {
20919 $t24_25 = null;
20920 $block = 11; break;
20921 }
20922 else {
20923 $block = 15; break;
20924 }
20925 break;
20926 }
20927 case 14: {
20928 $t35_36 = ($t22_23 === 3);
20929 if ($t35_36) {
20930 $block = 13; break;
20931 }
20932 else {
20933 $t24_25 = null;
20934 $block = 11; break;
20935 }
20936 break;
20937 }
20938 case 15: {
20939 $t36_37 = errUnexpectedEOF.$get();
20940 $t24_25 = $t36_37;
20941 $block = 11; break;
20942 break;
20943 }
20944 case 16: {
20945 return $t24_25;
20946 break;
20947 }
20948 case 17: {
20949 $t37_38 = unmarshalExtensionVec(r);
20950 $t38_39 = $t37_38[0];
20951 $t39_40 = $t37_38[1];
20952 $t40_41 = ($t39_40 !== null);
20953 if ($t40_41) {
20954 $block = 18; break;
20955 }
20956 else {
20957 $block = 19; break;
20958 }
20959 break;
20960 }
20961 case 18: {
20962 return $t39_40;
20963 break;
20964 }
20965 case 19: {
20966 $t41_42 = { $get() { return node.$get().extensions; }, $set(v) { const obj = node.$get(); obj.extensions = v; node.$set(obj); } };
20967 $t41_42.$set($t38_39);
20968 $t42_43 = Reader$readOpaqueVec(r);
20969 $t43_44 = $t42_43[0];
20970 $t44_45 = { $get() { return node.$get().signature; }, $set(v) { const obj = node.$get(); obj.signature = v; node.$set(obj); } };
20971 $t44_45.$set($t43_44);
20972 $t45_46 = $t42_43[1];
20973 if ($t45_46) {
20974 $block = 21; break;
20975 }
20976 else {
20977 $block = 20; break;
20978 }
20979 break;
20980 }
20981 case 20: {
20982 $t46_47 = errUnexpectedEOF.$get();
20983 return $t46_47;
20984 break;
20985 }
20986 case 21: {
20987 return null;
20988 break;
20989 }
20990 }
20991 }
20992 }
20993
20994 $rt.types.getType('smesh.lol/web/common/mls.leafNode')?.methods?.set('unmarshal', leafNode$unmarshal);
20995 export function leafNode$verify(ln, opts) {
20996 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62;
20997 let $block = 0;
20998 while (true) {
20999 switch ($block) {
21000 case 0: {
21001 $t0_1 = { $get() { return opts.$get().cipherSuite; }, $set(v) { const obj = opts.$get(); obj.cipherSuite = v; opts.$set(obj); } };
21002 $t1_2 = $t0_1.$get();
21003 $t2_3 = { $get() { return opts.$get().groupID; }, $set(v) { const obj = opts.$get(); obj.groupID = v; opts.$set(obj); } };
21004 $t3_4 = $t2_3.$get();
21005 $t4_5 = { $get() { return opts.$get().leafIndex; }, $set(v) { const obj = opts.$get(); obj.leafIndex = v; opts.$set(obj); } };
21006 $t5_6 = $t4_5.$get();
21007 $t6_7 = leafNode$verifySignature(ln, $t1_2, $t3_4, $t5_6);
21008 if ($t6_7) {
21009 $block = 2; break;
21010 }
21011 else {
21012 $block = 1; break;
21013 }
21014 break;
21015 }
21016 case 1: {
21017 $t7_8 = errors.New('mls: leaf node signature verification failed');
21018 return $t7_8;
21019 break;
21020 }
21021 case 2: {
21022 $t8_9 = { $get() { return opts.$get().supportedCreds; }, $set(v) { const obj = opts.$get(); obj.supportedCreds = v; opts.$set(obj); } };
21023 $t9_10 = $t8_9.$get();
21024 $t10_11 = { $get() { return ln.$get().credential; }, $set(v) { const obj = ln.$get(); obj.credential = v; ln.$set(obj); } };
21025 $t11_12 = { $get() { return $t10_11.$get().credentialType; }, $set(v) { const obj = $t10_11.$get(); obj.credentialType = v; $t10_11.$set(obj); } };
21026 $t12_13 = $t11_12.$get();
21027 $t13_14 = $rt.builtin.mapLookup($t9_10, $t12_13).value;
21028 if ($t13_14) {
21029 $block = 4; break;
21030 }
21031 else {
21032 $block = 3; break;
21033 }
21034 break;
21035 }
21036 case 3: {
21037 $t14_15 = errors.New('mls: credential type not supported by all members');
21038 return $t14_15;
21039 break;
21040 }
21041 case 4: {
21042 $t15_16 = { $get() { return ln.$get().lifetime; }, $set(v) { const obj = ln.$get(); obj.lifetime = v; ln.$set(obj); } };
21043 $t16_17 = $t15_16.$get();
21044 $t17_18 = ($t16_17 !== null);
21045 if ($t17_18) {
21046 $block = 7; break;
21047 }
21048 else {
21049 $block = 6; break;
21050 }
21051 break;
21052 }
21053 case 5: {
21054 $t18_19 = { $get() { return ln.$get().lifetime; }, $set(v) { const obj = ln.$get(); obj.lifetime = v; ln.$set(obj); } };
21055 $t19_20 = $t18_19.$get();
21056 $t20_21 = { $get() { return opts.$get().nowUnix; }, $set(v) { const obj = opts.$get(); obj.nowUnix = v; opts.$set(obj); } };
21057 $t21_22 = $t20_21.$get();
21058 $t22_23 = lifetime$verifyAt($t19_20, $t21_22);
21059 if ($t22_23) {
21060 $block = 6; break;
21061 }
21062 else {
21063 $block = 8; break;
21064 }
21065 break;
21066 }
21067 case 6: {
21068 $t23_24 = $rt.builtin.makeMap('int');
21069 $t24_25 = { $get() { return ln.$get().capabilities; }, $set(v) { const obj = ln.$get(); obj.capabilities = v; ln.$set(obj); } };
21070 $t25_26 = { $get() { return $t24_25.$get().extensions; }, $set(v) { const obj = $t24_25.$get(); obj.extensions = v; $t24_25.$set(obj); } };
21071 $t26_27 = $t25_26.$get();
21072 $t27_28 = $rt.builtin.len($t26_27);
21073 $t32_33 = -1;
21074 $block = 9; break;
21075 break;
21076 }
21077 case 7: {
21078 $t28_29 = { $get() { return opts.$get().nowUnix; }, $set(v) { const obj = opts.$get(); obj.nowUnix = v; opts.$set(obj); } };
21079 $t29_30 = $t28_29.$get();
21080 $t30_31 = ($t29_30 !== 0n);
21081 if ($t30_31) {
21082 $block = 5; break;
21083 }
21084 else {
21085 $block = 6; break;
21086 }
21087 break;
21088 }
21089 case 8: {
21090 $t31_32 = errors.New('mls: lifetime verification failed');
21091 return $t31_32;
21092 break;
21093 }
21094 case 9: {
21095 $t33_34 = ($t32_33 + 1);
21096 $t34_35 = ($t33_34 < $t27_28);
21097 if ($t34_35) {
21098 $block = 10; break;
21099 }
21100 else {
21101 $block = 11; break;
21102 }
21103 break;
21104 }
21105 case 10: {
21106 $t35_36 = $t26_27.addr($t33_34);
21107 $t36_37 = $t35_36.$get();
21108 $rt.builtin.mapUpdate($t23_24, $t36_37, true);
21109 $t32_33 = $t33_34;
21110 $block = 9; break;
21111 break;
21112 }
21113 case 11: {
21114 $t37_38 = { $get() { return ln.$get().extensions; }, $set(v) { const obj = ln.$get(); obj.extensions = v; ln.$set(obj); } };
21115 $t38_39 = $t37_38.$get();
21116 $t39_40 = $rt.builtin.len($t38_39);
21117 $t40_41 = -1;
21118 $block = 12; break;
21119 break;
21120 }
21121 case 12: {
21122 $t41_42 = ($t40_41 + 1);
21123 $t42_43 = ($t41_42 < $t39_40);
21124 if ($t42_43) {
21125 $block = 13; break;
21126 }
21127 else {
21128 $block = 14; break;
21129 }
21130 break;
21131 }
21132 case 13: {
21133 $t43_44 = $t38_39.addr($t41_42);
21134 $t44_45 = $t43_44.$get();
21135 $t45_46 = { $value: { extensionType: 0, extensionData: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21136 $t45_46.$set($rt.builtin.cloneValue($t44_45));
21137 $t46_47 = { $get() { return $t45_46.$get().extensionType; }, $set(v) { const obj = $t45_46.$get(); obj.extensionType = v; $t45_46.$set(obj); } };
21138 $t47_48 = $t46_47.$get();
21139 $t48_49 = $rt.builtin.mapLookup($t23_24, $t47_48).value;
21140 if ($t48_49) {
21141 $t40_41 = $t41_42;
21142 $block = 12; break;
21143 }
21144 else {
21145 $block = 15; break;
21146 }
21147 break;
21148 }
21149 case 14: {
21150 $t49_50 = { $get() { return opts.$get().signatureKeys; }, $set(v) { const obj = opts.$get(); obj.signatureKeys = v; opts.$set(obj); } };
21151 $t50_51 = $t49_50.$get();
21152 $t51_52 = { $get() { return ln.$get().signatureKey; }, $set(v) { const obj = ln.$get(); obj.signatureKey = v; ln.$set(obj); } };
21153 $t52_53 = $t51_52.$get();
21154 $t53_54 = $rt.builtin.mapLookup($t50_51, $t52_53).value;
21155 if ($t53_54) {
21156 $block = 16; break;
21157 }
21158 else {
21159 $block = 17; break;
21160 }
21161 break;
21162 }
21163 case 15: {
21164 $t54_55 = errors.New('mls: extension type not supported by leaf node');
21165 return $t54_55;
21166 break;
21167 }
21168 case 16: {
21169 $t55_56 = errors.New('mls: duplicate signature key');
21170 return $t55_56;
21171 break;
21172 }
21173 case 17: {
21174 $t56_57 = { $get() { return opts.$get().encryptionKeys; }, $set(v) { const obj = opts.$get(); obj.encryptionKeys = v; opts.$set(obj); } };
21175 $t57_58 = $t56_57.$get();
21176 $t58_59 = { $get() { return ln.$get().encryptionKey; }, $set(v) { const obj = ln.$get(); obj.encryptionKey = v; ln.$set(obj); } };
21177 $t59_60 = $t58_59.$get();
21178 $t60_61 = $rt.builtin.mapLookup($t57_58, $t59_60).value;
21179 if ($t60_61) {
21180 $block = 18; break;
21181 }
21182 else {
21183 $block = 19; break;
21184 }
21185 break;
21186 }
21187 case 18: {
21188 $t61_62 = errors.New('mls: duplicate encryption key');
21189 return $t61_62;
21190 break;
21191 }
21192 case 19: {
21193 return null;
21194 break;
21195 }
21196 }
21197 }
21198 }
21199
21200 $rt.types.getType('smesh.lol/web/common/mls.leafNode')?.methods?.set('verify', leafNode$verify);
21201 export function leafNode$verifySignature(node, cs, groupID, li) {
21202 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
21203 let $block = 0;
21204 while (true) {
21205 switch ($block) {
21206 case 0: {
21207 $t0_1 = { $value: { node: null, groupID: null, leafIndex: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21208 $t1_2 = { $get() { return $t0_1.$get().node; }, $set(v) { const obj = $t0_1.$get(); obj.node = v; $t0_1.$set(obj); } };
21209 $t2_3 = { $get() { return $t0_1.$get().groupID; }, $set(v) { const obj = $t0_1.$get(); obj.groupID = v; $t0_1.$set(obj); } };
21210 $t3_4 = { $get() { return $t0_1.$get().leafIndex; }, $set(v) { const obj = $t0_1.$get(); obj.leafIndex = v; $t0_1.$set(obj); } };
21211 $t1_2.$set(node);
21212 $t2_3.$set(groupID);
21213 $t3_4.$set(li);
21214 $t4_5 = $rt.types.makeInterface('*smesh.lol/web/common/mls.leafNodeTBS', $t0_1);
21215 $t5_6 = marshalRaw($t4_5);
21216 $t6_7 = $t5_6[0];
21217 $t7_8 = $t5_6[1];
21218 $t8_9 = ($t7_8 !== null);
21219 if ($t8_9) {
21220 $block = 1; break;
21221 }
21222 else {
21223 $block = 2; break;
21224 }
21225 break;
21226 }
21227 case 1: {
21228 return false;
21229 break;
21230 }
21231 case 2: {
21232 $t9_10 = { $get() { return node.$get().signatureKey; }, $set(v) { const obj = node.$get(); obj.signatureKey = v; node.$set(obj); } };
21233 $t10_11 = $t9_10.$get();
21234 $t11_12 = { $get() { return node.$get().signature; }, $set(v) { const obj = node.$get(); obj.signature = v; node.$set(obj); } };
21235 $t12_13 = $t11_12.$get();
21236 $t13_14 = CipherSuite$verifyWithLabel(cs, $t10_11, 'LeafNodeTBS', $t6_7, $t12_13);
21237 return $t13_14;
21238 break;
21239 }
21240 }
21241 }
21242 }
21243
21244 $rt.types.getType('smesh.lol/web/common/mls.leafNode')?.methods?.set('verifySignature', leafNode$verifySignature);
21245 export function leafNodeTBS$marshal(tbs, w) {
21246 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17;
21247 let $block = 0;
21248 while (true) {
21249 switch ($block) {
21250 case 0: {
21251 $t0_1 = { $get() { return tbs.$get().node; }, $set(v) { const obj = tbs.$get(); obj.node = v; tbs.$set(obj); } };
21252 $t1_2 = $t0_1.$get();
21253 $t2_3 = leafNode$marshalBase($t1_2, w);
21254 $t3_4 = { $get() { return tbs.$get().node; }, $set(v) { const obj = tbs.$get(); obj.node = v; tbs.$set(obj); } };
21255 $t4_5 = $t3_4.$get();
21256 $t5_6 = { $get() { return $t4_5.$get().leafNodeSource; }, $set(v) { const obj = $t4_5.$get(); obj.leafNodeSource = v; $t4_5.$set(obj); } };
21257 $t6_7 = $t5_6.$get();
21258 $t7_8 = ($t6_7 === 2);
21259 if ($t7_8) {
21260 $block = 2; break;
21261 }
21262 else {
21263 $block = 3; break;
21264 }
21265 break;
21266 }
21267 case 1: {
21268 return;
21269 break;
21270 }
21271 case 2: {
21272 $t8_9 = { $get() { return tbs.$get().groupID; }, $set(v) { const obj = tbs.$get(); obj.groupID = v; tbs.$set(obj); } };
21273 $t9_10 = $t8_9.$get();
21274 $t10_11 = $t9_10;
21275 $t11_12 = Writer$writeOpaqueVec(w, $t10_11);
21276 $t12_13 = { $get() { return tbs.$get().leafIndex; }, $set(v) { const obj = tbs.$get(); obj.leafIndex = v; tbs.$set(obj); } };
21277 $t13_14 = $t12_13.$get();
21278 $t14_15 = $t13_14;
21279 $t15_16 = Writer$addUint32(w, $t14_15);
21280 $block = 1; break;
21281 break;
21282 }
21283 case 3: {
21284 $t16_17 = ($t6_7 === 3);
21285 if ($t16_17) {
21286 $block = 2; break;
21287 }
21288 else {
21289 $block = 1; break;
21290 }
21291 break;
21292 }
21293 }
21294 }
21295 }
21296
21297 $rt.types.getType('smesh.lol/web/common/mls.leafNodeTBS')?.methods?.set('marshal', leafNodeTBS$marshal);
21298 export function updatePathNode$marshal(node, w) {
21299 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
21300 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21301 $t0_1.$set(node);
21302 $t1_2 = $t0_1.$get();
21303 $t2_3 = { $get() { return $t1_2.$get().encryptionKey; }, $set(v) { const obj = $t1_2.$get(); obj.encryptionKey = v; $t1_2.$set(obj); } };
21304 $t3_4 = $t2_3.$get();
21305 $t4_5 = $t3_4;
21306 $t5_6 = Writer$writeOpaqueVec(w, $t4_5);
21307 $t6_7 = $t0_1.$get();
21308 $t7_8 = { $get() { return $t6_7.$get().encryptedPathSecret; }, $set(v) { const obj = $t6_7.$get(); obj.encryptedPathSecret = v; $t6_7.$set(obj); } };
21309 $t8_9 = $t7_8.$get();
21310 $t9_10 = $rt.builtin.len($t8_9);
21311 $t10_11 = updatePathNode$marshal$1.bind(null, $t0_1);
21312 $t11_12 = Writer$writeVector(w, $t9_10, $t10_11);
21313 return;
21314 }
21315
21316 function updatePathNode$marshal$1(node, w, i) {
21317 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
21318 $t0_1 = node.$get();
21319 $t1_2 = { $get() { return $t0_1.$get().encryptedPathSecret; }, $set(v) { const obj = $t0_1.$get(); obj.encryptedPathSecret = v; $t0_1.$set(obj); } };
21320 $t2_3 = $t1_2.$get();
21321 $t3_4 = $t2_3.addr(i);
21322 $t4_5 = hpkeCiphertext$marshal($t3_4, w);
21323 return;
21324 }
21325
21326 $rt.types.getType('smesh.lol/web/common/mls.updatePathNode')?.methods?.set('marshal', updatePathNode$marshal);
21327 export function updatePathNode$unmarshal(node, r) {
21328 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
21329 let $block = 0;
21330 while (true) {
21331 switch ($block) {
21332 case 0: {
21333 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21334 $t0_1.$set(node);
21335 $t1_2 = $t0_1.$get();
21336 $t1_2.$set($rt.builtin.cloneValue({ encryptionKey: null, encryptedPathSecret: null }));
21337 $t2_3 = $t0_1.$get();
21338 $t3_4 = Reader$readOpaqueVec(r);
21339 $t4_5 = $t3_4[0];
21340 $t5_6 = { $get() { return $t2_3.$get().encryptionKey; }, $set(v) { const obj = $t2_3.$get(); obj.encryptionKey = v; $t2_3.$set(obj); } };
21341 $t6_7 = $t4_5;
21342 $t5_6.$set($t6_7);
21343 $t7_8 = $t3_4[1];
21344 if ($t7_8) {
21345 $block = 2; break;
21346 }
21347 else {
21348 $block = 1; break;
21349 }
21350 break;
21351 }
21352 case 1: {
21353 $t8_9 = errUnexpectedEOF.$get();
21354 return $t8_9;
21355 break;
21356 }
21357 case 2: {
21358 $t9_10 = updatePathNode$unmarshal$1.bind(null, $t0_1);
21359 $t10_11 = Reader$readVector(r, $t9_10);
21360 return $t10_11;
21361 break;
21362 }
21363 }
21364 }
21365 }
21366
21367 function updatePathNode$unmarshal$1(node, r) {
21368 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
21369 let $block = 0;
21370 while (true) {
21371 switch ($block) {
21372 case 0: {
21373 $t0_1 = { $value: { kemOutput: null, ciphertext: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21374 $t1_2 = hpkeCiphertext$unmarshal($t0_1, r);
21375 $t2_3 = ($t1_2 !== null);
21376 if ($t2_3) {
21377 $block = 1; break;
21378 }
21379 else {
21380 $block = 2; break;
21381 }
21382 break;
21383 }
21384 case 1: {
21385 return $t1_2;
21386 break;
21387 }
21388 case 2: {
21389 $t3_4 = node.$get();
21390 $t4_5 = node.$get();
21391 $t5_6 = { $get() { return $t4_5.$get().encryptedPathSecret; }, $set(v) { const obj = $t4_5.$get(); obj.encryptedPathSecret = v; $t4_5.$set(obj); } };
21392 $t6_7 = $t5_6.$get();
21393 $t7_8 = $t0_1.$get();
21394 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { kemOutput: null, ciphertext: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
21395 $t9_10 = $t8_9.$get().addr(0);
21396 $t9_10.$set($rt.builtin.cloneValue($t7_8));
21397 $t10_11 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
21398 $t11_12 = $rt.builtin.appendSlice($t6_7, $t10_11);
21399 $t12_13 = { $get() { return $t3_4.$get().encryptedPathSecret; }, $set(v) { const obj = $t3_4.$get(); obj.encryptedPathSecret = v; $t3_4.$set(obj); } };
21400 $t12_13.$set($t11_12);
21401 return null;
21402 break;
21403 }
21404 }
21405 }
21406 }
21407
21408 $rt.types.getType('smesh.lol/web/common/mls.updatePathNode')?.methods?.set('unmarshal', updatePathNode$unmarshal);
21409 export function updatePath$marshal(up, w) {
21410 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
21411 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21412 $t0_1.$set(up);
21413 $t1_2 = $t0_1.$get();
21414 $t2_3 = { $get() { return $t1_2.$get().leafNode; }, $set(v) { const obj = $t1_2.$get(); obj.leafNode = v; $t1_2.$set(obj); } };
21415 $t3_4 = leafNode$marshal($t2_3, w);
21416 $t4_5 = $t0_1.$get();
21417 $t5_6 = { $get() { return $t4_5.$get().nodes; }, $set(v) { const obj = $t4_5.$get(); obj.nodes = v; $t4_5.$set(obj); } };
21418 $t6_7 = $t5_6.$get();
21419 $t7_8 = $rt.builtin.len($t6_7);
21420 $t8_9 = updatePath$marshal$1.bind(null, $t0_1);
21421 $t9_10 = Writer$writeVector(w, $t7_8, $t8_9);
21422 return;
21423 }
21424
21425 function updatePath$marshal$1(up, w, i) {
21426 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
21427 $t0_1 = up.$get();
21428 $t1_2 = { $get() { return $t0_1.$get().nodes; }, $set(v) { const obj = $t0_1.$get(); obj.nodes = v; $t0_1.$set(obj); } };
21429 $t2_3 = $t1_2.$get();
21430 $t3_4 = $t2_3.addr(i);
21431 $t4_5 = updatePathNode$marshal($t3_4, w);
21432 return;
21433 }
21434
21435 $rt.types.getType('smesh.lol/web/common/mls.updatePath')?.methods?.set('marshal', updatePath$marshal);
21436 export function updatePath$unmarshal(up, r) {
21437 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
21438 let $block = 0;
21439 while (true) {
21440 switch ($block) {
21441 case 0: {
21442 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21443 $t0_1.$set(up);
21444 $t1_2 = $t0_1.$get();
21445 $t1_2.$set($rt.builtin.cloneValue({ leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, nodes: null }));
21446 $t2_3 = $t0_1.$get();
21447 $t3_4 = { $get() { return $t2_3.$get().leafNode; }, $set(v) { const obj = $t2_3.$get(); obj.leafNode = v; $t2_3.$set(obj); } };
21448 $t4_5 = leafNode$unmarshal($t3_4, r);
21449 $t5_6 = ($t4_5 !== null);
21450 if ($t5_6) {
21451 $block = 1; break;
21452 }
21453 else {
21454 $block = 2; break;
21455 }
21456 break;
21457 }
21458 case 1: {
21459 return $t4_5;
21460 break;
21461 }
21462 case 2: {
21463 $t6_7 = updatePath$unmarshal$1.bind(null, $t0_1);
21464 $t7_8 = Reader$readVector(r, $t6_7);
21465 return $t7_8;
21466 break;
21467 }
21468 }
21469 }
21470 }
21471
21472 function updatePath$unmarshal$1(up, r) {
21473 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
21474 let $block = 0;
21475 while (true) {
21476 switch ($block) {
21477 case 0: {
21478 $t0_1 = { $value: { encryptionKey: null, encryptedPathSecret: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21479 $t1_2 = updatePathNode$unmarshal($t0_1, r);
21480 $t2_3 = ($t1_2 !== null);
21481 if ($t2_3) {
21482 $block = 1; break;
21483 }
21484 else {
21485 $block = 2; break;
21486 }
21487 break;
21488 }
21489 case 1: {
21490 return $t1_2;
21491 break;
21492 }
21493 case 2: {
21494 $t3_4 = up.$get();
21495 $t4_5 = up.$get();
21496 $t5_6 = { $get() { return $t4_5.$get().nodes; }, $set(v) { const obj = $t4_5.$get(); obj.nodes = v; $t4_5.$set(obj); } };
21497 $t6_7 = $t5_6.$get();
21498 $t7_8 = $t0_1.$get();
21499 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { encryptionKey: null, encryptedPathSecret: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
21500 $t9_10 = $t8_9.$get().addr(0);
21501 $t9_10.$set($rt.builtin.cloneValue($t7_8));
21502 $t10_11 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
21503 $t11_12 = $rt.builtin.appendSlice($t6_7, $t10_11);
21504 $t12_13 = { $get() { return $t3_4.$get().nodes; }, $set(v) { const obj = $t3_4.$get(); obj.nodes = v; $t3_4.$set(obj); } };
21505 $t12_13.$set($t11_12);
21506 return null;
21507 break;
21508 }
21509 }
21510 }
21511 }
21512
21513 $rt.types.getType('smesh.lol/web/common/mls.updatePath')?.methods?.set('unmarshal', updatePath$unmarshal);
21514 export function nodeType$marshal(t, w) {
21515 let $t0_1, $t1_2;
21516 $t0_1 = t;
21517 $t1_2 = Writer$addByte(w, $t0_1);
21518 return;
21519 }
21520
21521 $rt.types.getType('smesh.lol/web/common/mls.nodeType')?.methods?.set('marshal', nodeType$marshal);
21522 export function nodeType$unmarshal(t, r) {
21523 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
21524 let $block = 0;
21525 while (true) {
21526 switch ($block) {
21527 case 0: {
21528 $t0_1 = Reader$readByte(r);
21529 $t1_2 = $t0_1[0];
21530 $t2_3 = $t0_1[1];
21531 if ($t2_3) {
21532 $block = 2; break;
21533 }
21534 else {
21535 $block = 1; break;
21536 }
21537 break;
21538 }
21539 case 1: {
21540 $t3_4 = errUnexpectedEOF.$get();
21541 return $t3_4;
21542 break;
21543 }
21544 case 2: {
21545 $t4_5 = $t1_2;
21546 t.$set($t4_5);
21547 $t5_6 = t.$get();
21548 $t6_7 = ($t5_6 === 1);
21549 if ($t6_7) {
21550 $block = 3; break;
21551 }
21552 else {
21553 $block = 4; break;
21554 }
21555 break;
21556 }
21557 case 3: {
21558 return null;
21559 break;
21560 }
21561 case 4: {
21562 $t7_8 = ($t5_6 === 2);
21563 if ($t7_8) {
21564 $block = 3; break;
21565 }
21566 else {
21567 $block = 5; break;
21568 }
21569 break;
21570 }
21571 case 5: {
21572 $t8_9 = errInvalidNodeType.$get();
21573 return $t8_9;
21574 break;
21575 }
21576 }
21577 }
21578 }
21579
21580 $rt.types.getType('smesh.lol/web/common/mls.nodeType')?.methods?.set('unmarshal', nodeType$unmarshal);
21581 export function node$encryptionKey(n) {
21582 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
21583 let $block = 0;
21584 while (true) {
21585 switch ($block) {
21586 case 0: {
21587 $t0_1 = { $get() { return n.$get().nodeType; }, $set(v) { const obj = n.$get(); obj.nodeType = v; n.$set(obj); } };
21588 $t1_2 = $t0_1.$get();
21589 $t2_3 = ($t1_2 === 1);
21590 if ($t2_3) {
21591 $block = 1; break;
21592 }
21593 else {
21594 $block = 3; break;
21595 }
21596 break;
21597 }
21598 case 1: {
21599 $t3_4 = { $get() { return n.$get().leafNode; }, $set(v) { const obj = n.$get(); obj.leafNode = v; n.$set(obj); } };
21600 $t4_5 = $t3_4.$get();
21601 $t5_6 = { $get() { return $t4_5.$get().encryptionKey; }, $set(v) { const obj = $t4_5.$get(); obj.encryptionKey = v; $t4_5.$set(obj); } };
21602 $t6_7 = $t5_6.$get();
21603 return $t6_7;
21604 break;
21605 }
21606 case 2: {
21607 $t7_8 = { $get() { return n.$get().parentNode; }, $set(v) { const obj = n.$get(); obj.parentNode = v; n.$set(obj); } };
21608 $t8_9 = $t7_8.$get();
21609 $t9_10 = { $get() { return $t8_9.$get().encryptionKey; }, $set(v) { const obj = $t8_9.$get(); obj.encryptionKey = v; $t8_9.$set(obj); } };
21610 $t10_11 = $t9_10.$get();
21611 return $t10_11;
21612 break;
21613 }
21614 case 3: {
21615 $t11_12 = ($t1_2 === 2);
21616 if ($t11_12) {
21617 $block = 2; break;
21618 }
21619 else {
21620 $block = 4; break;
21621 }
21622 break;
21623 }
21624 case 4: {
21625 $t12_13 = $rt.types.makeInterface('string', 'unreachable');
21626 $rt.runtime.panic($t12_13);
21627 break;
21628 }
21629 }
21630 }
21631 }
21632
21633 $rt.types.getType('smesh.lol/web/common/mls.node')?.methods?.set('encryptionKey', node$encryptionKey);
21634 export function node$marshal(n, w) {
21635 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
21636 let $block = 0;
21637 while (true) {
21638 switch ($block) {
21639 case 0: {
21640 $t0_1 = { $get() { return n.$get().nodeType; }, $set(v) { const obj = n.$get(); obj.nodeType = v; n.$set(obj); } };
21641 $t1_2 = $t0_1.$get();
21642 $t2_3 = nodeType$marshal($t1_2, w);
21643 $t3_4 = { $get() { return n.$get().nodeType; }, $set(v) { const obj = n.$get(); obj.nodeType = v; n.$set(obj); } };
21644 $t4_5 = $t3_4.$get();
21645 $t5_6 = ($t4_5 === 1);
21646 if ($t5_6) {
21647 $block = 2; break;
21648 }
21649 else {
21650 $block = 4; break;
21651 }
21652 break;
21653 }
21654 case 1: {
21655 return;
21656 break;
21657 }
21658 case 2: {
21659 $t6_7 = { $get() { return n.$get().leafNode; }, $set(v) { const obj = n.$get(); obj.leafNode = v; n.$set(obj); } };
21660 $t7_8 = $t6_7.$get();
21661 $t8_9 = leafNode$marshal($t7_8, w);
21662 $block = 1; break;
21663 break;
21664 }
21665 case 3: {
21666 $t9_10 = { $get() { return n.$get().parentNode; }, $set(v) { const obj = n.$get(); obj.parentNode = v; n.$set(obj); } };
21667 $t10_11 = $t9_10.$get();
21668 $t11_12 = parentNode$marshal($t10_11, w);
21669 $block = 1; break;
21670 break;
21671 }
21672 case 4: {
21673 $t12_13 = ($t4_5 === 2);
21674 if ($t12_13) {
21675 $block = 3; break;
21676 }
21677 else {
21678 $block = 5; break;
21679 }
21680 break;
21681 }
21682 case 5: {
21683 $t13_14 = $rt.types.makeInterface('string', 'unreachable');
21684 $rt.runtime.panic($t13_14);
21685 break;
21686 }
21687 }
21688 }
21689 }
21690
21691 $rt.types.getType('smesh.lol/web/common/mls.node')?.methods?.set('marshal', node$marshal);
21692 export function node$unmarshal(n, r) {
21693 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
21694 let $block = 0;
21695 while (true) {
21696 switch ($block) {
21697 case 0: {
21698 n.$set($rt.builtin.cloneValue({ nodeType: 0, leafNode: null, parentNode: null }));
21699 $t0_1 = { $get() { return n.$get().nodeType; }, $set(v) { const obj = n.$get(); obj.nodeType = v; n.$set(obj); } };
21700 $t1_2 = nodeType$unmarshal($t0_1, r);
21701 $t2_3 = ($t1_2 !== null);
21702 if ($t2_3) {
21703 $block = 1; break;
21704 }
21705 else {
21706 $block = 2; break;
21707 }
21708 break;
21709 }
21710 case 1: {
21711 return $t1_2;
21712 break;
21713 }
21714 case 2: {
21715 $t3_4 = { $get() { return n.$get().nodeType; }, $set(v) { const obj = n.$get(); obj.nodeType = v; n.$set(obj); } };
21716 $t4_5 = $t3_4.$get();
21717 $t5_6 = ($t4_5 === 1);
21718 if ($t5_6) {
21719 $block = 3; break;
21720 }
21721 else {
21722 $block = 5; break;
21723 }
21724 break;
21725 }
21726 case 3: {
21727 $t6_7 = { $value: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21728 $t7_8 = { $get() { return n.$get().leafNode; }, $set(v) { const obj = n.$get(); obj.leafNode = v; n.$set(obj); } };
21729 $t7_8.$set($t6_7);
21730 $t8_9 = { $get() { return n.$get().leafNode; }, $set(v) { const obj = n.$get(); obj.leafNode = v; n.$set(obj); } };
21731 $t9_10 = $t8_9.$get();
21732 $t10_11 = leafNode$unmarshal($t9_10, r);
21733 return $t10_11;
21734 break;
21735 }
21736 case 4: {
21737 $t11_12 = { $value: { encryptionKey: null, parentHash: null, unmergedLeaves: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21738 $t12_13 = { $get() { return n.$get().parentNode; }, $set(v) { const obj = n.$get(); obj.parentNode = v; n.$set(obj); } };
21739 $t12_13.$set($t11_12);
21740 $t13_14 = { $get() { return n.$get().parentNode; }, $set(v) { const obj = n.$get(); obj.parentNode = v; n.$set(obj); } };
21741 $t14_15 = $t13_14.$get();
21742 $t15_16 = parentNode$unmarshal($t14_15, r);
21743 return $t15_16;
21744 break;
21745 }
21746 case 5: {
21747 $t16_17 = ($t4_5 === 2);
21748 if ($t16_17) {
21749 $block = 4; break;
21750 }
21751 else {
21752 $block = 6; break;
21753 }
21754 break;
21755 }
21756 case 6: {
21757 $t17_18 = $rt.types.makeInterface('string', 'unreachable');
21758 $rt.runtime.panic($t17_18);
21759 break;
21760 }
21761 }
21762 }
21763 }
21764
21765 $rt.types.getType('smesh.lol/web/common/mls.node')?.methods?.set('unmarshal', node$unmarshal);
21766 export function ratchetTree$computeLeafTreeHash(tree, cs, x, exclude) {
21767 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
21768 let $block = 0;
21769 while (true) {
21770 switch ($block) {
21771 case 0: {
21772 $t0_1 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21773 $t1_2 = nodeIndex$leafIndex(x);
21774 $t2_3 = $t1_2[0];
21775 $t3_4 = $t1_2[1];
21776 $t4_5 = $t2_3;
21777 $t5_6 = Writer$addUint32($t0_1, $t4_5);
21778 $t6_7 = ratchetTree$get(tree, x);
21779 $t7_8 = $rt.builtin.mapLookup(exclude, $t2_3).value;
21780 if ($t7_8) {
21781 $block = 1; break;
21782 }
21783 else {
21784 $t8_9 = $t6_7;
21785 $block = 2; break;
21786 }
21787 break;
21788 }
21789 case 1: {
21790 $t8_9 = null;
21791 $block = 2; break;
21792 break;
21793 }
21794 case 2: {
21795 $t9_10 = ($t8_9 !== null);
21796 $t10_11 = Writer$writeOptional($t0_1, $t9_10);
21797 $t11_12 = ($t8_9 !== null);
21798 if ($t11_12) {
21799 $block = 3; break;
21800 }
21801 else {
21802 $block = 4; break;
21803 }
21804 break;
21805 }
21806 case 3: {
21807 $t12_13 = { $get() { return $t8_9.$get().leafNode; }, $set(v) { const obj = $t8_9.$get(); obj.leafNode = v; $t8_9.$set(obj); } };
21808 $t13_14 = $t12_13.$get();
21809 $t14_15 = leafNode$marshal($t13_14, $t0_1);
21810 $block = 4; break;
21811 break;
21812 }
21813 case 4: {
21814 $t15_16 = Writer$bytes($t0_1);
21815 $t16_17 = $t15_16[0];
21816 $t17_18 = $t15_16[1];
21817 $t18_19 = ($t17_18 !== null);
21818 if ($t18_19) {
21819 $block = 5; break;
21820 }
21821 else {
21822 $block = 6; break;
21823 }
21824 break;
21825 }
21826 case 5: {
21827 return [null, $t17_18];
21828 break;
21829 }
21830 case 6: {
21831 $t19_20 = CipherSuite$hash(cs, $t16_17);
21832 return [$t19_20, null];
21833 break;
21834 }
21835 }
21836 }
21837 }
21838
21839 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('computeLeafTreeHash', ratchetTree$computeLeafTreeHash);
21840 export function ratchetTree$computeParentTreeHash(tree, cs, x, n, exclude) {
21841 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68;
21842 let $block = 0;
21843 while (true) {
21844 switch ($block) {
21845 case 0: {
21846 $t0_1 = nodeIndex$children(x);
21847 $t1_2 = $t0_1[0];
21848 $t2_3 = $t0_1[1];
21849 $t3_4 = $t0_1[2];
21850 if ($t3_4) {
21851 $block = 2; break;
21852 }
21853 else {
21854 $block = 1; break;
21855 }
21856 break;
21857 }
21858 case 1: {
21859 $t4_5 = errUnexpectedEOF.$get();
21860 return [null, $t4_5];
21861 break;
21862 }
21863 case 2: {
21864 $t5_6 = ratchetTree$computeTreeHash(tree, cs, $t1_2, n, exclude);
21865 $t6_7 = $t5_6[0];
21866 $t7_8 = $t5_6[1];
21867 $t8_9 = ($t7_8 !== null);
21868 if ($t8_9) {
21869 $block = 3; break;
21870 }
21871 else {
21872 $block = 4; break;
21873 }
21874 break;
21875 }
21876 case 3: {
21877 return [null, $t7_8];
21878 break;
21879 }
21880 case 4: {
21881 $t9_10 = ratchetTree$computeTreeHash(tree, cs, $t2_3, n, exclude);
21882 $t10_11 = $t9_10[0];
21883 $t11_12 = $t9_10[1];
21884 $t12_13 = ($t11_12 !== null);
21885 if ($t12_13) {
21886 $block = 5; break;
21887 }
21888 else {
21889 $block = 6; break;
21890 }
21891 break;
21892 }
21893 case 5: {
21894 return [null, $t11_12];
21895 break;
21896 }
21897 case 6: {
21898 $t13_14 = { $value: { buf: null, err: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21899 $t14_15 = ratchetTree$get(tree, x);
21900 $t15_16 = ($t14_15 !== null);
21901 if ($t15_16) {
21902 $block = 9; break;
21903 }
21904 else {
21905 $block = 8; break;
21906 }
21907 break;
21908 }
21909 case 7: {
21910 $t16_17 = { $get() { return $t14_15.$get().parentNode; }, $set(v) { const obj = $t14_15.$get(); obj.parentNode = v; $t14_15.$set(obj); } };
21911 $t17_18 = $t16_17.$get();
21912 $t18_19 = ($t17_18 !== null);
21913 if ($t18_19) {
21914 $block = 11; break;
21915 }
21916 else {
21917 $block = 8; break;
21918 }
21919 break;
21920 }
21921 case 8: {
21922 $t19_20 = ($t14_15 !== null);
21923 $t20_21 = Writer$writeOptional($t13_14, $t19_20);
21924 $t21_22 = ($t14_15 !== null);
21925 if ($t21_22) {
21926 $block = 18; break;
21927 }
21928 else {
21929 $block = 19; break;
21930 }
21931 break;
21932 }
21933 case 9: {
21934 $t22_23 = $rt.builtin.len(exclude);
21935 $t23_24 = ($t22_23 > 0);
21936 if ($t23_24) {
21937 $block = 7; break;
21938 }
21939 else {
21940 $block = 8; break;
21941 }
21942 break;
21943 }
21944 case 10: {
21945 $t24_25 = { $get() { return $t17_18.$get().unmergedLeaves; }, $set(v) { const obj = $t17_18.$get(); obj.unmergedLeaves = v; $t17_18.$set(obj); } };
21946 $t25_26 = $t24_25.$get();
21947 $t26_27 = $rt.builtin.len($t25_26);
21948 $t27_28 = $rt.builtin.makeSlice(0, $t26_27, 0);
21949 $t28_29 = { $get() { return $t17_18.$get().unmergedLeaves; }, $set(v) { const obj = $t17_18.$get(); obj.unmergedLeaves = v; $t17_18.$set(obj); } };
21950 $t29_30 = $t28_29.$get();
21951 $t30_31 = $rt.builtin.len($t29_30);
21952 $t35_36 = $t27_28;
21953 $t36_37 = -1;
21954 $block = 12; break;
21955 break;
21956 }
21957 case 11: {
21958 $t31_32 = { $get() { return $t17_18.$get().unmergedLeaves; }, $set(v) { const obj = $t17_18.$get(); obj.unmergedLeaves = v; $t17_18.$set(obj); } };
21959 $t32_33 = $t31_32.$get();
21960 $t33_34 = $rt.builtin.len($t32_33);
21961 $t34_35 = ($t33_34 > 0);
21962 if ($t34_35) {
21963 $block = 10; break;
21964 }
21965 else {
21966 $block = 8; break;
21967 }
21968 break;
21969 }
21970 case 12: {
21971 $t37_38 = ($t36_37 + 1);
21972 $t38_39 = ($t37_38 < $t30_31);
21973 if ($t38_39) {
21974 $block = 13; break;
21975 }
21976 else {
21977 $block = 14; break;
21978 }
21979 break;
21980 }
21981 case 13: {
21982 $t39_40 = $t29_30.addr($t37_38);
21983 $t40_41 = $t39_40.$get();
21984 $t41_42 = $rt.builtin.mapLookup(exclude, $t40_41).value;
21985 if ($t41_42) {
21986 let $phi0 = $t35_36;
21987 let $phi1 = $t37_38;
21988 $t35_36 = $phi0;
21989 $t36_37 = $phi1;
21990 $block = 12; break;
21991 }
21992 else {
21993 $block = 15; break;
21994 }
21995 break;
21996 }
21997 case 14: {
21998 $t42_43 = { $value: { encryptionKey: null, parentHash: null, unmergedLeaves: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
21999 $t43_44 = $t17_18.$get();
22000 $t42_43.$set($rt.builtin.cloneValue($t43_44));
22001 $t44_45 = { $get() { return $t42_43.$get().unmergedLeaves; }, $set(v) { const obj = $t42_43.$get(); obj.unmergedLeaves = v; $t42_43.$set(obj); } };
22002 $t44_45.$set($t35_36);
22003 $t45_46 = Writer$writeOptional($t13_14, true);
22004 $t46_47 = parentNode$marshal($t42_43, $t13_14);
22005 $t47_48 = Writer$writeOpaqueVec($t13_14, $t6_7);
22006 $t48_49 = Writer$writeOpaqueVec($t13_14, $t10_11);
22007 $t49_50 = Writer$bytes($t13_14);
22008 $t50_51 = $t49_50[0];
22009 $t51_52 = $t49_50[1];
22010 $t52_53 = ($t51_52 !== null);
22011 if ($t52_53) {
22012 $block = 16; break;
22013 }
22014 else {
22015 $block = 17; break;
22016 }
22017 break;
22018 }
22019 case 15: {
22020 $t53_54 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
22021 $t54_55 = $t53_54.$get().addr(0);
22022 $t54_55.$set($t40_41);
22023 $t55_56 = $rt.builtin.sliceSlice($t53_54.$get(), undefined, undefined, undefined);
22024 $t56_57 = $rt.builtin.appendSlice($t35_36, $t55_56);
22025 $t35_36 = $t56_57;
22026 $t36_37 = $t37_38;
22027 $block = 12; break;
22028 break;
22029 }
22030 case 16: {
22031 return [null, $t51_52];
22032 break;
22033 }
22034 case 17: {
22035 $t57_58 = CipherSuite$hash(cs, $t50_51);
22036 return [$t57_58, null];
22037 break;
22038 }
22039 case 18: {
22040 $t58_59 = { $get() { return $t14_15.$get().parentNode; }, $set(v) { const obj = $t14_15.$get(); obj.parentNode = v; $t14_15.$set(obj); } };
22041 $t59_60 = $t58_59.$get();
22042 $t60_61 = parentNode$marshal($t59_60, $t13_14);
22043 $block = 19; break;
22044 break;
22045 }
22046 case 19: {
22047 $t61_62 = Writer$writeOpaqueVec($t13_14, $t6_7);
22048 $t62_63 = Writer$writeOpaqueVec($t13_14, $t10_11);
22049 $t63_64 = Writer$bytes($t13_14);
22050 $t64_65 = $t63_64[0];
22051 $t65_66 = $t63_64[1];
22052 $t66_67 = ($t65_66 !== null);
22053 if ($t66_67) {
22054 $block = 20; break;
22055 }
22056 else {
22057 $block = 21; break;
22058 }
22059 break;
22060 }
22061 case 20: {
22062 return [null, $t65_66];
22063 break;
22064 }
22065 case 21: {
22066 $t67_68 = CipherSuite$hash(cs, $t64_65);
22067 return [$t67_68, null];
22068 break;
22069 }
22070 }
22071 }
22072 }
22073
22074 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('computeParentTreeHash', ratchetTree$computeParentTreeHash);
22075 export function ratchetTree$computeRootTreeHash(tree, cs) {
22076 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
22077 $t0_1 = ratchetTree$numLeaves(tree);
22078 $t1_2 = numLeaves$root($t0_1);
22079 $t2_3 = ratchetTree$computeTreeHash(tree, cs, $t1_2, $t0_1, null);
22080 $t3_4 = $t2_3[0];
22081 $t4_5 = $t2_3[1];
22082 return [$t3_4, $t4_5];
22083 }
22084
22085 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('computeRootTreeHash', ratchetTree$computeRootTreeHash);
22086 export function ratchetTree$computeTreeHash(tree, cs, x, n, exclude) {
22087 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
22088 let $block = 0;
22089 while (true) {
22090 switch ($block) {
22091 case 0: {
22092 $t0_1 = nodeIndex$isLeaf(x);
22093 if ($t0_1) {
22094 $block = 1; break;
22095 }
22096 else {
22097 $block = 2; break;
22098 }
22099 break;
22100 }
22101 case 1: {
22102 $t1_2 = ratchetTree$computeLeafTreeHash(tree, cs, x, exclude);
22103 $t2_3 = $t1_2[0];
22104 $t3_4 = $t1_2[1];
22105 return [$t2_3, $t3_4];
22106 break;
22107 }
22108 case 2: {
22109 $t4_5 = ratchetTree$computeParentTreeHash(tree, cs, x, n, exclude);
22110 $t5_6 = $t4_5[0];
22111 $t6_7 = $t4_5[1];
22112 return [$t5_6, $t6_7];
22113 break;
22114 }
22115 }
22116 }
22117 }
22118
22119 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('computeTreeHash', ratchetTree$computeTreeHash);
22120 export function ratchetTree$copy(tree) {
22121 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
22122 let $block = 0;
22123 while (true) {
22124 switch ($block) {
22125 case 0: {
22126 $t0_1 = $rt.builtin.len(tree);
22127 $t1_2 = $rt.builtin.makeSlice($t0_1, $t0_1, null);
22128 $t2_3 = $rt.builtin.len(tree);
22129 $t3_4 = -1;
22130 $block = 1; break;
22131 break;
22132 }
22133 case 1: {
22134 $t4_5 = ($t3_4 + 1);
22135 $t5_6 = ($t4_5 < $t2_3);
22136 if ($t5_6) {
22137 $block = 2; break;
22138 }
22139 else {
22140 $block = 3; break;
22141 }
22142 break;
22143 }
22144 case 2: {
22145 $t6_7 = tree.addr($t4_5);
22146 $t7_8 = $t6_7.$get();
22147 $t8_9 = $t1_2.addr($t4_5);
22148 $t8_9.$set($t7_8);
22149 $t3_4 = $t4_5;
22150 $block = 1; break;
22151 break;
22152 }
22153 case 3: {
22154 return $t1_2;
22155 break;
22156 }
22157 }
22158 }
22159 }
22160
22161 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('copy', ratchetTree$copy);
22162 export function ratchetTree$decryptPathSecrets(tree, cs, ctx, senderLI, recipientLI, path, privTree) {
22163 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98;
22164 let $block = 0;
22165 while (true) {
22166 switch ($block) {
22167 case 0: {
22168 $t0_1 = leafIndex$nodeIndex(senderLI);
22169 $t1_2 = leafIndex$nodeIndex(recipientLI);
22170 $t2_3 = ratchetTree$filteredDirectPath(tree, $t0_1);
22171 $t3_4 = { $get() { return path.$get().nodes; }, $set(v) { const obj = path.$get(); obj.nodes = v; path.$set(obj); } };
22172 $t4_5 = $t3_4.$get();
22173 $t5_6 = $rt.builtin.len($t4_5);
22174 $t6_7 = $rt.builtin.len($t2_3);
22175 $t7_8 = ($t5_6 !== $t6_7);
22176 if ($t7_8) {
22177 $block = 1; break;
22178 }
22179 else {
22180 $block = 2; break;
22181 }
22182 break;
22183 }
22184 case 1: {
22185 $t8_9 = errors.New('mls: invalid update path length');
22186 return [null, $t8_9];
22187 break;
22188 }
22189 case 2: {
22190 $t9_10 = commonAncestor($t0_1, $t1_2);
22191 $t10_11 = $rt.builtin.len($t2_3);
22192 $t11_12 = -1;
22193 $block = 3; break;
22194 break;
22195 }
22196 case 3: {
22197 $t12_13 = ($t11_12 + 1);
22198 $t13_14 = ($t12_13 < $t10_11);
22199 if ($t13_14) {
22200 $block = 4; break;
22201 }
22202 else {
22203 $t17_18 = -1;
22204 $block = 5; break;
22205 }
22206 break;
22207 }
22208 case 4: {
22209 $t14_15 = $t2_3.addr($t12_13);
22210 $t15_16 = $t14_15.$get();
22211 $t16_17 = ($t15_16 === $t9_10);
22212 if ($t16_17) {
22213 $block = 6; break;
22214 }
22215 else {
22216 $t11_12 = $t12_13;
22217 $block = 3; break;
22218 }
22219 break;
22220 }
22221 case 5: {
22222 $t18_19 = ($t17_18 < 0);
22223 if ($t18_19) {
22224 $block = 7; break;
22225 }
22226 else {
22227 $block = 8; break;
22228 }
22229 break;
22230 }
22231 case 6: {
22232 $t17_18 = $t12_13;
22233 $block = 5; break;
22234 break;
22235 }
22236 case 7: {
22237 $t19_20 = errors.New('mls: cannot find recipient ancestor');
22238 return [null, $t19_20];
22239 break;
22240 }
22241 case 8: {
22242 $t20_21 = { $value: { encryptionKey: null, encryptedPathSecret: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
22243 $t21_22 = { $get() { return path.$get().nodes; }, $set(v) { const obj = path.$get(); obj.nodes = v; path.$set(obj); } };
22244 $t22_23 = $t21_22.$get();
22245 $t23_24 = $t22_23.addr($t17_18);
22246 $t24_25 = $t23_24.$get();
22247 $t20_21.$set($rt.builtin.cloneValue($t24_25));
22248 $t25_26 = commonAncestor($t0_1, $t1_2);
22249 $t26_27 = ($t1_2 < $t0_1);
22250 if ($t26_27) {
22251 $block = 9; break;
22252 }
22253 else {
22254 $block = 11; break;
22255 }
22256 break;
22257 }
22258 case 9: {
22259 $t27_28 = nodeIndex$left($t25_26);
22260 $t28_29 = $t27_28[0];
22261 $t29_30 = $t27_28[1];
22262 $t30_31 = $t28_29;
22263 $t31_32 = $t29_30;
22264 $block = 10; break;
22265 break;
22266 }
22267 case 10: {
22268 if ($t31_32) {
22269 $block = 13; break;
22270 }
22271 else {
22272 $block = 12; break;
22273 }
22274 break;
22275 }
22276 case 11: {
22277 $t32_33 = nodeIndex$right($t25_26);
22278 $t33_34 = $t32_33[0];
22279 $t34_35 = $t32_33[1];
22280 $t30_31 = $t33_34;
22281 $t31_32 = $t34_35;
22282 $block = 10; break;
22283 break;
22284 }
22285 case 12: {
22286 $t35_36 = $rt.types.makeInterface('string', 'unreachable');
22287 $rt.runtime.panic($t35_36);
22288 break;
22289 }
22290 case 13: {
22291 $t36_37 = ratchetTree$resolve(tree, $t30_31);
22292 $t37_38 = { $get() { return $t20_21.$get().encryptedPathSecret; }, $set(v) { const obj = $t20_21.$get(); obj.encryptedPathSecret = v; $t20_21.$set(obj); } };
22293 $t38_39 = $t37_38.$get();
22294 $t39_40 = $rt.builtin.len($t38_39);
22295 $t40_41 = $rt.builtin.len($t36_37);
22296 $t41_42 = ($t39_40 !== $t40_41);
22297 if ($t41_42) {
22298 $block = 14; break;
22299 }
22300 else {
22301 $block = 15; break;
22302 }
22303 break;
22304 }
22305 case 14: {
22306 $t42_43 = errors.New('mls: invalid encrypted path secret length');
22307 return [null, $t42_43];
22308 break;
22309 }
22310 case 15: {
22311 $t43_44 = $rt.builtin.len($t36_37);
22312 $t44_45 = -1;
22313 $block = 16; break;
22314 break;
22315 }
22316 case 16: {
22317 $t45_46 = ($t44_45 + 1);
22318 $t46_47 = ($t45_46 < $t43_44);
22319 if ($t46_47) {
22320 $block = 17; break;
22321 }
22322 else {
22323 $t53_54 = null;
22324 $t54_55 = -1;
22325 $block = 18; break;
22326 }
22327 break;
22328 }
22329 case 17: {
22330 $t47_48 = $t36_37.addr($t45_46);
22331 $t48_49 = $t47_48.$get();
22332 $t49_50 = $t48_49;
22333 $t50_51 = privTree.addr($t49_50);
22334 $t51_52 = $t50_51.$get();
22335 $t52_53 = !$rt.builtin.stringEqual($t51_52, null);
22336 if ($t52_53) {
22337 $block = 19; break;
22338 }
22339 else {
22340 $t44_45 = $t45_46;
22341 $block = 16; break;
22342 }
22343 break;
22344 }
22345 case 18: {
22346 $t55_56 = $rt.builtin.stringEqual($t53_54, null);
22347 if ($t55_56) {
22348 $block = 20; break;
22349 }
22350 else {
22351 $block = 21; break;
22352 }
22353 break;
22354 }
22355 case 19: {
22356 $t53_54 = $t51_52;
22357 $t54_55 = $t45_46;
22358 $block = 18; break;
22359 break;
22360 }
22361 case 20: {
22362 $t56_57 = errors.New('mls: no private key found');
22363 return [null, $t56_57];
22364 break;
22365 }
22366 case 21: {
22367 $t57_58 = { $get() { return $t20_21.$get().encryptedPathSecret; }, $set(v) { const obj = $t20_21.$get(); obj.encryptedPathSecret = v; $t20_21.$set(obj); } };
22368 $t58_59 = $t57_58.$get();
22369 $t59_60 = $t58_59.addr($t54_55);
22370 $t60_61 = $t59_60.$get();
22371 $t61_62 = decryptPathSecret(cs, $t53_54, ctx, $t60_61);
22372 $t62_63 = $t61_62[0];
22373 $t63_64 = $t61_62[1];
22374 $t64_65 = ($t63_64 !== null);
22375 if ($t64_65) {
22376 $block = 22; break;
22377 }
22378 else {
22379 $block = 23; break;
22380 }
22381 break;
22382 }
22383 case 22: {
22384 return [null, $t63_64];
22385 break;
22386 }
22387 case 23: {
22388 $t65_66 = ratchetTree$get(tree, $t9_10);
22389 $t66_67 = node$encryptionKey($t65_66);
22390 $t67_68 = nodePrivFromPathSecret(cs, $t62_63, $t66_67);
22391 $t68_69 = $t67_68[0];
22392 $t69_70 = $t67_68[1];
22393 $t70_71 = ($t69_70 !== null);
22394 if ($t70_71) {
22395 $block = 24; break;
22396 }
22397 else {
22398 $block = 25; break;
22399 }
22400 break;
22401 }
22402 case 24: {
22403 return [null, $t69_70];
22404 break;
22405 }
22406 case 25: {
22407 $t71_72 = $t9_10;
22408 $t72_73 = privTree.addr($t71_72);
22409 $t72_73.$set($t68_69);
22410 $t73_74 = ($t17_18 + 1);
22411 $t74_75 = $rt.builtin.sliceSlice($t2_3, $t73_74, undefined, undefined);
22412 $t75_76 = $rt.builtin.len($t74_75);
22413 $t76_77 = $t62_63;
22414 $t77_78 = -1;
22415 $block = 26; break;
22416 break;
22417 }
22418 case 26: {
22419 $t78_79 = ($t77_78 + 1);
22420 $t79_80 = ($t78_79 < $t75_76);
22421 if ($t79_80) {
22422 $block = 27; break;
22423 }
22424 else {
22425 $block = 28; break;
22426 }
22427 break;
22428 }
22429 case 27: {
22430 $t80_81 = $t74_75.addr($t78_79);
22431 $t81_82 = $t80_81.$get();
22432 $t82_83 = CipherSuite$deriveSecret(cs, $t76_77, 'path');
22433 $t83_84 = $t82_83[0];
22434 $t84_85 = $t82_83[1];
22435 $t85_86 = ($t84_85 !== null);
22436 if ($t85_86) {
22437 $block = 29; break;
22438 }
22439 else {
22440 $block = 30; break;
22441 }
22442 break;
22443 }
22444 case 28: {
22445 $t86_87 = CipherSuite$deriveSecret(cs, $t76_77, 'path');
22446 $t87_88 = $t86_87[0];
22447 $t88_89 = $t86_87[1];
22448 $t89_90 = ($t88_89 !== null);
22449 if ($t89_90) {
22450 $block = 33; break;
22451 }
22452 else {
22453 $block = 34; break;
22454 }
22455 break;
22456 }
22457 case 29: {
22458 return [null, $t84_85];
22459 break;
22460 }
22461 case 30: {
22462 $t90_91 = ratchetTree$get(tree, $t81_82);
22463 $t91_92 = node$encryptionKey($t90_91);
22464 $t92_93 = nodePrivFromPathSecret(cs, $t83_84, $t91_92);
22465 $t93_94 = $t92_93[0];
22466 $t94_95 = $t92_93[1];
22467 $t95_96 = ($t94_95 !== null);
22468 if ($t95_96) {
22469 $block = 31; break;
22470 }
22471 else {
22472 $block = 32; break;
22473 }
22474 break;
22475 }
22476 case 31: {
22477 return [null, $t94_95];
22478 break;
22479 }
22480 case 32: {
22481 $t96_97 = $t81_82;
22482 $t97_98 = privTree.addr($t96_97);
22483 $t97_98.$set($t93_94);
22484 $t76_77 = $t83_84;
22485 $t77_78 = $t78_79;
22486 $block = 26; break;
22487 break;
22488 }
22489 case 33: {
22490 return [null, $t88_89];
22491 break;
22492 }
22493 case 34: {
22494 return [$t87_88, null];
22495 break;
22496 }
22497 }
22498 }
22499 }
22500
22501 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('decryptPathSecrets', ratchetTree$decryptPathSecrets);
22502 export function ratchetTree$filteredDirectPath(tree, x) {
22503 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
22504 let $block = 0;
22505 while (true) {
22506 switch ($block) {
22507 case 0: {
22508 $t0_1 = ratchetTree$numLeaves(tree);
22509 $t1_2 = x;
22510 $t2_3 = null;
22511 $block = 1; break;
22512 break;
22513 }
22514 case 1: {
22515 $t3_4 = numLeaves$parent($t0_1, $t1_2);
22516 $t4_5 = $t3_4[0];
22517 $t5_6 = $t3_4[1];
22518 if ($t5_6) {
22519 $block = 3; break;
22520 }
22521 else {
22522 $block = 2; break;
22523 }
22524 break;
22525 }
22526 case 2: {
22527 return $t2_3;
22528 break;
22529 }
22530 case 3: {
22531 $t6_7 = numLeaves$sibling($t0_1, $t1_2);
22532 $t7_8 = $t6_7[0];
22533 $t8_9 = $t6_7[1];
22534 if ($t8_9) {
22535 $block = 5; break;
22536 }
22537 else {
22538 $block = 4; break;
22539 }
22540 break;
22541 }
22542 case 4: {
22543 $t9_10 = $rt.types.makeInterface('string', 'unreachable');
22544 $rt.runtime.panic($t9_10);
22545 break;
22546 }
22547 case 5: {
22548 $t10_11 = ratchetTree$resolve(tree, $t7_8);
22549 $t11_12 = $rt.builtin.len($t10_11);
22550 $t12_13 = ($t11_12 > 0);
22551 if ($t12_13) {
22552 $block = 6; break;
22553 }
22554 else {
22555 $t17_18 = $t2_3;
22556 $block = 7; break;
22557 }
22558 break;
22559 }
22560 case 6: {
22561 $t13_14 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
22562 $t14_15 = $t13_14.$get().addr(0);
22563 $t14_15.$set($t4_5);
22564 $t15_16 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
22565 $t16_17 = $rt.builtin.appendSlice($t2_3, $t15_16);
22566 $t17_18 = $t16_17;
22567 $block = 7; break;
22568 break;
22569 }
22570 case 7: {
22571 $t1_2 = $t4_5;
22572 $t2_3 = $t17_18;
22573 $block = 1; break;
22574 break;
22575 }
22576 }
22577 }
22578 }
22579
22580 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('filteredDirectPath', ratchetTree$filteredDirectPath);
22581 export function ratchetTree$findLeaf(tree, ln) {
22582 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26;
22583 let $block = 0;
22584 while (true) {
22585 switch ($block) {
22586 case 0: {
22587 $t0_1 = 0;
22588 $block = 1; break;
22589 break;
22590 }
22591 case 1: {
22592 $t1_2 = ratchetTree$numLeaves(tree);
22593 $t2_3 = $t1_2;
22594 $t3_4 = ($t0_1 < $t2_3);
22595 if ($t3_4) {
22596 $block = 2; break;
22597 }
22598 else {
22599 $block = 4; break;
22600 }
22601 break;
22602 }
22603 case 2: {
22604 $t4_5 = ratchetTree$getLeaf(tree, $t0_1);
22605 $t5_6 = ($t4_5 === null);
22606 if ($t5_6) {
22607 $block = 3; break;
22608 }
22609 else {
22610 $block = 5; break;
22611 }
22612 break;
22613 }
22614 case 3: {
22615 $t6_7 = (($t0_1 + 1) >>> 0);
22616 $t0_1 = $t6_7;
22617 $block = 1; break;
22618 break;
22619 }
22620 case 4: {
22621 return [0, false];
22622 break;
22623 }
22624 case 5: {
22625 $t7_8 = { $get() { return $t4_5.$get().encryptionKey; }, $set(v) { const obj = $t4_5.$get(); obj.encryptionKey = v; $t4_5.$set(obj); } };
22626 $t8_9 = $t7_8.$get();
22627 $t9_10 = { $get() { return ln.$get().encryptionKey; }, $set(v) { const obj = ln.$get(); obj.encryptionKey = v; ln.$set(obj); } };
22628 $t10_11 = $t9_10.$get();
22629 $t11_12 = $t8_9;
22630 $t12_13 = $t10_11;
22631 $t13_14 = bytesEqual($t11_12, $t12_13);
22632 if ($t13_14) {
22633 $block = 6; break;
22634 }
22635 else {
22636 $block = 3; break;
22637 }
22638 break;
22639 }
22640 case 6: {
22641 $t14_15 = $rt.types.makeInterface('*smesh.lol/web/common/mls.leafNode', ln);
22642 $t15_16 = marshalRaw($t14_15);
22643 $t16_17 = $t15_16[0];
22644 $t17_18 = $t15_16[1];
22645 $t18_19 = $rt.types.makeInterface('*smesh.lol/web/common/mls.leafNode', $t4_5);
22646 $t19_20 = marshalRaw($t18_19);
22647 $t20_21 = $t19_20[0];
22648 $t21_22 = $t19_20[1];
22649 $t22_23 = ($t17_18 === null);
22650 if ($t22_23) {
22651 $block = 9; break;
22652 }
22653 else {
22654 $t24_25 = false;
22655 $block = 8; break;
22656 }
22657 break;
22658 }
22659 case 7: {
22660 $t23_24 = bytesEqual($t16_17, $t20_21);
22661 $t24_25 = $t23_24;
22662 $block = 8; break;
22663 break;
22664 }
22665 case 8: {
22666 return [$t0_1, $t24_25];
22667 break;
22668 }
22669 case 9: {
22670 $t25_26 = ($t21_22 === null);
22671 if ($t25_26) {
22672 $block = 7; break;
22673 }
22674 else {
22675 $t24_25 = false;
22676 $block = 8; break;
22677 }
22678 break;
22679 }
22680 }
22681 }
22682 }
22683
22684 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('findLeaf', ratchetTree$findLeaf);
22685 export function ratchetTree$findParentHash(tree, nodeIndices, ph) {
22686 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
22687 let $block = 0;
22688 while (true) {
22689 switch ($block) {
22690 case 0: {
22691 $t0_1 = $rt.builtin.len(nodeIndices);
22692 $t1_2 = -1;
22693 $block = 1; break;
22694 break;
22695 }
22696 case 1: {
22697 $t2_3 = ($t1_2 + 1);
22698 $t3_4 = ($t2_3 < $t0_1);
22699 if ($t3_4) {
22700 $block = 2; break;
22701 }
22702 else {
22703 $block = 3; break;
22704 }
22705 break;
22706 }
22707 case 2: {
22708 $t4_5 = nodeIndices.addr($t2_3);
22709 $t5_6 = $t4_5.$get();
22710 $t6_7 = ratchetTree$get(tree, $t5_6);
22711 $t7_8 = ($t6_7 === null);
22712 if ($t7_8) {
22713 $t1_2 = $t2_3;
22714 $block = 1; break;
22715 }
22716 else {
22717 $block = 4; break;
22718 }
22719 break;
22720 }
22721 case 3: {
22722 return false;
22723 break;
22724 }
22725 case 4: {
22726 $t8_9 = { $get() { return $t6_7.$get().nodeType; }, $set(v) { const obj = $t6_7.$get(); obj.nodeType = v; $t6_7.$set(obj); } };
22727 $t9_10 = $t8_9.$get();
22728 $t10_11 = ($t9_10 === 1);
22729 if ($t10_11) {
22730 $block = 6; break;
22731 }
22732 else {
22733 $block = 8; break;
22734 }
22735 break;
22736 }
22737 case 5: {
22738 $t12_13 = bytesEqual($t11_12, ph);
22739 if ($t12_13) {
22740 $block = 9; break;
22741 }
22742 else {
22743 $t1_2 = $t2_3;
22744 $block = 1; break;
22745 }
22746 break;
22747 }
22748 case 6: {
22749 $t13_14 = { $get() { return $t6_7.$get().leafNode; }, $set(v) { const obj = $t6_7.$get(); obj.leafNode = v; $t6_7.$set(obj); } };
22750 $t14_15 = $t13_14.$get();
22751 $t15_16 = { $get() { return $t14_15.$get().parentHash; }, $set(v) { const obj = $t14_15.$get(); obj.parentHash = v; $t14_15.$set(obj); } };
22752 $t16_17 = $t15_16.$get();
22753 $t11_12 = $t16_17;
22754 $block = 5; break;
22755 break;
22756 }
22757 case 7: {
22758 $t17_18 = { $get() { return $t6_7.$get().parentNode; }, $set(v) { const obj = $t6_7.$get(); obj.parentNode = v; $t6_7.$set(obj); } };
22759 $t18_19 = $t17_18.$get();
22760 $t19_20 = { $get() { return $t18_19.$get().parentHash; }, $set(v) { const obj = $t18_19.$get(); obj.parentHash = v; $t18_19.$set(obj); } };
22761 $t20_21 = $t19_20.$get();
22762 $t11_12 = $t20_21;
22763 $block = 5; break;
22764 break;
22765 }
22766 case 8: {
22767 $t21_22 = ($t9_10 === 2);
22768 if ($t21_22) {
22769 $block = 7; break;
22770 }
22771 else {
22772 $t11_12 = null;
22773 $block = 5; break;
22774 }
22775 break;
22776 }
22777 case 9: {
22778 return true;
22779 break;
22780 }
22781 }
22782 }
22783 }
22784
22785 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('findParentHash', ratchetTree$findParentHash);
22786 export function ratchetTree$get(tree, i) {
22787 let $t0_1, $t1_2, $t2_3;
22788 $t0_1 = i;
22789 $t1_2 = tree.addr($t0_1);
22790 $t2_3 = $t1_2.$get();
22791 return $t2_3;
22792 }
22793
22794 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('get', ratchetTree$get);
22795 export function ratchetTree$getLeaf(tree, li) {
22796 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
22797 let $block = 0;
22798 while (true) {
22799 switch ($block) {
22800 case 0: {
22801 $t0_1 = leafIndex$nodeIndex(li);
22802 $t1_2 = ratchetTree$get(tree, $t0_1);
22803 $t2_3 = ($t1_2 === null);
22804 if ($t2_3) {
22805 $block = 1; break;
22806 }
22807 else {
22808 $block = 2; break;
22809 }
22810 break;
22811 }
22812 case 1: {
22813 return null;
22814 break;
22815 }
22816 case 2: {
22817 $t3_4 = { $get() { return $t1_2.$get().leafNode; }, $set(v) { const obj = $t1_2.$get(); obj.leafNode = v; $t1_2.$set(obj); } };
22818 $t4_5 = $t3_4.$get();
22819 return $t4_5;
22820 break;
22821 }
22822 }
22823 }
22824 }
22825
22826 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('getLeaf', ratchetTree$getLeaf);
22827 export function ratchetTree$keys(tree) {
22828 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
22829 let $block = 0;
22830 while (true) {
22831 switch ($block) {
22832 case 0: {
22833 $t0_1 = $rt.builtin.makeMap('string');
22834 $t1_2 = $rt.builtin.makeMap('string');
22835 $t2_3 = 0;
22836 $block = 1; break;
22837 break;
22838 }
22839 case 1: {
22840 $t3_4 = ratchetTree$numLeaves(tree);
22841 $t4_5 = $t3_4;
22842 $t5_6 = ($t2_3 < $t4_5);
22843 if ($t5_6) {
22844 $block = 2; break;
22845 }
22846 else {
22847 $block = 4; break;
22848 }
22849 break;
22850 }
22851 case 2: {
22852 $t6_7 = ratchetTree$getLeaf(tree, $t2_3);
22853 $t7_8 = ($t6_7 === null);
22854 if ($t7_8) {
22855 $block = 3; break;
22856 }
22857 else {
22858 $block = 5; break;
22859 }
22860 break;
22861 }
22862 case 3: {
22863 $t8_9 = (($t2_3 + 1) >>> 0);
22864 $t2_3 = $t8_9;
22865 $block = 1; break;
22866 break;
22867 }
22868 case 4: {
22869 return [$t0_1, $t1_2];
22870 break;
22871 }
22872 case 5: {
22873 $t9_10 = { $get() { return $t6_7.$get().signatureKey; }, $set(v) { const obj = $t6_7.$get(); obj.signatureKey = v; $t6_7.$set(obj); } };
22874 $t10_11 = $t9_10.$get();
22875 $rt.builtin.mapUpdate($t0_1, $t10_11, true);
22876 $t11_12 = { $get() { return $t6_7.$get().encryptionKey; }, $set(v) { const obj = $t6_7.$get(); obj.encryptionKey = v; $t6_7.$set(obj); } };
22877 $t12_13 = $t11_12.$get();
22878 $rt.builtin.mapUpdate($t1_2, $t12_13, true);
22879 $block = 3; break;
22880 break;
22881 }
22882 }
22883 }
22884 }
22885
22886 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('keys', ratchetTree$keys);
22887 export function ratchetTree$marshal(tree, w) {
22888 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16;
22889 let $block = 0;
22890 while (true) {
22891 switch ($block) {
22892 case 0: {
22893 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
22894 $t0_1.$set(tree);
22895 $t1_2 = $t0_1.$get();
22896 $t2_3 = $rt.builtin.len($t1_2);
22897 $t9_10 = $t2_3;
22898 $block = 3; break;
22899 break;
22900 }
22901 case 1: {
22902 $t3_4 = ($t9_10 - 1);
22903 $t9_10 = $t3_4;
22904 $block = 3; break;
22905 break;
22906 }
22907 case 2: {
22908 $t4_5 = $t0_1.$get();
22909 $t5_6 = $rt.builtin.sliceSlice($t4_5, undefined, $t9_10, undefined);
22910 $t6_7 = $rt.builtin.len($t5_6);
22911 $t7_8 = ratchetTree$marshal$1.bind(null, $t0_1);
22912 $t8_9 = Writer$writeVector(w, $t6_7, $t7_8);
22913 return;
22914 break;
22915 }
22916 case 3: {
22917 $t10_11 = ($t9_10 > 0);
22918 if ($t10_11) {
22919 $block = 4; break;
22920 }
22921 else {
22922 $block = 2; break;
22923 }
22924 break;
22925 }
22926 case 4: {
22927 $t11_12 = $t0_1.$get();
22928 $t12_13 = ($t9_10 - 1);
22929 $t13_14 = $t11_12.addr($t12_13);
22930 $t14_15 = $t13_14.$get();
22931 $t15_16 = ($t14_15 === null);
22932 if ($t15_16) {
22933 $block = 1; break;
22934 }
22935 else {
22936 $block = 2; break;
22937 }
22938 break;
22939 }
22940 }
22941 }
22942 }
22943
22944 function ratchetTree$marshal$1(tree, w, i) {
22945 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
22946 let $block = 0;
22947 while (true) {
22948 switch ($block) {
22949 case 0: {
22950 $t0_1 = tree.$get();
22951 $t1_2 = $t0_1.addr(i);
22952 $t2_3 = $t1_2.$get();
22953 $t3_4 = ($t2_3 !== null);
22954 $t4_5 = Writer$writeOptional(w, $t3_4);
22955 $t5_6 = ($t2_3 !== null);
22956 if ($t5_6) {
22957 $block = 1; break;
22958 }
22959 else {
22960 $block = 2; break;
22961 }
22962 break;
22963 }
22964 case 1: {
22965 $t6_7 = node$marshal($t2_3, w);
22966 $block = 2; break;
22967 break;
22968 }
22969 case 2: {
22970 return;
22971 break;
22972 }
22973 }
22974 }
22975 }
22976
22977 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('marshal', ratchetTree$marshal);
22978 export function ratchetTree$mergeUpdatePath(tree, cs, senderLI, path) {
22979 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79;
22980 let $block = 0;
22981 while (true) {
22982 switch ($block) {
22983 case 0: {
22984 $t0_1 = leafIndex$nodeIndex(senderLI);
22985 $t1_2 = ratchetTree$numLeaves(tree);
22986 $t2_3 = numLeaves$directPath($t1_2, $t0_1);
22987 $t3_4 = $rt.builtin.len($t2_3);
22988 $t4_5 = -1;
22989 $block = 1; break;
22990 break;
22991 }
22992 case 1: {
22993 $t5_6 = ($t4_5 + 1);
22994 $t6_7 = ($t5_6 < $t3_4);
22995 if ($t6_7) {
22996 $block = 2; break;
22997 }
22998 else {
22999 $block = 3; break;
23000 }
23001 break;
23002 }
23003 case 2: {
23004 $t7_8 = $t2_3.addr($t5_6);
23005 $t8_9 = $t7_8.$get();
23006 $t9_10 = ratchetTree$set(tree, $t8_9, null);
23007 $t4_5 = $t5_6;
23008 $block = 1; break;
23009 break;
23010 }
23011 case 3: {
23012 $t10_11 = ratchetTree$filteredDirectPath(tree, $t0_1);
23013 $t11_12 = $rt.builtin.len($t10_11);
23014 $t12_13 = { $get() { return path.$get().nodes; }, $set(v) { const obj = path.$get(); obj.nodes = v; path.$set(obj); } };
23015 $t13_14 = $t12_13.$get();
23016 $t14_15 = $rt.builtin.len($t13_14);
23017 $t15_16 = ($t11_12 !== $t14_15);
23018 if ($t15_16) {
23019 $block = 4; break;
23020 }
23021 else {
23022 $block = 5; break;
23023 }
23024 break;
23025 }
23026 case 4: {
23027 $t16_17 = errors.New('mls: update path length mismatch');
23028 return $t16_17;
23029 break;
23030 }
23031 case 5: {
23032 $t17_18 = $rt.builtin.len($t10_11);
23033 $t18_19 = -1;
23034 $block = 6; break;
23035 break;
23036 }
23037 case 6: {
23038 $t19_20 = ($t18_19 + 1);
23039 $t20_21 = ($t19_20 < $t17_18);
23040 if ($t20_21) {
23041 $block = 7; break;
23042 }
23043 else {
23044 $block = 8; break;
23045 }
23046 break;
23047 }
23048 case 7: {
23049 $t21_22 = $t10_11.addr($t19_20);
23050 $t22_23 = $t21_22.$get();
23051 $t23_24 = { $value: { nodeType: 0, leafNode: null, parentNode: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23052 $t24_25 = { $get() { return $t23_24.$get().nodeType; }, $set(v) { const obj = $t23_24.$get(); obj.nodeType = v; $t23_24.$set(obj); } };
23053 $t25_26 = { $get() { return $t23_24.$get().parentNode; }, $set(v) { const obj = $t23_24.$get(); obj.parentNode = v; $t23_24.$set(obj); } };
23054 $t26_27 = { $value: { encryptionKey: null, parentHash: null, unmergedLeaves: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23055 $t27_28 = { $get() { return $t26_27.$get().encryptionKey; }, $set(v) { const obj = $t26_27.$get(); obj.encryptionKey = v; $t26_27.$set(obj); } };
23056 $t28_29 = { $get() { return path.$get().nodes; }, $set(v) { const obj = path.$get(); obj.nodes = v; path.$set(obj); } };
23057 $t29_30 = $t28_29.$get();
23058 $t30_31 = $t29_30.addr($t19_20);
23059 $t31_32 = { $get() { return $t30_31.$get().encryptionKey; }, $set(v) { const obj = $t30_31.$get(); obj.encryptionKey = v; $t30_31.$set(obj); } };
23060 $t32_33 = $t31_32.$get();
23061 $t27_28.$set($t32_33);
23062 $t24_25.$set(2);
23063 $t25_26.$set($t26_27);
23064 $t33_34 = ratchetTree$set(tree, $t22_23, $t23_24);
23065 $t18_19 = $t19_20;
23066 $block = 6; break;
23067 break;
23068 }
23069 case 8: {
23070 $t34_35 = $rt.builtin.len($t10_11);
23071 $t35_36 = ($t34_35 - 1);
23072 $t36_37 = null;
23073 $t37_38 = $t35_36;
23074 $block = 9; break;
23075 break;
23076 }
23077 case 9: {
23078 $t38_39 = ($t37_38 >= 0);
23079 if ($t38_39) {
23080 $block = 10; break;
23081 }
23082 else {
23083 $block = 11; break;
23084 }
23085 break;
23086 }
23087 case 10: {
23088 $t39_40 = $t10_11.addr($t37_38);
23089 $t40_41 = $t39_40.$get();
23090 $t41_42 = ratchetTree$get(tree, $t40_41);
23091 $t42_43 = { $get() { return $t41_42.$get().parentNode; }, $set(v) { const obj = $t41_42.$get(); obj.parentNode = v; $t41_42.$set(obj); } };
23092 $t43_44 = $t42_43.$get();
23093 $t44_45 = nodeIndex$children($t40_41);
23094 $t45_46 = $t44_45[0];
23095 $t46_47 = $t44_45[1];
23096 $t47_48 = $t44_45[2];
23097 if ($t47_48) {
23098 $block = 13; break;
23099 }
23100 else {
23101 $block = 12; break;
23102 }
23103 break;
23104 }
23105 case 11: {
23106 $t48_49 = { $get() { return path.$get().leafNode; }, $set(v) { const obj = path.$get(); obj.leafNode = v; path.$set(obj); } };
23107 $t49_50 = { $get() { return $t48_49.$get().parentHash; }, $set(v) { const obj = $t48_49.$get(); obj.parentHash = v; $t48_49.$set(obj); } };
23108 $t50_51 = $t49_50.$get();
23109 $t51_52 = bytesEqual($t50_51, $t36_37);
23110 if ($t51_52) {
23111 $block = 26; break;
23112 }
23113 else {
23114 $block = 25; break;
23115 }
23116 break;
23117 }
23118 case 12: {
23119 $t52_53 = $rt.types.makeInterface('string', 'unreachable');
23120 $rt.runtime.panic($t52_53);
23121 break;
23122 }
23123 case 13: {
23124 $t53_54 = $rt.builtin.len($t2_3);
23125 $t54_55 = -1;
23126 $block = 14; break;
23127 break;
23128 }
23129 case 14: {
23130 $t55_56 = ($t54_55 + 1);
23131 $t56_57 = ($t55_56 < $t53_54);
23132 if ($t56_57) {
23133 $block = 15; break;
23134 }
23135 else {
23136 $t60_61 = false;
23137 $block = 16; break;
23138 }
23139 break;
23140 }
23141 case 15: {
23142 $t57_58 = $t2_3.addr($t55_56);
23143 $t58_59 = $t57_58.$get();
23144 $t59_60 = ($t58_59 === $t45_46);
23145 if ($t59_60) {
23146 $block = 17; break;
23147 }
23148 else {
23149 $t54_55 = $t55_56;
23150 $block = 14; break;
23151 }
23152 break;
23153 }
23154 case 16: {
23155 $t61_62 = ($t45_46 === $t0_1);
23156 if ($t61_62) {
23157 $block = 18; break;
23158 }
23159 else {
23160 $block = 20; break;
23161 }
23162 break;
23163 }
23164 case 17: {
23165 $t60_61 = true;
23166 $block = 16; break;
23167 break;
23168 }
23169 case 18: {
23170 $t62_63 = $t46_47;
23171 $block = 19; break;
23172 break;
23173 }
23174 case 19: {
23175 $t63_64 = ratchetTree$computeTreeHash(tree, cs, $t62_63, $t1_2, null);
23176 $t64_65 = $t63_64[0];
23177 $t65_66 = $t63_64[1];
23178 $t66_67 = ($t65_66 !== null);
23179 if ($t66_67) {
23180 $block = 21; break;
23181 }
23182 else {
23183 $block = 22; break;
23184 }
23185 break;
23186 }
23187 case 20: {
23188 if ($t60_61) {
23189 $block = 18; break;
23190 }
23191 else {
23192 $t62_63 = $t45_46;
23193 $block = 19; break;
23194 }
23195 break;
23196 }
23197 case 21: {
23198 return $t65_66;
23199 break;
23200 }
23201 case 22: {
23202 $t67_68 = { $get() { return $t43_44.$get().parentHash; }, $set(v) { const obj = $t43_44.$get(); obj.parentHash = v; $t43_44.$set(obj); } };
23203 $t67_68.$set($t36_37);
23204 $t68_69 = parentNode$computeParentHash($t43_44, cs, $t64_65);
23205 $t69_70 = $t68_69[0];
23206 $t70_71 = $t68_69[1];
23207 $t71_72 = ($t70_71 !== null);
23208 if ($t71_72) {
23209 $block = 23; break;
23210 }
23211 else {
23212 $block = 24; break;
23213 }
23214 break;
23215 }
23216 case 23: {
23217 return $t70_71;
23218 break;
23219 }
23220 case 24: {
23221 $t72_73 = ($t37_38 - 1);
23222 $t36_37 = $t69_70;
23223 $t37_38 = $t72_73;
23224 $block = 9; break;
23225 break;
23226 }
23227 case 25: {
23228 $t73_74 = errors.New('mls: parent hash mismatch for update path leaf node');
23229 return $t73_74;
23230 break;
23231 }
23232 case 26: {
23233 $t74_75 = { $value: { nodeType: 0, leafNode: null, parentNode: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23234 $t75_76 = { $get() { return $t74_75.$get().nodeType; }, $set(v) { const obj = $t74_75.$get(); obj.nodeType = v; $t74_75.$set(obj); } };
23235 $t76_77 = { $get() { return $t74_75.$get().leafNode; }, $set(v) { const obj = $t74_75.$get(); obj.leafNode = v; $t74_75.$set(obj); } };
23236 $t77_78 = { $get() { return path.$get().leafNode; }, $set(v) { const obj = path.$get(); obj.leafNode = v; path.$set(obj); } };
23237 $t75_76.$set(1);
23238 $t76_77.$set($t77_78);
23239 $t78_79 = ratchetTree$set(tree, $t0_1, $t74_75);
23240 return null;
23241 break;
23242 }
23243 }
23244 }
23245 }
23246
23247 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('mergeUpdatePath', ratchetTree$mergeUpdatePath);
23248 export function ratchetTree$numLeaves(tree) {
23249 let $t0_1, $t1_2, $t2_3;
23250 $t0_1 = $rt.builtin.len(tree);
23251 $t1_2 = $t0_1;
23252 $t2_3 = numLeavesFromWidth($t1_2);
23253 return $t2_3;
23254 }
23255
23256 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('numLeaves', ratchetTree$numLeaves);
23257 export function ratchetTree$resolve(tree, x) {
23258 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32;
23259 let $block = 0;
23260 while (true) {
23261 switch ($block) {
23262 case 0: {
23263 $t0_1 = ratchetTree$get(tree, x);
23264 $t1_2 = ($t0_1 === null);
23265 if ($t1_2) {
23266 $block = 1; break;
23267 }
23268 else {
23269 $block = 2; break;
23270 }
23271 break;
23272 }
23273 case 1: {
23274 $t2_3 = nodeIndex$children(x);
23275 $t3_4 = $t2_3[0];
23276 $t4_5 = $t2_3[1];
23277 $t5_6 = $t2_3[2];
23278 if ($t5_6) {
23279 $block = 4; break;
23280 }
23281 else {
23282 $block = 3; break;
23283 }
23284 break;
23285 }
23286 case 2: {
23287 $t6_7 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
23288 $t7_8 = $t6_7.$get().addr(0);
23289 $t7_8.$set(x);
23290 $t8_9 = $rt.builtin.sliceSlice($t6_7.$get(), undefined, undefined, undefined);
23291 $t9_10 = { $get() { return $t0_1.$get().nodeType; }, $set(v) { const obj = $t0_1.$get(); obj.nodeType = v; $t0_1.$set(obj); } };
23292 $t10_11 = $t9_10.$get();
23293 $t11_12 = ($t10_11 === 2);
23294 if ($t11_12) {
23295 $block = 5; break;
23296 }
23297 else {
23298 $t20_21 = $t8_9;
23299 $block = 6; break;
23300 }
23301 break;
23302 }
23303 case 3: {
23304 return null;
23305 break;
23306 }
23307 case 4: {
23308 $t12_13 = ratchetTree$resolve(tree, $t3_4);
23309 $t13_14 = ratchetTree$resolve(tree, $t4_5);
23310 $t14_15 = $rt.builtin.appendSlice($t12_13, $t13_14);
23311 return $t14_15;
23312 break;
23313 }
23314 case 5: {
23315 $t15_16 = { $get() { return $t0_1.$get().parentNode; }, $set(v) { const obj = $t0_1.$get(); obj.parentNode = v; $t0_1.$set(obj); } };
23316 $t16_17 = $t15_16.$get();
23317 $t17_18 = { $get() { return $t16_17.$get().unmergedLeaves; }, $set(v) { const obj = $t16_17.$get(); obj.unmergedLeaves = v; $t16_17.$set(obj); } };
23318 $t18_19 = $t17_18.$get();
23319 $t19_20 = $rt.builtin.len($t18_19);
23320 $t21_22 = $t8_9;
23321 $t22_23 = -1;
23322 $block = 7; break;
23323 break;
23324 }
23325 case 6: {
23326 return $t20_21;
23327 break;
23328 }
23329 case 7: {
23330 $t23_24 = ($t22_23 + 1);
23331 $t24_25 = ($t23_24 < $t19_20);
23332 if ($t24_25) {
23333 $block = 8; break;
23334 }
23335 else {
23336 $t20_21 = $t21_22;
23337 $block = 6; break;
23338 }
23339 break;
23340 }
23341 case 8: {
23342 $t25_26 = $t18_19.addr($t23_24);
23343 $t26_27 = $t25_26.$get();
23344 $t27_28 = leafIndex$nodeIndex($t26_27);
23345 $t28_29 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
23346 $t29_30 = $t28_29.$get().addr(0);
23347 $t29_30.$set($t27_28);
23348 $t30_31 = $rt.builtin.sliceSlice($t28_29.$get(), undefined, undefined, undefined);
23349 $t31_32 = $rt.builtin.appendSlice($t21_22, $t30_31);
23350 $t21_22 = $t31_32;
23351 $t22_23 = $t23_24;
23352 $block = 7; break;
23353 break;
23354 }
23355 }
23356 }
23357 }
23358
23359 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('resolve', ratchetTree$resolve);
23360 export function ratchetTree$set(tree, i, nd) {
23361 let $t0_1, $t1_2;
23362 $t0_1 = i;
23363 $t1_2 = tree.addr($t0_1);
23364 $t1_2.$set(nd);
23365 return;
23366 }
23367
23368 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('set', ratchetTree$set);
23369 export function ratchetTree$supportedCreds(tree) {
23370 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29;
23371 let $block = 0;
23372 while (true) {
23373 switch ($block) {
23374 case 0: {
23375 $t0_1 = $rt.builtin.makeMap('int');
23376 $t1_2 = 0;
23377 $t2_3 = 0;
23378 $block = 1; break;
23379 break;
23380 }
23381 case 1: {
23382 $t3_4 = ratchetTree$numLeaves(tree);
23383 $t4_5 = $t3_4;
23384 $t5_6 = ($t2_3 < $t4_5);
23385 if ($t5_6) {
23386 $block = 2; break;
23387 }
23388 else {
23389 $block = 4; break;
23390 }
23391 break;
23392 }
23393 case 2: {
23394 $t6_7 = ratchetTree$getLeaf(tree, $t2_3);
23395 $t7_8 = ($t6_7 === null);
23396 if ($t7_8) {
23397 $t8_9 = $t1_2;
23398 $block = 3; break;
23399 }
23400 else {
23401 $block = 5; break;
23402 }
23403 break;
23404 }
23405 case 3: {
23406 $t9_10 = (($t2_3 + 1) >>> 0);
23407 $t1_2 = $t8_9;
23408 $t2_3 = $t9_10;
23409 $block = 1; break;
23410 break;
23411 }
23412 case 4: {
23413 $t10_11 = $rt.builtin.makeMap('int');
23414 $t11_12 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
23415 $block = 8; break;
23416 break;
23417 }
23418 case 5: {
23419 $t12_13 = ($t1_2 + 1);
23420 $t13_14 = { $get() { return $t6_7.$get().capabilities; }, $set(v) { const obj = $t6_7.$get(); obj.capabilities = v; $t6_7.$set(obj); } };
23421 $t14_15 = { $get() { return $t13_14.$get().credentials; }, $set(v) { const obj = $t13_14.$get(); obj.credentials = v; $t13_14.$set(obj); } };
23422 $t15_16 = $t14_15.$get();
23423 $t16_17 = $rt.builtin.len($t15_16);
23424 $t17_18 = -1;
23425 $block = 6; break;
23426 break;
23427 }
23428 case 6: {
23429 $t18_19 = ($t17_18 + 1);
23430 $t19_20 = ($t18_19 < $t16_17);
23431 if ($t19_20) {
23432 $block = 7; break;
23433 }
23434 else {
23435 $t8_9 = $t12_13;
23436 $block = 3; break;
23437 }
23438 break;
23439 }
23440 case 7: {
23441 $t20_21 = $t15_16.addr($t18_19);
23442 $t21_22 = $t20_21.$get();
23443 $t22_23 = $rt.builtin.mapLookup($t0_1, $t21_22).value;
23444 $t23_24 = ($t22_23 + 1);
23445 $rt.builtin.mapUpdate($t0_1, $t21_22, $t23_24);
23446 $t17_18 = $t18_19;
23447 $block = 6; break;
23448 break;
23449 }
23450 case 8: {
23451 $t24_25 = $t11_12.next();
23452 $t25_26 = $t24_25[0];
23453 if ($t25_26) {
23454 $block = 9; break;
23455 }
23456 else {
23457 $block = 10; break;
23458 }
23459 break;
23460 }
23461 case 9: {
23462 $t26_27 = $t24_25[1];
23463 $t27_28 = $t24_25[2];
23464 $t28_29 = ($t27_28 === $t1_2);
23465 if ($t28_29) {
23466 $block = 11; break;
23467 }
23468 else {
23469 $block = 8; break;
23470 }
23471 break;
23472 }
23473 case 10: {
23474 return $t10_11;
23475 break;
23476 }
23477 case 11: {
23478 $rt.builtin.mapUpdate($t10_11, $t26_27, true);
23479 $block = 8; break;
23480 break;
23481 }
23482 }
23483 }
23484 }
23485
23486 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('supportedCreds', ratchetTree$supportedCreds);
23487 export function ratchetTree$update(tree, li, ln) {
23488 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
23489 let $block = 0;
23490 while (true) {
23491 switch ($block) {
23492 case 0: {
23493 $t0_1 = leafIndex$nodeIndex(li);
23494 $t1_2 = { $value: { nodeType: 0, leafNode: null, parentNode: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23495 $t2_3 = { $get() { return $t1_2.$get().nodeType; }, $set(v) { const obj = $t1_2.$get(); obj.nodeType = v; $t1_2.$set(obj); } };
23496 $t3_4 = { $get() { return $t1_2.$get().leafNode; }, $set(v) { const obj = $t1_2.$get(); obj.leafNode = v; $t1_2.$set(obj); } };
23497 $t2_3.$set(1);
23498 $t3_4.$set(ln);
23499 $t4_5 = ratchetTree$set(tree, $t0_1, $t1_2);
23500 $t5_6 = ratchetTree$numLeaves(tree);
23501 $t6_7 = $t0_1;
23502 $block = 1; break;
23503 break;
23504 }
23505 case 1: {
23506 $t7_8 = numLeaves$parent($t5_6, $t6_7);
23507 $t8_9 = $t7_8[0];
23508 $t9_10 = $t7_8[1];
23509 if ($t9_10) {
23510 $block = 3; break;
23511 }
23512 else {
23513 $block = 2; break;
23514 }
23515 break;
23516 }
23517 case 2: {
23518 return;
23519 break;
23520 }
23521 case 3: {
23522 $t10_11 = ratchetTree$set(tree, $t8_9, null);
23523 $t6_7 = $t8_9;
23524 $block = 1; break;
23525 break;
23526 }
23527 }
23528 }
23529 }
23530
23531 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('update', ratchetTree$update);
23532 export function ratchetTree$verifyIntegrity(tree, ctx, nowUnix) {
23533 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82;
23534 let $block = 0;
23535 while (true) {
23536 switch ($block) {
23537 case 0: {
23538 $t0_1 = { $get() { return ctx.$get().cipherSuite; }, $set(v) { const obj = ctx.$get(); obj.cipherSuite = v; ctx.$set(obj); } };
23539 $t1_2 = $t0_1.$get();
23540 $t2_3 = ratchetTree$numLeaves(tree);
23541 $t3_4 = ratchetTree$computeRootTreeHash(tree, $t1_2);
23542 $t4_5 = $t3_4[0];
23543 $t5_6 = $t3_4[1];
23544 $t6_7 = ($t5_6 !== null);
23545 if ($t6_7) {
23546 $block = 1; break;
23547 }
23548 else {
23549 $block = 2; break;
23550 }
23551 break;
23552 }
23553 case 1: {
23554 return $t5_6;
23555 break;
23556 }
23557 case 2: {
23558 $t7_8 = { $get() { return ctx.$get().treeHash; }, $set(v) { const obj = ctx.$get(); obj.treeHash = v; ctx.$set(obj); } };
23559 $t8_9 = $t7_8.$get();
23560 $t9_10 = bytesEqual($t4_5, $t8_9);
23561 if ($t9_10) {
23562 $block = 4; break;
23563 }
23564 else {
23565 $block = 3; break;
23566 }
23567 break;
23568 }
23569 case 3: {
23570 $t10_11 = errors.New('mls: tree hash verification failed');
23571 return $t10_11;
23572 break;
23573 }
23574 case 4: {
23575 $t11_12 = ratchetTree$verifyParentHashes(tree, $t1_2);
23576 if ($t11_12) {
23577 $block = 6; break;
23578 }
23579 else {
23580 $block = 5; break;
23581 }
23582 break;
23583 }
23584 case 5: {
23585 $t12_13 = errors.New('mls: parent hash verification failed');
23586 return $t12_13;
23587 break;
23588 }
23589 case 6: {
23590 $t13_14 = ratchetTree$supportedCreds(tree);
23591 $t14_15 = $rt.builtin.makeMap('string');
23592 $t15_16 = $rt.builtin.makeMap('string');
23593 $t16_17 = 0;
23594 $block = 7; break;
23595 break;
23596 }
23597 case 7: {
23598 $t17_18 = $t2_3;
23599 $t18_19 = ($t16_17 < $t17_18);
23600 if ($t18_19) {
23601 $block = 8; break;
23602 }
23603 else {
23604 $block = 10; break;
23605 }
23606 break;
23607 }
23608 case 8: {
23609 $t19_20 = ratchetTree$getLeaf(tree, $t16_17);
23610 $t20_21 = ($t19_20 === null);
23611 if ($t20_21) {
23612 $block = 9; break;
23613 }
23614 else {
23615 $block = 11; break;
23616 }
23617 break;
23618 }
23619 case 9: {
23620 $t21_22 = (($t16_17 + 1) >>> 0);
23621 $t16_17 = $t21_22;
23622 $block = 7; break;
23623 break;
23624 }
23625 case 10: {
23626 $t22_23 = $rt.builtin.len(tree);
23627 $t39_40 = -1;
23628 $block = 14; break;
23629 break;
23630 }
23631 case 11: {
23632 $t23_24 = { $value: { cipherSuite: 0, groupID: null, leafIndex: 0, supportedCreds: null, signatureKeys: null, encryptionKeys: null, nowUnix: 0n }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
23633 $t24_25 = { $get() { return $t23_24.$get().cipherSuite; }, $set(v) { const obj = $t23_24.$get(); obj.cipherSuite = v; $t23_24.$set(obj); } };
23634 $t25_26 = { $get() { return $t23_24.$get().groupID; }, $set(v) { const obj = $t23_24.$get(); obj.groupID = v; $t23_24.$set(obj); } };
23635 $t26_27 = { $get() { return ctx.$get().groupID; }, $set(v) { const obj = ctx.$get(); obj.groupID = v; ctx.$set(obj); } };
23636 $t27_28 = $t26_27.$get();
23637 $t28_29 = { $get() { return $t23_24.$get().leafIndex; }, $set(v) { const obj = $t23_24.$get(); obj.leafIndex = v; $t23_24.$set(obj); } };
23638 $t29_30 = { $get() { return $t23_24.$get().supportedCreds; }, $set(v) { const obj = $t23_24.$get(); obj.supportedCreds = v; $t23_24.$set(obj); } };
23639 $t30_31 = { $get() { return $t23_24.$get().signatureKeys; }, $set(v) { const obj = $t23_24.$get(); obj.signatureKeys = v; $t23_24.$set(obj); } };
23640 $t31_32 = { $get() { return $t23_24.$get().encryptionKeys; }, $set(v) { const obj = $t23_24.$get(); obj.encryptionKeys = v; $t23_24.$set(obj); } };
23641 $t32_33 = { $get() { return $t23_24.$get().nowUnix; }, $set(v) { const obj = $t23_24.$get(); obj.nowUnix = v; $t23_24.$set(obj); } };
23642 $t24_25.$set($t1_2);
23643 $t25_26.$set($t27_28);
23644 $t28_29.$set($t16_17);
23645 $t29_30.$set($t13_14);
23646 $t30_31.$set($t14_15);
23647 $t31_32.$set($t15_16);
23648 $t32_33.$set(nowUnix);
23649 $t33_34 = leafNode$verify($t19_20, $t23_24);
23650 $t34_35 = ($t33_34 !== null);
23651 if ($t34_35) {
23652 $block = 12; break;
23653 }
23654 else {
23655 $block = 13; break;
23656 }
23657 break;
23658 }
23659 case 12: {
23660 return $t33_34;
23661 break;
23662 }
23663 case 13: {
23664 $t35_36 = { $get() { return $t19_20.$get().signatureKey; }, $set(v) { const obj = $t19_20.$get(); obj.signatureKey = v; $t19_20.$set(obj); } };
23665 $t36_37 = $t35_36.$get();
23666 $rt.builtin.mapUpdate($t14_15, $t36_37, true);
23667 $t37_38 = { $get() { return $t19_20.$get().encryptionKey; }, $set(v) { const obj = $t19_20.$get(); obj.encryptionKey = v; $t19_20.$set(obj); } };
23668 $t38_39 = $t37_38.$get();
23669 $rt.builtin.mapUpdate($t15_16, $t38_39, true);
23670 $block = 9; break;
23671 break;
23672 }
23673 case 14: {
23674 $t40_41 = ($t39_40 + 1);
23675 $t41_42 = ($t40_41 < $t22_23);
23676 if ($t41_42) {
23677 $block = 15; break;
23678 }
23679 else {
23680 $block = 16; break;
23681 }
23682 break;
23683 }
23684 case 15: {
23685 $t42_43 = tree.addr($t40_41);
23686 $t43_44 = $t42_43.$get();
23687 $t44_45 = ($t43_44 === null);
23688 if ($t44_45) {
23689 $t39_40 = $t40_41;
23690 $block = 14; break;
23691 }
23692 else {
23693 $block = 18; break;
23694 }
23695 break;
23696 }
23697 case 16: {
23698 return null;
23699 break;
23700 }
23701 case 17: {
23702 $t45_46 = ($t40_41 >>> 0);
23703 $t46_47 = { $get() { return $t43_44.$get().parentNode; }, $set(v) { const obj = $t43_44.$get(); obj.parentNode = v; $t43_44.$set(obj); } };
23704 $t47_48 = $t46_47.$get();
23705 $t48_49 = { $get() { return $t47_48.$get().unmergedLeaves; }, $set(v) { const obj = $t47_48.$get(); obj.unmergedLeaves = v; $t47_48.$set(obj); } };
23706 $t49_50 = $t48_49.$get();
23707 $t50_51 = $rt.builtin.len($t49_50);
23708 $t54_55 = -1;
23709 $block = 19; break;
23710 break;
23711 }
23712 case 18: {
23713 $t51_52 = { $get() { return $t43_44.$get().nodeType; }, $set(v) { const obj = $t43_44.$get(); obj.nodeType = v; $t43_44.$set(obj); } };
23714 $t52_53 = $t51_52.$get();
23715 $t53_54 = ($t52_53 !== 2);
23716 if ($t53_54) {
23717 $t39_40 = $t40_41;
23718 $block = 14; break;
23719 }
23720 else {
23721 $block = 17; break;
23722 }
23723 break;
23724 }
23725 case 19: {
23726 $t55_56 = ($t54_55 + 1);
23727 $t56_57 = ($t55_56 < $t50_51);
23728 if ($t56_57) {
23729 $block = 20; break;
23730 }
23731 else {
23732 $block = 21; break;
23733 }
23734 break;
23735 }
23736 case 20: {
23737 $t57_58 = $t49_50.addr($t55_56);
23738 $t58_59 = $t57_58.$get();
23739 $t59_60 = leafIndex$nodeIndex($t58_59);
23740 $t65_66 = $t59_60;
23741 $block = 22; break;
23742 break;
23743 }
23744 case 21: {
23745 $t60_61 = { $get() { return $t43_44.$get().parentNode; }, $set(v) { const obj = $t43_44.$get(); obj.parentNode = v; $t43_44.$set(obj); } };
23746 $t61_62 = $t60_61.$get();
23747 $t62_63 = { $get() { return $t61_62.$get().encryptionKey; }, $set(v) { const obj = $t61_62.$get(); obj.encryptionKey = v; $t61_62.$set(obj); } };
23748 $t63_64 = $t62_63.$get();
23749 $t64_65 = $rt.builtin.mapLookup($t15_16, $t63_64).value;
23750 if ($t64_65) {
23751 $block = 28; break;
23752 }
23753 else {
23754 $block = 29; break;
23755 }
23756 break;
23757 }
23758 case 22: {
23759 $t66_67 = numLeaves$parent($t2_3, $t65_66);
23760 $t67_68 = $t66_67[0];
23761 $t68_69 = $t66_67[1];
23762 if ($t68_69) {
23763 $block = 24; break;
23764 }
23765 else {
23766 $block = 23; break;
23767 }
23768 break;
23769 }
23770 case 23: {
23771 $t69_70 = errors.New('mls: unmerged leaf not descendant of parent');
23772 return $t69_70;
23773 break;
23774 }
23775 case 24: {
23776 $t70_71 = ($t67_68 === $t45_46);
23777 if ($t70_71) {
23778 $t54_55 = $t55_56;
23779 $block = 19; break;
23780 }
23781 else {
23782 $block = 25; break;
23783 }
23784 break;
23785 }
23786 case 25: {
23787 $t71_72 = ratchetTree$get(tree, $t67_68);
23788 $t72_73 = ($t71_72 !== null);
23789 if ($t72_73) {
23790 $block = 27; break;
23791 }
23792 else {
23793 $t65_66 = $t67_68;
23794 $block = 22; break;
23795 }
23796 break;
23797 }
23798 case 26: {
23799 $t73_74 = errors.New('mls: intermediate node missing unmerged leaf');
23800 return $t73_74;
23801 break;
23802 }
23803 case 27: {
23804 $t74_75 = { $get() { return $t71_72.$get().parentNode; }, $set(v) { const obj = $t71_72.$get(); obj.parentNode = v; $t71_72.$set(obj); } };
23805 $t75_76 = $t74_75.$get();
23806 $t76_77 = hasUnmergedLeaf($t75_76, $t58_59);
23807 if ($t76_77) {
23808 $t65_66 = $t67_68;
23809 $block = 22; break;
23810 }
23811 else {
23812 $block = 26; break;
23813 }
23814 break;
23815 }
23816 case 28: {
23817 $t77_78 = errors.New('mls: duplicate encryption key in tree');
23818 return $t77_78;
23819 break;
23820 }
23821 case 29: {
23822 $t78_79 = { $get() { return $t43_44.$get().parentNode; }, $set(v) { const obj = $t43_44.$get(); obj.parentNode = v; $t43_44.$set(obj); } };
23823 $t79_80 = $t78_79.$get();
23824 $t80_81 = { $get() { return $t79_80.$get().encryptionKey; }, $set(v) { const obj = $t79_80.$get(); obj.encryptionKey = v; $t79_80.$set(obj); } };
23825 $t81_82 = $t80_81.$get();
23826 $rt.builtin.mapUpdate($t15_16, $t81_82, true);
23827 $t39_40 = $t40_41;
23828 $block = 14; break;
23829 break;
23830 }
23831 }
23832 }
23833 }
23834
23835 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('verifyIntegrity', ratchetTree$verifyIntegrity);
23836 export function ratchetTree$verifyParentHashes(tree, cs) {
23837 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45;
23838 let $block = 0;
23839 while (true) {
23840 switch ($block) {
23841 case 0: {
23842 $t0_1 = ratchetTree$numLeaves(tree);
23843 $t1_2 = $rt.builtin.len(tree);
23844 $t2_3 = -1;
23845 $block = 1; break;
23846 break;
23847 }
23848 case 1: {
23849 $t3_4 = ($t2_3 + 1);
23850 $t4_5 = ($t3_4 < $t1_2);
23851 if ($t4_5) {
23852 $block = 2; break;
23853 }
23854 else {
23855 $block = 3; break;
23856 }
23857 break;
23858 }
23859 case 2: {
23860 $t5_6 = tree.addr($t3_4);
23861 $t6_7 = $t5_6.$get();
23862 $t7_8 = ($t6_7 === null);
23863 if ($t7_8) {
23864 $t2_3 = $t3_4;
23865 $block = 1; break;
23866 }
23867 else {
23868 $block = 4; break;
23869 }
23870 break;
23871 }
23872 case 3: {
23873 return true;
23874 break;
23875 }
23876 case 4: {
23877 $t8_9 = ($t3_4 >>> 0);
23878 $t9_10 = nodeIndex$children($t8_9);
23879 $t10_11 = $t9_10[0];
23880 $t11_12 = $t9_10[1];
23881 $t12_13 = $t9_10[2];
23882 if ($t12_13) {
23883 $block = 5; break;
23884 }
23885 else {
23886 $t2_3 = $t3_4;
23887 $block = 1; break;
23888 }
23889 break;
23890 }
23891 case 5: {
23892 $t13_14 = { $get() { return $t6_7.$get().parentNode; }, $set(v) { const obj = $t6_7.$get(); obj.parentNode = v; $t6_7.$set(obj); } };
23893 $t14_15 = $t13_14.$get();
23894 $t15_16 = $rt.builtin.makeMap('int');
23895 $t16_17 = { $get() { return $t14_15.$get().unmergedLeaves; }, $set(v) { const obj = $t14_15.$get(); obj.unmergedLeaves = v; $t14_15.$set(obj); } };
23896 $t17_18 = $t16_17.$get();
23897 $t18_19 = $rt.builtin.len($t17_18);
23898 $t19_20 = -1;
23899 $block = 6; break;
23900 break;
23901 }
23902 case 6: {
23903 $t20_21 = ($t19_20 + 1);
23904 $t21_22 = ($t20_21 < $t18_19);
23905 if ($t21_22) {
23906 $block = 7; break;
23907 }
23908 else {
23909 $block = 8; break;
23910 }
23911 break;
23912 }
23913 case 7: {
23914 $t22_23 = $t17_18.addr($t20_21);
23915 $t23_24 = $t22_23.$get();
23916 $rt.builtin.mapUpdate($t15_16, $t23_24, true);
23917 $t19_20 = $t20_21;
23918 $block = 6; break;
23919 break;
23920 }
23921 case 8: {
23922 $t24_25 = ratchetTree$computeTreeHash(tree, cs, $t10_11, $t0_1, $t15_16);
23923 $t25_26 = $t24_25[0];
23924 $t26_27 = $t24_25[1];
23925 $t27_28 = ($t26_27 !== null);
23926 if ($t27_28) {
23927 $block = 9; break;
23928 }
23929 else {
23930 $block = 10; break;
23931 }
23932 break;
23933 }
23934 case 9: {
23935 return false;
23936 break;
23937 }
23938 case 10: {
23939 $t28_29 = ratchetTree$computeTreeHash(tree, cs, $t11_12, $t0_1, $t15_16);
23940 $t29_30 = $t28_29[0];
23941 $t30_31 = $t28_29[1];
23942 $t31_32 = ($t30_31 !== null);
23943 if ($t31_32) {
23944 $block = 11; break;
23945 }
23946 else {
23947 $block = 12; break;
23948 }
23949 break;
23950 }
23951 case 11: {
23952 return false;
23953 break;
23954 }
23955 case 12: {
23956 $t32_33 = parentNode$computeParentHash($t14_15, cs, $t29_30);
23957 $t33_34 = $t32_33[0];
23958 $t34_35 = $t32_33[1];
23959 $t35_36 = ($t34_35 !== null);
23960 if ($t35_36) {
23961 $block = 13; break;
23962 }
23963 else {
23964 $block = 14; break;
23965 }
23966 break;
23967 }
23968 case 13: {
23969 return false;
23970 break;
23971 }
23972 case 14: {
23973 $t36_37 = parentNode$computeParentHash($t14_15, cs, $t25_26);
23974 $t37_38 = $t36_37[0];
23975 $t38_39 = $t36_37[1];
23976 $t39_40 = ($t38_39 !== null);
23977 if ($t39_40) {
23978 $block = 15; break;
23979 }
23980 else {
23981 $block = 16; break;
23982 }
23983 break;
23984 }
23985 case 15: {
23986 return false;
23987 break;
23988 }
23989 case 16: {
23990 $t40_41 = ratchetTree$resolve(tree, $t10_11);
23991 $t41_42 = ratchetTree$findParentHash(tree, $t40_41, $t33_34);
23992 $t42_43 = ratchetTree$resolve(tree, $t11_12);
23993 $t43_44 = ratchetTree$findParentHash(tree, $t42_43, $t37_38);
23994 $t44_45 = ($t41_42 === $t43_44);
23995 if ($t44_45) {
23996 $block = 17; break;
23997 }
23998 else {
23999 $t2_3 = $t3_4;
24000 $block = 1; break;
24001 }
24002 break;
24003 }
24004 case 17: {
24005 return false;
24006 break;
24007 }
24008 }
24009 }
24010 }
24011
24012 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('verifyParentHashes', ratchetTree$verifyParentHashes);
24013 export function ratchetTree$add(tree, ln) {
24014 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49;
24015 let $block = 0;
24016 while (true) {
24017 switch ($block) {
24018 case 0: {
24019 $t0_1 = 0;
24020 $block = 1; break;
24021 break;
24022 }
24023 case 1: {
24024 $t1_2 = leafIndex$nodeIndex($t0_1);
24025 $t2_3 = $t1_2;
24026 $t3_4 = tree.$get();
24027 $t4_5 = $rt.builtin.len($t3_4);
24028 $t5_6 = ($t2_3 >= $t4_5);
24029 if ($t5_6) {
24030 $t6_7 = false;
24031 $block = 2; break;
24032 }
24033 else {
24034 $block = 3; break;
24035 }
24036 break;
24037 }
24038 case 2: {
24039 if ($t6_7) {
24040 $block = 7; break;
24041 }
24042 else {
24043 $block = 6; break;
24044 }
24045 break;
24046 }
24047 case 3: {
24048 $t7_8 = tree.$get();
24049 $t8_9 = ratchetTree$get($t7_8, $t1_2);
24050 $t9_10 = ($t8_9 === null);
24051 if ($t9_10) {
24052 $block = 4; break;
24053 }
24054 else {
24055 $block = 5; break;
24056 }
24057 break;
24058 }
24059 case 4: {
24060 $t6_7 = true;
24061 $block = 2; break;
24062 break;
24063 }
24064 case 5: {
24065 $t10_11 = (($t0_1 + 1) >>> 0);
24066 $t0_1 = $t10_11;
24067 $block = 1; break;
24068 break;
24069 }
24070 case 6: {
24071 $t11_12 = tree.$get();
24072 $t12_13 = $rt.builtin.len($t11_12);
24073 $t13_14 = ($t12_13 + 1);
24074 $t14_15 = ($t13_14 * 2);
24075 $t15_16 = ($t14_15 - 1);
24076 $block = 9; break;
24077 break;
24078 }
24079 case 7: {
24080 $t16_17 = tree.$get();
24081 $t17_18 = ratchetTree$numLeaves($t16_17);
24082 $t26_27 = $t1_2;
24083 $block = 10; break;
24084 break;
24085 }
24086 case 8: {
24087 $t18_19 = tree.$get();
24088 $t19_20 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24089 $t20_21 = $t19_20.$get().addr(0);
24090 $t20_21.$set(null);
24091 $t21_22 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
24092 $t22_23 = $rt.builtin.appendSlice($t18_19, $t21_22);
24093 tree.$set($t22_23);
24094 $block = 9; break;
24095 break;
24096 }
24097 case 9: {
24098 $t23_24 = tree.$get();
24099 $t24_25 = $rt.builtin.len($t23_24);
24100 $t25_26 = ($t24_25 < $t15_16);
24101 if ($t25_26) {
24102 $block = 8; break;
24103 }
24104 else {
24105 $block = 7; break;
24106 }
24107 break;
24108 }
24109 case 10: {
24110 $t27_28 = numLeaves$parent($t17_18, $t26_27);
24111 $t28_29 = $t27_28[0];
24112 $t29_30 = $t27_28[1];
24113 if ($t29_30) {
24114 $block = 12; break;
24115 }
24116 else {
24117 $block = 11; break;
24118 }
24119 break;
24120 }
24121 case 11: {
24122 $t30_31 = tree.$get();
24123 $t31_32 = { $value: { nodeType: 0, leafNode: null, parentNode: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24124 $t32_33 = { $get() { return $t31_32.$get().nodeType; }, $set(v) { const obj = $t31_32.$get(); obj.nodeType = v; $t31_32.$set(obj); } };
24125 $t33_34 = { $get() { return $t31_32.$get().leafNode; }, $set(v) { const obj = $t31_32.$get(); obj.leafNode = v; $t31_32.$set(obj); } };
24126 $t32_33.$set(1);
24127 $t33_34.$set(ln);
24128 $t34_35 = ratchetTree$set($t30_31, $t1_2, $t31_32);
24129 return;
24130 break;
24131 }
24132 case 12: {
24133 $t35_36 = tree.$get();
24134 $t36_37 = ratchetTree$get($t35_36, $t28_29);
24135 $t37_38 = ($t36_37 !== null);
24136 if ($t37_38) {
24137 $block = 13; break;
24138 }
24139 else {
24140 $t26_27 = $t28_29;
24141 $block = 10; break;
24142 }
24143 break;
24144 }
24145 case 13: {
24146 $t38_39 = { $get() { return $t36_37.$get().parentNode; }, $set(v) { const obj = $t36_37.$get(); obj.parentNode = v; $t36_37.$set(obj); } };
24147 $t39_40 = $t38_39.$get();
24148 $t40_41 = { $get() { return $t36_37.$get().parentNode; }, $set(v) { const obj = $t36_37.$get(); obj.parentNode = v; $t36_37.$set(obj); } };
24149 $t41_42 = $t40_41.$get();
24150 $t42_43 = { $get() { return $t41_42.$get().unmergedLeaves; }, $set(v) { const obj = $t41_42.$get(); obj.unmergedLeaves = v; $t41_42.$set(obj); } };
24151 $t43_44 = $t42_43.$get();
24152 $t44_45 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24153 $t45_46 = $t44_45.$get().addr(0);
24154 $t45_46.$set($t0_1);
24155 $t46_47 = $rt.builtin.sliceSlice($t44_45.$get(), undefined, undefined, undefined);
24156 $t47_48 = $rt.builtin.appendSlice($t43_44, $t46_47);
24157 $t48_49 = { $get() { return $t39_40.$get().unmergedLeaves; }, $set(v) { const obj = $t39_40.$get(); obj.unmergedLeaves = v; $t39_40.$set(obj); } };
24158 $t48_49.$set($t47_48);
24159 $t26_27 = $t28_29;
24160 $block = 10; break;
24161 break;
24162 }
24163 }
24164 }
24165 }
24166
24167 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('add', ratchetTree$add);
24168 export function ratchetTree$apply(tree, proposals, senders) {
24169 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47;
24170 let $block = 0;
24171 while (true) {
24172 switch ($block) {
24173 case 0: {
24174 $t0_1 = $rt.builtin.len(proposals);
24175 $t1_2 = -1;
24176 $block = 1; break;
24177 break;
24178 }
24179 case 1: {
24180 $t2_3 = ($t1_2 + 1);
24181 $t3_4 = ($t2_3 < $t0_1);
24182 if ($t3_4) {
24183 $block = 2; break;
24184 }
24185 else {
24186 $block = 3; break;
24187 }
24188 break;
24189 }
24190 case 2: {
24191 $t4_5 = proposals.addr($t2_3);
24192 $t5_6 = $t4_5.$get();
24193 $t6_7 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24194 $t6_7.$set($rt.builtin.cloneValue($t5_6));
24195 $t7_8 = { $get() { return $t6_7.$get().proposalType; }, $set(v) { const obj = $t6_7.$get(); obj.proposalType = v; $t6_7.$set(obj); } };
24196 $t8_9 = $t7_8.$get();
24197 $t9_10 = ($t8_9 === 2);
24198 if ($t9_10) {
24199 $block = 4; break;
24200 }
24201 else {
24202 $t1_2 = $t2_3;
24203 $block = 1; break;
24204 }
24205 break;
24206 }
24207 case 3: {
24208 $t10_11 = $rt.builtin.len(proposals);
24209 $t18_19 = -1;
24210 $block = 5; break;
24211 break;
24212 }
24213 case 4: {
24214 $t11_12 = tree.$get();
24215 $t12_13 = senders.addr($t2_3);
24216 $t13_14 = $t12_13.$get();
24217 $t14_15 = { $get() { return $t6_7.$get().update; }, $set(v) { const obj = $t6_7.$get(); obj.update = v; $t6_7.$set(obj); } };
24218 $t15_16 = $t14_15.$get();
24219 $t16_17 = { $get() { return $t15_16.$get().leafNode; }, $set(v) { const obj = $t15_16.$get(); obj.leafNode = v; $t15_16.$set(obj); } };
24220 $t17_18 = ratchetTree$update($t11_12, $t13_14, $t16_17);
24221 $t1_2 = $t2_3;
24222 $block = 1; break;
24223 break;
24224 }
24225 case 5: {
24226 $t19_20 = ($t18_19 + 1);
24227 $t20_21 = ($t19_20 < $t10_11);
24228 if ($t20_21) {
24229 $block = 6; break;
24230 }
24231 else {
24232 $block = 7; break;
24233 }
24234 break;
24235 }
24236 case 6: {
24237 $t21_22 = proposals.addr($t19_20);
24238 $t22_23 = $t21_22.$get();
24239 $t23_24 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24240 $t23_24.$set($rt.builtin.cloneValue($t22_23));
24241 $t24_25 = { $get() { return $t23_24.$get().proposalType; }, $set(v) { const obj = $t23_24.$get(); obj.proposalType = v; $t23_24.$set(obj); } };
24242 $t25_26 = $t24_25.$get();
24243 $t26_27 = ($t25_26 === 3);
24244 if ($t26_27) {
24245 $block = 8; break;
24246 }
24247 else {
24248 $t18_19 = $t19_20;
24249 $block = 5; break;
24250 }
24251 break;
24252 }
24253 case 7: {
24254 $t27_28 = $rt.builtin.len(proposals);
24255 $t33_34 = -1;
24256 $block = 9; break;
24257 break;
24258 }
24259 case 8: {
24260 $t28_29 = { $get() { return $t23_24.$get().remove; }, $set(v) { const obj = $t23_24.$get(); obj.remove = v; $t23_24.$set(obj); } };
24261 $t29_30 = $t28_29.$get();
24262 $t30_31 = { $get() { return $t29_30.$get().removed; }, $set(v) { const obj = $t29_30.$get(); obj.removed = v; $t29_30.$set(obj); } };
24263 $t31_32 = $t30_31.$get();
24264 $t32_33 = ratchetTree$remove(tree, $t31_32);
24265 $t18_19 = $t19_20;
24266 $block = 5; break;
24267 break;
24268 }
24269 case 9: {
24270 $t34_35 = ($t33_34 + 1);
24271 $t35_36 = ($t34_35 < $t27_28);
24272 if ($t35_36) {
24273 $block = 10; break;
24274 }
24275 else {
24276 $block = 11; break;
24277 }
24278 break;
24279 }
24280 case 10: {
24281 $t36_37 = proposals.addr($t34_35);
24282 $t37_38 = $t36_37.$get();
24283 $t38_39 = { $value: { proposalType: 0, add: null, update: null, remove: null, preSharedKey: null, reInit: null, externalInit: null, groupContextExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24284 $t38_39.$set($rt.builtin.cloneValue($t37_38));
24285 $t39_40 = { $get() { return $t38_39.$get().proposalType; }, $set(v) { const obj = $t38_39.$get(); obj.proposalType = v; $t38_39.$set(obj); } };
24286 $t40_41 = $t39_40.$get();
24287 $t41_42 = ($t40_41 === 1);
24288 if ($t41_42) {
24289 $block = 12; break;
24290 }
24291 else {
24292 $t33_34 = $t34_35;
24293 $block = 9; break;
24294 }
24295 break;
24296 }
24297 case 11: {
24298 return;
24299 break;
24300 }
24301 case 12: {
24302 $t42_43 = { $get() { return $t38_39.$get().add; }, $set(v) { const obj = $t38_39.$get(); obj.add = v; $t38_39.$set(obj); } };
24303 $t43_44 = $t42_43.$get();
24304 $t44_45 = { $get() { return $t43_44.$get().keyPackage; }, $set(v) { const obj = $t43_44.$get(); obj.keyPackage = v; $t43_44.$set(obj); } };
24305 $t45_46 = { $get() { return $t44_45.$get().leafNode; }, $set(v) { const obj = $t44_45.$get(); obj.leafNode = v; $t44_45.$set(obj); } };
24306 $t46_47 = ratchetTree$add(tree, $t45_46);
24307 $t33_34 = $t34_35;
24308 $block = 9; break;
24309 break;
24310 }
24311 }
24312 }
24313 }
24314
24315 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('apply', ratchetTree$apply);
24316 export function ratchetTree$remove(tree, li) {
24317 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33;
24318 let $block = 0;
24319 while (true) {
24320 switch ($block) {
24321 case 0: {
24322 $t0_1 = leafIndex$nodeIndex(li);
24323 $t1_2 = tree.$get();
24324 $t2_3 = ratchetTree$numLeaves($t1_2);
24325 $t3_4 = $t0_1;
24326 $block = 1; break;
24327 break;
24328 }
24329 case 1: {
24330 $t4_5 = tree.$get();
24331 $t5_6 = ratchetTree$set($t4_5, $t3_4, null);
24332 $t6_7 = numLeaves$parent($t2_3, $t3_4);
24333 $t7_8 = $t6_7[0];
24334 $t8_9 = $t6_7[1];
24335 if ($t8_9) {
24336 $t3_4 = $t7_8;
24337 $block = 1; break;
24338 }
24339 else {
24340 $block = 2; break;
24341 }
24342 break;
24343 }
24344 case 2: {
24345 $t9_10 = (($t2_3 - 1) >>> 0);
24346 $t10_11 = $t9_10;
24347 $t11_12 = tree.$get();
24348 $t12_13 = $rt.builtin.len($t11_12);
24349 $t13_14 = ($t12_13 + 1);
24350 $t14_15 = $t10_11;
24351 $t15_16 = $t13_14;
24352 $block = 3; break;
24353 break;
24354 }
24355 case 3: {
24356 $t16_17 = leafIndex$nodeIndex($t14_15);
24357 $t17_18 = tree.$get();
24358 $t18_19 = ratchetTree$get($t17_18, $t16_17);
24359 $t19_20 = ($t18_19 !== null);
24360 if ($t19_20) {
24361 $block = 4; break;
24362 }
24363 else {
24364 $block = 5; break;
24365 }
24366 break;
24367 }
24368 case 4: {
24369 $t20_21 = tree.$get();
24370 $t21_22 = $rt.builtin.len($t20_21);
24371 $t22_23 = ($t21_22 + 1);
24372 $t23_24 = ($t15_16 < $t22_23);
24373 if ($t23_24) {
24374 $block = 10; break;
24375 }
24376 else {
24377 $block = 11; break;
24378 }
24379 break;
24380 }
24381 case 5: {
24382 $t24_25 = $t16_17;
24383 $t25_26 = isPowerOf2($t24_25);
24384 if ($t25_26) {
24385 $block = 6; break;
24386 }
24387 else {
24388 $t27_28 = $t15_16;
24389 $block = 7; break;
24390 }
24391 break;
24392 }
24393 case 6: {
24394 $t26_27 = $t16_17;
24395 $t27_28 = $t26_27;
24396 $block = 7; break;
24397 break;
24398 }
24399 case 7: {
24400 $t28_29 = ($t14_15 === 0);
24401 if ($t28_29) {
24402 $block = 8; break;
24403 }
24404 else {
24405 $block = 9; break;
24406 }
24407 break;
24408 }
24409 case 8: {
24410 tree.$set(null);
24411 return;
24412 break;
24413 }
24414 case 9: {
24415 $t29_30 = (($t14_15 - 1) >>> 0);
24416 $t14_15 = $t29_30;
24417 $t15_16 = $t27_28;
24418 $block = 3; break;
24419 break;
24420 }
24421 case 10: {
24422 $t30_31 = tree.$get();
24423 $t31_32 = ($t15_16 - 1);
24424 $t32_33 = $rt.builtin.sliceSlice($t30_31, undefined, $t31_32, undefined);
24425 tree.$set($t32_33);
24426 $block = 11; break;
24427 break;
24428 }
24429 case 11: {
24430 return;
24431 break;
24432 }
24433 }
24434 }
24435 }
24436
24437 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('remove', ratchetTree$remove);
24438 export function ratchetTree$unmarshal(tree, r) {
24439 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20;
24440 let $block = 0;
24441 while (true) {
24442 switch ($block) {
24443 case 0: {
24444 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24445 $t0_1.$set(tree);
24446 $t1_2 = $t0_1.$get();
24447 $t2_3 = { $value: $rt.builtin.makeSlice(0, 0, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24448 $t3_4 = $rt.builtin.sliceSlice($t2_3.$get(), undefined, undefined, undefined);
24449 $t1_2.$set($t3_4);
24450 $t4_5 = ratchetTree$unmarshal$1.bind(null, $t0_1);
24451 $t5_6 = Reader$readVector(r, $t4_5);
24452 $t6_7 = ($t5_6 !== null);
24453 if ($t6_7) {
24454 $block = 1; break;
24455 }
24456 else {
24457 $block = 4; break;
24458 }
24459 break;
24460 }
24461 case 1: {
24462 return $t5_6;
24463 break;
24464 }
24465 case 2: {
24466 $t7_8 = $t0_1.$get();
24467 $t8_9 = $t0_1.$get();
24468 $t9_10 = $t8_9.$get();
24469 $t10_11 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24470 $t11_12 = $t10_11.$get().addr(0);
24471 $t11_12.$set(null);
24472 $t12_13 = $rt.builtin.sliceSlice($t10_11.$get(), undefined, undefined, undefined);
24473 $t13_14 = $rt.builtin.appendSlice($t9_10, $t12_13);
24474 $t7_8.$set($t13_14);
24475 $block = 4; break;
24476 break;
24477 }
24478 case 3: {
24479 return null;
24480 break;
24481 }
24482 case 4: {
24483 $t14_15 = $t0_1.$get();
24484 $t15_16 = $t14_15.$get();
24485 $t16_17 = $rt.builtin.len($t15_16);
24486 $t17_18 = ($t16_17 + 1);
24487 $t18_19 = $t17_18;
24488 $t19_20 = isPowerOf2($t18_19);
24489 if ($t19_20) {
24490 $block = 3; break;
24491 }
24492 else {
24493 $block = 2; break;
24494 }
24495 break;
24496 }
24497 }
24498 }
24499 }
24500
24501 function ratchetTree$unmarshal$1(tree, r) {
24502 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
24503 let $block = 0;
24504 while (true) {
24505 switch ($block) {
24506 case 0: {
24507 $t0_1 = Reader$readOptional(r);
24508 $t1_2 = $t0_1[0];
24509 $t2_3 = $t0_1[1];
24510 if ($t2_3) {
24511 $block = 2; break;
24512 }
24513 else {
24514 $block = 1; break;
24515 }
24516 break;
24517 }
24518 case 1: {
24519 $t3_4 = errUnexpectedEOF.$get();
24520 return $t3_4;
24521 break;
24522 }
24523 case 2: {
24524 if ($t1_2) {
24525 $block = 3; break;
24526 }
24527 else {
24528 $block = 5; break;
24529 }
24530 break;
24531 }
24532 case 3: {
24533 $t4_5 = { $value: { nodeType: 0, leafNode: null, parentNode: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
24534 $t5_6 = node$unmarshal($t4_5, r);
24535 $t6_7 = ($t5_6 !== null);
24536 if ($t6_7) {
24537 $block = 6; break;
24538 }
24539 else {
24540 $block = 7; break;
24541 }
24542 break;
24543 }
24544 case 4: {
24545 return null;
24546 break;
24547 }
24548 case 5: {
24549 $t7_8 = tree.$get();
24550 $t8_9 = tree.$get();
24551 $t9_10 = $t8_9.$get();
24552 $t10_11 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24553 $t11_12 = $t10_11.$get().addr(0);
24554 $t11_12.$set(null);
24555 $t12_13 = $rt.builtin.sliceSlice($t10_11.$get(), undefined, undefined, undefined);
24556 $t13_14 = $rt.builtin.appendSlice($t9_10, $t12_13);
24557 $t7_8.$set($t13_14);
24558 $block = 4; break;
24559 break;
24560 }
24561 case 6: {
24562 return $t5_6;
24563 break;
24564 }
24565 case 7: {
24566 $t14_15 = tree.$get();
24567 $t15_16 = tree.$get();
24568 $t16_17 = $t15_16.$get();
24569 $t17_18 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24570 $t18_19 = $t17_18.$get().addr(0);
24571 $t18_19.$set($t4_5);
24572 $t19_20 = $rt.builtin.sliceSlice($t17_18.$get(), undefined, undefined, undefined);
24573 $t20_21 = $rt.builtin.appendSlice($t16_17, $t19_20);
24574 $t14_15.$set($t20_21);
24575 $block = 4; break;
24576 break;
24577 }
24578 }
24579 }
24580 }
24581
24582 $rt.types.getType('smesh.lol/web/common/mls.ratchetTree')?.methods?.set('unmarshal', ratchetTree$unmarshal);
24583 export function numLeaves$copath(n, x) {
24584 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25;
24585 let $block = 0;
24586 while (true) {
24587 switch ($block) {
24588 case 0: {
24589 $t0_1 = numLeaves$directPath(n, x);
24590 $t1_2 = $rt.builtin.len($t0_1);
24591 $t2_3 = ($t1_2 === 0);
24592 if ($t2_3) {
24593 $block = 1; break;
24594 }
24595 else {
24596 $block = 2; break;
24597 }
24598 break;
24599 }
24600 case 1: {
24601 return null;
24602 break;
24603 }
24604 case 2: {
24605 $t3_4 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24606 $t4_5 = $t3_4.$get().addr(0);
24607 $t4_5.$set(x);
24608 $t5_6 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
24609 $t6_7 = $rt.builtin.appendSlice($t5_6, $t0_1);
24610 $t7_8 = $rt.builtin.len($t6_7);
24611 $t8_9 = ($t7_8 - 1);
24612 $t9_10 = $rt.builtin.sliceSlice($t6_7, undefined, $t8_9, undefined);
24613 $t10_11 = $rt.builtin.len($t9_10);
24614 $t11_12 = null;
24615 $t12_13 = -1;
24616 $block = 3; break;
24617 break;
24618 }
24619 case 3: {
24620 $t13_14 = ($t12_13 + 1);
24621 $t14_15 = ($t13_14 < $t10_11);
24622 if ($t14_15) {
24623 $block = 4; break;
24624 }
24625 else {
24626 $block = 5; break;
24627 }
24628 break;
24629 }
24630 case 4: {
24631 $t15_16 = $t9_10.addr($t13_14);
24632 $t16_17 = $t15_16.$get();
24633 $t17_18 = numLeaves$sibling(n, $t16_17);
24634 $t18_19 = $t17_18[0];
24635 $t19_20 = $t17_18[1];
24636 if ($t19_20) {
24637 $block = 7; break;
24638 }
24639 else {
24640 $block = 6; break;
24641 }
24642 break;
24643 }
24644 case 5: {
24645 return $t11_12;
24646 break;
24647 }
24648 case 6: {
24649 $t20_21 = $rt.types.makeInterface('string', 'unreachable');
24650 $rt.runtime.panic($t20_21);
24651 break;
24652 }
24653 case 7: {
24654 $t21_22 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24655 $t22_23 = $t21_22.$get().addr(0);
24656 $t22_23.$set($t18_19);
24657 $t23_24 = $rt.builtin.sliceSlice($t21_22.$get(), undefined, undefined, undefined);
24658 $t24_25 = $rt.builtin.appendSlice($t11_12, $t23_24);
24659 $t11_12 = $t24_25;
24660 $t12_13 = $t13_14;
24661 $block = 3; break;
24662 break;
24663 }
24664 }
24665 }
24666 }
24667
24668 $rt.types.getType('smesh.lol/web/common/mls.numLeaves')?.methods?.set('copath', numLeaves$copath);
24669 export function numLeaves$directPath(n, x) {
24670 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
24671 let $block = 0;
24672 while (true) {
24673 switch ($block) {
24674 case 0: {
24675 $t0_1 = x;
24676 $t1_2 = null;
24677 $block = 1; break;
24678 break;
24679 }
24680 case 1: {
24681 $t2_3 = numLeaves$parent(n, $t0_1);
24682 $t3_4 = $t2_3[0];
24683 $t4_5 = $t2_3[1];
24684 if ($t4_5) {
24685 $block = 3; break;
24686 }
24687 else {
24688 $block = 2; break;
24689 }
24690 break;
24691 }
24692 case 2: {
24693 return $t1_2;
24694 break;
24695 }
24696 case 3: {
24697 $t5_6 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
24698 $t6_7 = $t5_6.$get().addr(0);
24699 $t6_7.$set($t3_4);
24700 $t7_8 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
24701 $t8_9 = $rt.builtin.appendSlice($t1_2, $t7_8);
24702 $t0_1 = $t3_4;
24703 $t1_2 = $t8_9;
24704 $block = 1; break;
24705 break;
24706 }
24707 }
24708 }
24709 }
24710
24711 $rt.types.getType('smesh.lol/web/common/mls.numLeaves')?.methods?.set('directPath', numLeaves$directPath);
24712 export function numLeaves$parent(n, x) {
24713 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12;
24714 let $block = 0;
24715 while (true) {
24716 switch ($block) {
24717 case 0: {
24718 $t0_1 = numLeaves$root(n);
24719 $t1_2 = (x === $t0_1);
24720 if ($t1_2) {
24721 $block = 1; break;
24722 }
24723 else {
24724 $block = 2; break;
24725 }
24726 break;
24727 }
24728 case 1: {
24729 return [0, false];
24730 break;
24731 }
24732 case 2: {
24733 $t2_3 = nodeIndex$level(x);
24734 $t3_4 = ($t2_3 >>> 0);
24735 $t4_5 = (($t3_4 + 1) >>> 0);
24736 $t5_6 = (x >>> $t4_5);
24737 $t6_7 = (($t5_6 & 1) >>> 0);
24738 $t7_8 = ((1 << $t3_4) >>> 0);
24739 $t8_9 = ((x + $t7_8) >>> 0);
24740 $t9_10 = (($t3_4 + 1) >>> 0);
24741 $t10_11 = (($t6_7 << $t9_10) >>> 0);
24742 $t11_12 = (($t8_9 ^ $t10_11) >>> 0);
24743 return [$t11_12, true];
24744 break;
24745 }
24746 }
24747 }
24748 }
24749
24750 $rt.types.getType('smesh.lol/web/common/mls.numLeaves')?.methods?.set('parent', numLeaves$parent);
24751 export function numLeaves$root(n) {
24752 let $t0_1, $t1_2, $t2_3, $t3_4;
24753 $t0_1 = numLeaves$width(n);
24754 $t1_2 = log2($t0_1);
24755 $t2_3 = ((1 << $t1_2) >>> 0);
24756 $t3_4 = (($t2_3 - 1) >>> 0);
24757 return $t3_4;
24758 }
24759
24760 $rt.types.getType('smesh.lol/web/common/mls.numLeaves')?.methods?.set('root', numLeaves$root);
24761 export function numLeaves$sibling(n, x) {
24762 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
24763 let $block = 0;
24764 while (true) {
24765 switch ($block) {
24766 case 0: {
24767 $t0_1 = numLeaves$parent(n, x);
24768 $t1_2 = $t0_1[0];
24769 $t2_3 = $t0_1[1];
24770 if ($t2_3) {
24771 $block = 2; break;
24772 }
24773 else {
24774 $block = 1; break;
24775 }
24776 break;
24777 }
24778 case 1: {
24779 return [0, false];
24780 break;
24781 }
24782 case 2: {
24783 $t3_4 = (x < $t1_2);
24784 if ($t3_4) {
24785 $block = 3; break;
24786 }
24787 else {
24788 $block = 4; break;
24789 }
24790 break;
24791 }
24792 case 3: {
24793 $t4_5 = nodeIndex$right($t1_2);
24794 $t5_6 = $t4_5[0];
24795 $t6_7 = $t4_5[1];
24796 return [$t5_6, $t6_7];
24797 break;
24798 }
24799 case 4: {
24800 $t7_8 = nodeIndex$left($t1_2);
24801 $t8_9 = $t7_8[0];
24802 $t9_10 = $t7_8[1];
24803 return [$t8_9, $t9_10];
24804 break;
24805 }
24806 }
24807 }
24808 }
24809
24810 $rt.types.getType('smesh.lol/web/common/mls.numLeaves')?.methods?.set('sibling', numLeaves$sibling);
24811 export function numLeaves$width(n) {
24812 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
24813 let $block = 0;
24814 while (true) {
24815 switch ($block) {
24816 case 0: {
24817 $t0_1 = (n === 0);
24818 if ($t0_1) {
24819 $block = 1; break;
24820 }
24821 else {
24822 $block = 2; break;
24823 }
24824 break;
24825 }
24826 case 1: {
24827 return 0;
24828 break;
24829 }
24830 case 2: {
24831 $t1_2 = n;
24832 $t2_3 = (($t1_2 - 1) >>> 0);
24833 $t3_4 = (Math.imul(2, $t2_3) >>> 0);
24834 $t4_5 = (($t3_4 + 1) >>> 0);
24835 return $t4_5;
24836 break;
24837 }
24838 }
24839 }
24840 }
24841
24842 $rt.types.getType('smesh.lol/web/common/mls.numLeaves')?.methods?.set('width', numLeaves$width);
24843 export function nodeIndex$children(x) {
24844 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
24845 let $block = 0;
24846 while (true) {
24847 switch ($block) {
24848 case 0: {
24849 $t0_1 = nodeIndex$left(x);
24850 $t1_2 = $t0_1[0];
24851 $t2_3 = $t0_1[1];
24852 if ($t2_3) {
24853 $block = 2; break;
24854 }
24855 else {
24856 $block = 1; break;
24857 }
24858 break;
24859 }
24860 case 1: {
24861 return [0, 0, false];
24862 break;
24863 }
24864 case 2: {
24865 $t3_4 = nodeIndex$right(x);
24866 $t4_5 = $t3_4[0];
24867 $t5_6 = $t3_4[1];
24868 return [$t1_2, $t4_5, true];
24869 break;
24870 }
24871 }
24872 }
24873 }
24874
24875 $rt.types.getType('smesh.lol/web/common/mls.nodeIndex')?.methods?.set('children', nodeIndex$children);
24876 export function nodeIndex$isLeaf(x) {
24877 let $t0_1, $t1_2;
24878 $t0_1 = ((x % 2) >>> 0);
24879 $t1_2 = ($t0_1 === 0);
24880 return $t1_2;
24881 }
24882
24883 $rt.types.getType('smesh.lol/web/common/mls.nodeIndex')?.methods?.set('isLeaf', nodeIndex$isLeaf);
24884 export function nodeIndex$leafIndex(x) {
24885 let $t0_1, $t1_2, $t2_3;
24886 let $block = 0;
24887 while (true) {
24888 switch ($block) {
24889 case 0: {
24890 $t0_1 = nodeIndex$isLeaf(x);
24891 if ($t0_1) {
24892 $block = 2; break;
24893 }
24894 else {
24895 $block = 1; break;
24896 }
24897 break;
24898 }
24899 case 1: {
24900 return [0, false];
24901 break;
24902 }
24903 case 2: {
24904 $t1_2 = x;
24905 $t2_3 = ($t1_2 >>> 1);
24906 return [$t2_3, true];
24907 break;
24908 }
24909 }
24910 }
24911 }
24912
24913 $rt.types.getType('smesh.lol/web/common/mls.nodeIndex')?.methods?.set('leafIndex', nodeIndex$leafIndex);
24914 export function nodeIndex$left(x) {
24915 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
24916 let $block = 0;
24917 while (true) {
24918 switch ($block) {
24919 case 0: {
24920 $t0_1 = nodeIndex$level(x);
24921 $t1_2 = ($t0_1 === 0);
24922 if ($t1_2) {
24923 $block = 1; break;
24924 }
24925 else {
24926 $block = 2; break;
24927 }
24928 break;
24929 }
24930 case 1: {
24931 return [0, false];
24932 break;
24933 }
24934 case 2: {
24935 $t2_3 = ($t0_1 >>> 0);
24936 $t3_4 = (($t2_3 - 1) >>> 0);
24937 $t4_5 = ((1 << $t3_4) >>> 0);
24938 $t5_6 = ((x ^ $t4_5) >>> 0);
24939 return [$t5_6, true];
24940 break;
24941 }
24942 }
24943 }
24944 }
24945
24946 $rt.types.getType('smesh.lol/web/common/mls.nodeIndex')?.methods?.set('left', nodeIndex$left);
24947 export function nodeIndex$level(x) {
24948 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
24949 let $block = 0;
24950 while (true) {
24951 switch ($block) {
24952 case 0: {
24953 $t0_1 = ((x & 1) >>> 0);
24954 $t1_2 = ($t0_1 === 0);
24955 if ($t1_2) {
24956 $block = 1; break;
24957 }
24958 else {
24959 $block = 2; break;
24960 }
24961 break;
24962 }
24963 case 1: {
24964 return 0;
24965 break;
24966 }
24967 case 2: {
24968 $t3_4 = 0;
24969 $block = 5; break;
24970 break;
24971 }
24972 case 3: {
24973 $t2_3 = (($t3_4 + 1) >>> 0);
24974 $t3_4 = $t2_3;
24975 $block = 5; break;
24976 break;
24977 }
24978 case 4: {
24979 return $t3_4;
24980 break;
24981 }
24982 case 5: {
24983 $t4_5 = (x >>> $t3_4);
24984 $t5_6 = (($t4_5 & 1) >>> 0);
24985 $t6_7 = ($t5_6 === 1);
24986 if ($t6_7) {
24987 $block = 3; break;
24988 }
24989 else {
24990 $block = 4; break;
24991 }
24992 break;
24993 }
24994 }
24995 }
24996 }
24997
24998 $rt.types.getType('smesh.lol/web/common/mls.nodeIndex')?.methods?.set('level', nodeIndex$level);
24999 export function nodeIndex$right(x) {
25000 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
25001 let $block = 0;
25002 while (true) {
25003 switch ($block) {
25004 case 0: {
25005 $t0_1 = nodeIndex$level(x);
25006 $t1_2 = ($t0_1 === 0);
25007 if ($t1_2) {
25008 $block = 1; break;
25009 }
25010 else {
25011 $block = 2; break;
25012 }
25013 break;
25014 }
25015 case 1: {
25016 return [0, false];
25017 break;
25018 }
25019 case 2: {
25020 $t2_3 = ($t0_1 >>> 0);
25021 $t3_4 = (($t2_3 - 1) >>> 0);
25022 $t4_5 = ((3 << $t3_4) >>> 0);
25023 $t5_6 = ((x ^ $t4_5) >>> 0);
25024 return [$t5_6, true];
25025 break;
25026 }
25027 }
25028 }
25029 }
25030
25031 $rt.types.getType('smesh.lol/web/common/mls.nodeIndex')?.methods?.set('right', nodeIndex$right);
25032 export function leafIndex$nodeIndex(li) {
25033 let $t0_1, $t1_2;
25034 $t0_1 = (Math.imul(2, li) >>> 0);
25035 $t1_2 = $t0_1;
25036 return $t1_2;
25037 }
25038
25039 $rt.types.getType('smesh.lol/web/common/mls.leafIndex')?.methods?.set('nodeIndex', leafIndex$nodeIndex);
25040 export function Credential$marshal(cred, w) {
25041 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
25042 let $block = 0;
25043 while (true) {
25044 switch ($block) {
25045 case 0: {
25046 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
25047 $t0_1.$set(cred);
25048 $t1_2 = $t0_1.$get();
25049 $t2_3 = { $get() { return $t1_2.$get().credentialType; }, $set(v) { const obj = $t1_2.$get(); obj.credentialType = v; $t1_2.$set(obj); } };
25050 $t3_4 = $t2_3.$get();
25051 $t4_5 = $t3_4;
25052 $t5_6 = Writer$addUint16(w, $t4_5);
25053 $t6_7 = $t0_1.$get();
25054 $t7_8 = { $get() { return $t6_7.$get().credentialType; }, $set(v) { const obj = $t6_7.$get(); obj.credentialType = v; $t6_7.$set(obj); } };
25055 $t8_9 = $t7_8.$get();
25056 $t9_10 = ($t8_9 === 1);
25057 if ($t9_10) {
25058 $block = 2; break;
25059 }
25060 else {
25061 $block = 4; break;
25062 }
25063 break;
25064 }
25065 case 1: {
25066 return;
25067 break;
25068 }
25069 case 2: {
25070 $t10_11 = $t0_1.$get();
25071 $t11_12 = { $get() { return $t10_11.$get().identity; }, $set(v) { const obj = $t10_11.$get(); obj.identity = v; $t10_11.$set(obj); } };
25072 $t12_13 = $t11_12.$get();
25073 $t13_14 = Writer$writeOpaqueVec(w, $t12_13);
25074 $block = 1; break;
25075 break;
25076 }
25077 case 3: {
25078 $t14_15 = $t0_1.$get();
25079 $t15_16 = { $get() { return $t14_15.$get().certificates; }, $set(v) { const obj = $t14_15.$get(); obj.certificates = v; $t14_15.$set(obj); } };
25080 $t16_17 = $t15_16.$get();
25081 $t17_18 = $rt.builtin.len($t16_17);
25082 $t18_19 = Credential$marshal$1.bind(null, $t0_1);
25083 $t19_20 = Writer$writeVector(w, $t17_18, $t18_19);
25084 $block = 1; break;
25085 break;
25086 }
25087 case 4: {
25088 $t20_21 = ($t8_9 === 2);
25089 if ($t20_21) {
25090 $block = 3; break;
25091 }
25092 else {
25093 $block = 5; break;
25094 }
25095 break;
25096 }
25097 case 5: {
25098 $t21_22 = $rt.types.makeInterface('string', 'unreachable');
25099 $rt.runtime.panic($t21_22);
25100 break;
25101 }
25102 }
25103 }
25104 }
25105
25106 function Credential$marshal$1(cred, w, i) {
25107 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
25108 $t0_1 = cred.$get();
25109 $t1_2 = { $get() { return $t0_1.$get().certificates; }, $set(v) { const obj = $t0_1.$get(); obj.certificates = v; $t0_1.$set(obj); } };
25110 $t2_3 = $t1_2.$get();
25111 $t3_4 = $t2_3.addr(i);
25112 $t4_5 = $t3_4.$get();
25113 $t5_6 = Writer$writeOpaqueVec(w, $t4_5);
25114 return;
25115 }
25116
25117 $rt.types.getType('smesh.lol/web/common/mls.Credential')?.methods?.set('marshal', Credential$marshal);
25118 export function Credential$unmarshal(cred, r) {
25119 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23;
25120 let $block = 0;
25121 while (true) {
25122 switch ($block) {
25123 case 0: {
25124 $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
25125 $t0_1.$set(cred);
25126 $t1_2 = $t0_1.$get();
25127 $t1_2.$set($rt.builtin.cloneValue({ credentialType: 0, identity: null, certificates: null }));
25128 $t2_3 = Reader$readUint16(r);
25129 $t3_4 = $t2_3[0];
25130 $t4_5 = $t2_3[1];
25131 if ($t4_5) {
25132 $block = 2; break;
25133 }
25134 else {
25135 $block = 1; break;
25136 }
25137 break;
25138 }
25139 case 1: {
25140 $t5_6 = errUnexpectedEOF.$get();
25141 return $t5_6;
25142 break;
25143 }
25144 case 2: {
25145 $t6_7 = $t0_1.$get();
25146 $t7_8 = $t3_4;
25147 $t8_9 = { $get() { return $t6_7.$get().credentialType; }, $set(v) { const obj = $t6_7.$get(); obj.credentialType = v; $t6_7.$set(obj); } };
25148 $t8_9.$set($t7_8);
25149 $t9_10 = $t0_1.$get();
25150 $t10_11 = { $get() { return $t9_10.$get().credentialType; }, $set(v) { const obj = $t9_10.$get(); obj.credentialType = v; $t9_10.$set(obj); } };
25151 $t11_12 = $t10_11.$get();
25152 $t12_13 = ($t11_12 === 1);
25153 if ($t12_13) {
25154 $block = 3; break;
25155 }
25156 else {
25157 $block = 5; break;
25158 }
25159 break;
25160 }
25161 case 3: {
25162 $t13_14 = $t0_1.$get();
25163 $t14_15 = Reader$readOpaqueVec(r);
25164 $t15_16 = $t14_15[0];
25165 $t16_17 = { $get() { return $t13_14.$get().identity; }, $set(v) { const obj = $t13_14.$get(); obj.identity = v; $t13_14.$set(obj); } };
25166 $t16_17.$set($t15_16);
25167 $t17_18 = $t14_15[1];
25168 if ($t17_18) {
25169 $block = 7; break;
25170 }
25171 else {
25172 $block = 6; break;
25173 }
25174 break;
25175 }
25176 case 4: {
25177 $t18_19 = Credential$unmarshal$1.bind(null, $t0_1);
25178 $t19_20 = Reader$readVector(r, $t18_19);
25179 return $t19_20;
25180 break;
25181 }
25182 case 5: {
25183 $t20_21 = ($t11_12 === 2);
25184 if ($t20_21) {
25185 $block = 4; break;
25186 }
25187 else {
25188 $block = 8; break;
25189 }
25190 break;
25191 }
25192 case 6: {
25193 $t21_22 = errUnexpectedEOF.$get();
25194 return $t21_22;
25195 break;
25196 }
25197 case 7: {
25198 return null;
25199 break;
25200 }
25201 case 8: {
25202 $t22_23 = errInvalidCredentialType.$get();
25203 return $t22_23;
25204 break;
25205 }
25206 }
25207 }
25208 }
25209
25210 function Credential$unmarshal$1(cred, r) {
25211 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
25212 let $block = 0;
25213 while (true) {
25214 switch ($block) {
25215 case 0: {
25216 $t0_1 = Reader$readOpaqueVec(r);
25217 $t1_2 = $t0_1[0];
25218 $t2_3 = $t0_1[1];
25219 if ($t2_3) {
25220 $block = 2; break;
25221 }
25222 else {
25223 $block = 1; break;
25224 }
25225 break;
25226 }
25227 case 1: {
25228 $t3_4 = errUnexpectedEOF.$get();
25229 return $t3_4;
25230 break;
25231 }
25232 case 2: {
25233 $t4_5 = cred.$get();
25234 $t5_6 = cred.$get();
25235 $t6_7 = { $get() { return $t5_6.$get().certificates; }, $set(v) { const obj = $t5_6.$get(); obj.certificates = v; $t5_6.$set(obj); } };
25236 $t7_8 = $t6_7.$get();
25237 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
25238 $t9_10 = $t8_9.$get().addr(0);
25239 $t9_10.$set($t1_2);
25240 $t10_11 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
25241 $t11_12 = $rt.builtin.appendSlice($t7_8, $t10_11);
25242 $t12_13 = { $get() { return $t4_5.$get().certificates; }, $set(v) { const obj = $t4_5.$get(); obj.certificates = v; $t4_5.$set(obj); } };
25243 $t12_13.$set($t11_12);
25244 return null;
25245 break;
25246 }
25247 }
25248 }
25249 }
25250
25251 $rt.types.getType('smesh.lol/web/common/mls.Credential')?.methods?.set('unmarshal', Credential$unmarshal);
25252 export function hpkeCiphertext$marshal(hc, w) {
25253 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6;
25254 $t0_1 = { $get() { return hc.$get().kemOutput; }, $set(v) { const obj = hc.$get(); obj.kemOutput = v; hc.$set(obj); } };
25255 $t1_2 = $t0_1.$get();
25256 $t2_3 = Writer$writeOpaqueVec(w, $t1_2);
25257 $t3_4 = { $get() { return hc.$get().ciphertext; }, $set(v) { const obj = hc.$get(); obj.ciphertext = v; hc.$set(obj); } };
25258 $t4_5 = $t3_4.$get();
25259 $t5_6 = Writer$writeOpaqueVec(w, $t4_5);
25260 return;
25261 }
25262
25263 $rt.types.getType('smesh.lol/web/common/mls.hpkeCiphertext')?.methods?.set('marshal', hpkeCiphertext$marshal);
25264 export function hpkeCiphertext$unmarshal(hc, r) {
25265 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
25266 let $block = 0;
25267 while (true) {
25268 switch ($block) {
25269 case 0: {
25270 hc.$set($rt.builtin.cloneValue({ kemOutput: null, ciphertext: null }));
25271 $t0_1 = Reader$readOpaqueVec(r);
25272 $t1_2 = $t0_1[0];
25273 $t2_3 = { $get() { return hc.$get().kemOutput; }, $set(v) { const obj = hc.$get(); obj.kemOutput = v; hc.$set(obj); } };
25274 $t2_3.$set($t1_2);
25275 $t3_4 = $t0_1[1];
25276 if ($t3_4) {
25277 $block = 2; break;
25278 }
25279 else {
25280 $block = 1; break;
25281 }
25282 break;
25283 }
25284 case 1: {
25285 $t4_5 = errUnexpectedEOF.$get();
25286 return $t4_5;
25287 break;
25288 }
25289 case 2: {
25290 $t5_6 = Reader$readOpaqueVec(r);
25291 $t6_7 = $t5_6[0];
25292 $t7_8 = { $get() { return hc.$get().ciphertext; }, $set(v) { const obj = hc.$get(); obj.ciphertext = v; hc.$set(obj); } };
25293 $t7_8.$set($t6_7);
25294 $t8_9 = $t5_6[1];
25295 if ($t8_9) {
25296 $block = 4; break;
25297 }
25298 else {
25299 $block = 3; break;
25300 }
25301 break;
25302 }
25303 case 3: {
25304 $t9_10 = errUnexpectedEOF.$get();
25305 return $t9_10;
25306 break;
25307 }
25308 case 4: {
25309 return null;
25310 break;
25311 }
25312 }
25313 }
25314 }
25315
25316 $rt.types.getType('smesh.lol/web/common/mls.hpkeCiphertext')?.methods?.set('unmarshal', hpkeCiphertext$unmarshal);
25317