@reallyme/codec 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +30 -0
- package/NOTICE +1 -5
- package/README.md +31 -11
- package/dist/baseEncoding.js +6 -9
- package/dist/boundary.js +3 -3
- package/dist/cbor.d.ts +5 -1
- package/dist/cbor.js +53 -20
- package/dist/deterministicCborBoundary.d.ts +1 -1
- package/dist/deterministicCborBoundary.js +5 -5
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +2 -2
- package/dist/index.d.ts +5 -3
- package/dist/index.js +7 -5
- package/dist/jcs.js +2 -2
- package/dist/multiformat.js +17 -17
- package/dist/operationContract.d.ts +2 -3
- package/dist/operationContract.js +58 -20
- package/dist/pem.js +5 -2
- package/dist/proto/generated/reallyme/codec/v1/codec_pb.d.ts +48 -3
- package/dist/proto/generated/reallyme/codec/v1/codec_pb.js +47 -3
- package/dist/proto.js +2 -2
- package/dist/readOutput.d.ts +4 -0
- package/dist/readOutput.js +51 -5
- package/dist/wasm/LICENSE +226 -12
- package/dist/wasm/reallyme_codec_wasm.d.ts +12 -12
- package/dist/wasm/reallyme_codec_wasm.js +85 -151
- package/dist/wasm/reallyme_codec_wasm_bg.wasm +0 -0
- package/dist/wasmProvider.js +54 -5
- package/package.json +4 -4
|
@@ -1,16 +1,30 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import { fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
3
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
|
+
import { create, fromBinary, toBinary } from "@bufbuild/protobuf";
|
|
5
5
|
import { MAX_CODEC_FFI_INPUT_BYTES, MAX_CODEC_PROTO_JSON_BYTES, MAX_CODEC_PROTO_MESSAGE_BYTES, requireBoundaryAggregate, strictUtf8ByteLength, utf8ByteLength, } from "./boundary.js";
|
|
6
6
|
import { DETERMINISTIC_CBOR_I64_MIN, DETERMINISTIC_CBOR_U64_MAX, MAX_DETERMINISTIC_CBOR_AGGREGATE_BYTE_STRING_BYTES, MAX_DETERMINISTIC_CBOR_AGGREGATE_TEXT_BYTES, MAX_DETERMINISTIC_CBOR_CONTAINER_ENTRIES, MAX_DETERMINISTIC_CBOR_INPUT_LEN, MAX_DETERMINISTIC_CBOR_NESTING_DEPTH, MAX_DETERMINISTIC_CBOR_NODES, MAX_DETERMINISTIC_CBOR_PROTO_RECURSION_DEPTH, } from "./deterministicCborBoundary.js";
|
|
7
7
|
import { ReallyMeCodecError } from "./errors.js";
|
|
8
|
-
import { CodecErrorOrigin, CodecErrorReason, CodecOperationResponseSchema, CodecOperationRequestSchema, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
|
9
|
-
import { readIndependentBoundedBytesOutput, snapshotBoundedBytesInput, } from "./readOutput.js";
|
|
8
|
+
import { CodecErrorOrigin, CodecErrorReason, CodecErrorSchema, CodecBoundaryErrorSchema, CodecOperationResponseSchema, CodecOperationRequestSchema, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
|
9
|
+
import { ensureBytesInput, readIndependentBoundedBytesOutput, snapshotBoundedBytesInput, snapshotProviderBytes, } from "./readOutput.js";
|
|
10
10
|
import { requireReallyMeCodecWasmProvider } from "./wasmProvider.js";
|
|
11
11
|
const PROTO_REQUEST_OVERHEAD_BUDGET = 64;
|
|
12
12
|
const DETERMINISTIC_CBOR_PROTO_NODE_OVERHEAD_BUDGET = 16;
|
|
13
13
|
const DAG_CBOR_I64_MAX = (1n << 63n) - 1n;
|
|
14
|
+
const resourceLimitOperationResponse = () => toBinary(CodecOperationResponseSchema, create(CodecOperationResponseSchema, {
|
|
15
|
+
outcome: {
|
|
16
|
+
case: "error",
|
|
17
|
+
value: create(CodecErrorSchema, {
|
|
18
|
+
error: {
|
|
19
|
+
case: "boundary",
|
|
20
|
+
value: create(CodecBoundaryErrorSchema, {
|
|
21
|
+
reason: CodecErrorReason.BOUNDARY_RESOURCE_LIMIT_EXCEEDED,
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
origin: CodecErrorOrigin.CALLER,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
}));
|
|
14
28
|
const requireNoGeneratedUnknownFields = (message) => {
|
|
15
29
|
if (message.$unknown !== undefined && message.$unknown.length !== 0) {
|
|
16
30
|
throw new ReallyMeCodecError("invalid-input");
|
|
@@ -441,11 +455,14 @@ const validateGeneratedOperationRequest = (request) => {
|
|
|
441
455
|
* Execute one binary generated-protobuf request and return the fully
|
|
442
456
|
* discriminated binary `CodecOperationResponse`.
|
|
443
457
|
*
|
|
444
|
-
* Oversized requests are
|
|
445
|
-
*
|
|
446
|
-
* rather than a boundary-local exception.
|
|
458
|
+
* Oversized and malformed requests are represented by the response error
|
|
459
|
+
* oneof. Caller-owned oversized bytes are not copied into WASM.
|
|
447
460
|
*/
|
|
448
461
|
export const processOperation = (requestBytes) => {
|
|
462
|
+
ensureBytesInput(requestBytes);
|
|
463
|
+
if (requestBytes.length > MAX_CODEC_PROTO_MESSAGE_BYTES) {
|
|
464
|
+
return resourceLimitOperationResponse();
|
|
465
|
+
}
|
|
449
466
|
const requestSnapshot = snapshotBoundedBytesInput(requestBytes, MAX_CODEC_PROTO_MESSAGE_BYTES);
|
|
450
467
|
try {
|
|
451
468
|
return readIndependentBoundedBytesOutput(requireReallyMeCodecWasmProvider().processOperation(requestSnapshot), requestSnapshot, MAX_CODEC_PROTO_MESSAGE_BYTES);
|
|
@@ -459,6 +476,10 @@ export const processOperation = (requestBytes) => {
|
|
|
459
476
|
* binary response used by `processOperation`.
|
|
460
477
|
*/
|
|
461
478
|
export const processOperationJson = (requestJson) => {
|
|
479
|
+
ensureBytesInput(requestJson);
|
|
480
|
+
if (requestJson.length > MAX_CODEC_PROTO_JSON_BYTES) {
|
|
481
|
+
return resourceLimitOperationResponse();
|
|
482
|
+
}
|
|
462
483
|
const requestSnapshot = snapshotBoundedBytesInput(requestJson, MAX_CODEC_PROTO_JSON_BYTES);
|
|
463
484
|
try {
|
|
464
485
|
return readIndependentBoundedBytesOutput(requireReallyMeCodecWasmProvider().processOperationJson(requestSnapshot), requestSnapshot, MAX_CODEC_PROTO_MESSAGE_BYTES);
|
|
@@ -551,38 +572,38 @@ export const processGeneratedOperationRequest = (request) => {
|
|
|
551
572
|
const detachGeneratedOperationResultBytes = (result) => {
|
|
552
573
|
switch (result.result.case) {
|
|
553
574
|
case "multicodecPrefixForName":
|
|
554
|
-
result.result.value.prefix = result.result.value.prefix
|
|
575
|
+
result.result.value.prefix = snapshotProviderBytes(result.result.value.prefix);
|
|
555
576
|
break;
|
|
556
577
|
case "multicodecLookupPrefix":
|
|
557
578
|
if (result.result.value.metadata !== undefined) {
|
|
558
579
|
result.result.value.metadata.prefix =
|
|
559
|
-
result.result.value.metadata.prefix
|
|
580
|
+
snapshotProviderBytes(result.result.value.metadata.prefix);
|
|
560
581
|
}
|
|
561
582
|
break;
|
|
562
583
|
case "multicodecTable":
|
|
563
584
|
for (const entry of result.result.value.entries) {
|
|
564
|
-
entry.prefix = entry.prefix
|
|
585
|
+
entry.prefix = snapshotProviderBytes(entry.prefix);
|
|
565
586
|
}
|
|
566
587
|
break;
|
|
567
588
|
case "multikeyParse":
|
|
568
|
-
result.result.value.publicKey = result.result.value.publicKey
|
|
589
|
+
result.result.value.publicKey = snapshotProviderBytes(result.result.value.publicKey);
|
|
569
590
|
break;
|
|
570
591
|
case "dagCborVerifyCid":
|
|
571
592
|
break;
|
|
572
593
|
case "dagCborEncode":
|
|
573
|
-
result.result.value.encoded = result.result.value.encoded
|
|
594
|
+
result.result.value.encoded = snapshotProviderBytes(result.result.value.encoded);
|
|
574
595
|
break;
|
|
575
596
|
case "dagCborDecode":
|
|
576
597
|
detachGeneratedCborValueBytes(result.result.value.value);
|
|
577
598
|
break;
|
|
578
599
|
case "pemDecode":
|
|
579
|
-
result.result.value.der = result.result.value.der
|
|
600
|
+
result.result.value.der = snapshotProviderBytes(result.result.value.der);
|
|
580
601
|
break;
|
|
581
602
|
case "pemEncode":
|
|
582
|
-
result.result.value.pem = result.result.value.pem
|
|
603
|
+
result.result.value.pem = snapshotProviderBytes(result.result.value.pem);
|
|
583
604
|
break;
|
|
584
605
|
case "deterministicCborEncode":
|
|
585
|
-
result.result.value.encoded = result.result.value.encoded
|
|
606
|
+
result.result.value.encoded = snapshotProviderBytes(result.result.value.encoded);
|
|
586
607
|
break;
|
|
587
608
|
case "deterministicCborDecode":
|
|
588
609
|
detachGeneratedCborValueBytes(result.result.value.value);
|
|
@@ -597,7 +618,7 @@ const detachGeneratedCborValueBytes = (value) => {
|
|
|
597
618
|
}
|
|
598
619
|
switch (value.value.case) {
|
|
599
620
|
case "bytesValue":
|
|
600
|
-
value.value.value.value = value.value.value.value
|
|
621
|
+
value.value.value.value = snapshotProviderBytes(value.value.value.value);
|
|
601
622
|
break;
|
|
602
623
|
case "arrayValue":
|
|
603
624
|
for (const child of value.value.value.values) {
|
|
@@ -748,7 +769,24 @@ const errorCodeForCodecErrorMessage = (error) => {
|
|
|
748
769
|
if (error.origin !== expectedOrigin) {
|
|
749
770
|
return "provider-failure";
|
|
750
771
|
}
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
772
|
+
if (error.origin !== CodecErrorOrigin.CALLER) {
|
|
773
|
+
return "provider-failure";
|
|
774
|
+
}
|
|
775
|
+
switch (reason) {
|
|
776
|
+
case CodecErrorReason.MULTIFORMAT_UNKNOWN_MULTICODEC:
|
|
777
|
+
case CodecErrorReason.MULTIFORMAT_INVALID_MULTICODEC_PREFIX:
|
|
778
|
+
return "unsupported-codec";
|
|
779
|
+
case CodecErrorReason.CANONICAL_UNSUPPORTED_IPLD_VALUE:
|
|
780
|
+
return "unsupported-ipld-value";
|
|
781
|
+
case CodecErrorReason.BASE_NON_CANONICAL_HEX:
|
|
782
|
+
case CodecErrorReason.CANONICAL_NON_CANONICAL_CBOR:
|
|
783
|
+
case CodecErrorReason.CANONICAL_NON_CANONICAL_JSON:
|
|
784
|
+
case CodecErrorReason.CANONICAL_NON_MINIMAL_CBOR_INTEGER:
|
|
785
|
+
case CodecErrorReason.CANONICAL_DUPLICATE_CBOR_MAP_KEY:
|
|
786
|
+
case CodecErrorReason.CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER:
|
|
787
|
+
case CodecErrorReason.CANONICAL_CBOR_TRAILING_BYTES:
|
|
788
|
+
return "non-canonical";
|
|
789
|
+
default:
|
|
790
|
+
return "invalid-input";
|
|
791
|
+
}
|
|
754
792
|
};
|
package/dist/pem.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
import { create } from "@bufbuild/protobuf";
|
|
5
5
|
import { ReallyMeCodecError } from "./errors.js";
|
|
6
6
|
import { CodecOperationRequestSchema, CodecPemDecodeOptionsSchema, CodecPemDecodeRequestSchema, CodecPemEncodeOptionsSchema, CodecPemEncodeRequestSchema, CodecPemLabel, CodecPemLineEnding, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
|
@@ -146,6 +146,9 @@ const snapshotEncodeOptions = (options) => {
|
|
|
146
146
|
const snapshot = snapshotOptionsRecord(options, pemEncodeOptionFields);
|
|
147
147
|
const maxDerLen = readPositiveIntegerOption(snapshot, "maxDerLen");
|
|
148
148
|
const lineWidth = readPositiveIntegerOption(snapshot, "lineWidth");
|
|
149
|
+
if (lineWidth !== undefined && (lineWidth < 1 || lineWidth > 76)) {
|
|
150
|
+
throw new ReallyMeCodecError("invalid-input");
|
|
151
|
+
}
|
|
149
152
|
const lineEndingValue = readSnapshotProperty(snapshot, "lineEnding");
|
|
150
153
|
let lineEnding;
|
|
151
154
|
if (lineEndingValue !== undefined) {
|
|
@@ -201,7 +201,7 @@ export type CodecDagCborDecodeResult = Message<"reallyme.codec.v1.CodecDagCborDe
|
|
|
201
201
|
export declare const CodecDagCborDecodeResultSchema: GenMessage<CodecDagCborDecodeResult>;
|
|
202
202
|
/**
|
|
203
203
|
* Zero limits select the documented codec defaults. An empty allowed-label list
|
|
204
|
-
* selects
|
|
204
|
+
* selects PUBLIC KEY only; private-key labels require an explicit allowlist.
|
|
205
205
|
*
|
|
206
206
|
* @generated from message reallyme.codec.v1.CodecPemDecodeOptions
|
|
207
207
|
*/
|
|
@@ -278,8 +278,9 @@ export type CodecPemEncodeRequest = Message<"reallyme.codec.v1.CodecPemEncodeReq
|
|
|
278
278
|
*/
|
|
279
279
|
label: CodecPemLabel;
|
|
280
280
|
/**
|
|
281
|
-
* DER may contain private-key material. Generated
|
|
282
|
-
*
|
|
281
|
+
* DER may contain private-key material. Generated owned-message drop wipes
|
|
282
|
+
* the retained field; transport decoders may create temporary copies that
|
|
283
|
+
* cannot be reliably wiped. Use binary requests for secret-bearing DER.
|
|
283
284
|
*
|
|
284
285
|
* @generated from field: bytes der = 2;
|
|
285
286
|
*/
|
|
@@ -1358,6 +1359,30 @@ export declare enum CodecErrorReason {
|
|
|
1358
1359
|
* @generated from enum value: CODEC_ERROR_REASON_PEM_DER_TOO_LARGE = 204;
|
|
1359
1360
|
*/
|
|
1360
1361
|
PEM_DER_TOO_LARGE = 204,
|
|
1362
|
+
/**
|
|
1363
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_INPUT = 205;
|
|
1364
|
+
*/
|
|
1365
|
+
PEM_EMPTY_INPUT = 205,
|
|
1366
|
+
/**
|
|
1367
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_DER = 206;
|
|
1368
|
+
*/
|
|
1369
|
+
PEM_EMPTY_DER = 206,
|
|
1370
|
+
/**
|
|
1371
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_OPTIONS = 207;
|
|
1372
|
+
*/
|
|
1373
|
+
PEM_INVALID_OPTIONS = 207,
|
|
1374
|
+
/**
|
|
1375
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_BEGIN = 208;
|
|
1376
|
+
*/
|
|
1377
|
+
PEM_MISSING_BEGIN = 208,
|
|
1378
|
+
/**
|
|
1379
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_END = 209;
|
|
1380
|
+
*/
|
|
1381
|
+
PEM_MISSING_END = 209,
|
|
1382
|
+
/**
|
|
1383
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_BASE64 = 210;
|
|
1384
|
+
*/
|
|
1385
|
+
PEM_INVALID_BASE64 = 210,
|
|
1361
1386
|
/**
|
|
1362
1387
|
* Multiformats and key envelopes.
|
|
1363
1388
|
*
|
|
@@ -1398,6 +1423,26 @@ export declare enum CodecErrorReason {
|
|
|
1398
1423
|
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_INTERNAL = 404;
|
|
1399
1424
|
*/
|
|
1400
1425
|
CANONICAL_INTERNAL = 404,
|
|
1426
|
+
/**
|
|
1427
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405;
|
|
1428
|
+
*/
|
|
1429
|
+
CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405,
|
|
1430
|
+
/**
|
|
1431
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406;
|
|
1432
|
+
*/
|
|
1433
|
+
CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406,
|
|
1434
|
+
/**
|
|
1435
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407;
|
|
1436
|
+
*/
|
|
1437
|
+
CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407,
|
|
1438
|
+
/**
|
|
1439
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_TRAILING_BYTES = 408;
|
|
1440
|
+
*/
|
|
1441
|
+
CANONICAL_CBOR_TRAILING_BYTES = 408,
|
|
1442
|
+
/**
|
|
1443
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_UNSUPPORTED_IPLD_VALUE = 409;
|
|
1444
|
+
*/
|
|
1445
|
+
CANONICAL_UNSUPPORTED_IPLD_VALUE = 409,
|
|
1401
1446
|
/**
|
|
1402
1447
|
* Backend failures.
|
|
1403
1448
|
*
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
5
|
/**
|
|
6
6
|
* Describes the file reallyme/codec/v1/codec.proto.
|
|
7
7
|
*/
|
|
8
|
-
export const file_reallyme_codec_v1_codec = /*@__PURE__*/ fileDesc("Ch1yZWFsbHltZS9jb2RlYy92MS9jb2RlYy5wcm90bxIRcmVhbGx5bWUuY29kZWMudjEivwMKCkNvZGVjRXJyb3ISQgoNYmFzZV9lbmNvZGluZxgBIAEoCzIpLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQmFzZUVuY29kaW5nRXJyb3JIABIvCgNwZW0YAiABKAsyIC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVycm9ySAASPwoLbXVsdGlmb3JtYXQYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpZm9ybWF0RXJyb3JIABJJChBjYW5vbmljYWxpemF0aW9uGAQgASgLMi0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNDYW5vbmljYWxpemF0aW9uRXJyb3JIABI3CgdiYWNrZW5kGAUgASgLMiQucmVhbGx5bWUuY29kZWMudjEuQ29kZWNCYWNrZW5kRXJyb3JIABI5Cghib3VuZGFyeRgGIAEoCzIlLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQm91bmRhcnlFcnJvckgAEjMKBm9yaWdpbhhkIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JPcmlnaW5CBwoFZXJyb3IiMwojQ29kZWNNdWx0aWNvZGVjUHJlZml4Rm9yTmFtZVJlcXVlc3QSDAoEbmFtZRgBIAEoCSIzCiJDb2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0Eg0KBXZhbHVlGAEgASgMIh0KG0NvZGVjTXVsdGljb2RlY1RhYmxlUmVxdWVzdCItChlDb2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0EhAKCG11bHRpa2V5GAEgASgJIjwKHENvZGVjRGFnQ2JvclZlcmlmeUNpZFJlcXVlc3QSCwoDY2lkGAEgASgJEg8KB3BheWxvYWQYAiABKAwiWgoZQ29kZWNEYWdDYm9yRW5jb2RlUmVxdWVzdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSIrChhDb2RlY0RhZ0Nib3JFbmNvZGVSZXN1bHQSDwoHZW5jb2RlZBgBIAEoDCIsChlDb2RlY0RhZ0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiWQoYQ29kZWNEYWdDYm9yRGVjb2RlUmVzdWx0Ej0KBXZhbHVlGAEgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIn0KFUNvZGVjUGVtRGVjb2RlT3B0aW9ucxI4Cg5hbGxvd2VkX2xhYmVscxgBIAMoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSFQoNbWF4X2lucHV0X2xlbhgCIAEoDRITCgttYXhfZGVyX2xlbhgDIAEoDSJfChVDb2RlY1BlbURlY29kZVJlcXVlc3QSCwoDcGVtGAEgASgMEjkKB29wdGlvbnMYAiABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbURlY29kZU9wdGlvbnMifAoVQ29kZWNQZW1FbmNvZGVPcHRpb25zEhMKC21heF9kZXJfbGVuGAEgASgNEhIKCmxpbmVfd2lkdGgYAiABKA0SOgoLbGluZV9lbmRpbmcYAyABKA4yJS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUxpbmVFbmRpbmcikAEKFUNvZGVjUGVtRW5jb2RlUmVxdWVzdBIvCgVsYWJlbBgBIAEoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSCwoDZGVyGAIgASgMEjkKB29wdGlvbnMYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZU9wdGlvbnMiIwoUQ29kZWNQZW1FbmNvZGVSZXN1bHQSCwoDcGVtGAEgASgMIhwKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JOdWxsIisKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JCb29sEg0KBXZhbHVlGAEgASgIIjYKJUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JVbnNpZ25lZEludGVnZXISDQoFdmFsdWUYASABKAQiNgolQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck5lZ2F0aXZlSW50ZWdlchINCgV2YWx1ZRgBIAEoEiLQAQodQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXISUgoOdW5zaWduZWRfdmFsdWUYASABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVW5zaWduZWRJbnRlZ2VySAASUgoObmVnYXRpdmVfdmFsdWUYAiABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTmVnYXRpdmVJbnRlZ2VySABCBwoFdmFsdWUiKwoaQ29kZWNEZXRlcm1pbmlzdGljQ2JvclRleHQSDQoFdmFsdWUYASABKAkiLAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzEg0KBXZhbHVlGAEgASgMIrEBChxDb2RlY0RldGVybWluaXN0aWNDYm9yTWFwS2V5EkcKC2ludGVnZXJfa2V5GAEgASgLMjAucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXJIABJBCgh0ZXh0X2tleRgCIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JUZXh0SABCBQoDa2V5Ip0BCh5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwRW50cnkSPAoDa2V5GAEgASgLMi8ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck1hcEtleRI9CgV2YWx1ZRgCIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSJdChtDb2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXkSPgoGdmFsdWVzGAEgAygLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIl8KGUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXASQgoHZW50cmllcxgBIAMoCzIxLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXBFbnRyeSKRBAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlEkMKCm51bGxfdmFsdWUYASABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTnVsbEgAEkMKCmJvb2xfdmFsdWUYAiABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQm9vbEgAEkkKDWludGVnZXJfdmFsdWUYAyABKAsyMC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9ySW50ZWdlckgAEkMKCnRleHRfdmFsdWUYBCABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVGV4dEgAEkUKC2J5dGVzX3ZhbHVlGAUgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzSAASRQoLYXJyYXlfdmFsdWUYBiABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXlIABJBCgltYXBfdmFsdWUYByABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwSABCBwoFdmFsdWUiZAojQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlcXVlc3QSPQoFdmFsdWUYASABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVmFsdWUiNQoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlc3VsdBIPCgdlbmNvZGVkGAEgASgMIjYKI0NvZGVjRGV0ZXJtaW5pc3RpY0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiYwoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckRlY29kZVJlc3VsdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSL7BgoUQ29kZWNPcGVyYXRpb25SZXN1bHQSTQoabXVsdGljb2RlY19wcmVmaXhfZm9yX25hbWUY6AcgASgLMiYucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWNvZGVjU3BlY0gAElMKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBSZXN1bHRIABJKChBtdWx0aWNvZGVjX3RhYmxlGOoHIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1RhYmxlUmVzdWx0SAASRgoObXVsdGlrZXlfcGFyc2UY0A8gASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWtleVBhcnNlUmVzdWx0SAASTgoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXN1bHRIABJHCg9kYWdfY2Jvcl9lbmNvZGUYuRcgASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRW5jb2RlUmVzdWx0SAASRwoPZGFnX2Nib3JfZGVjb2RlGLoXIAEoCzIrLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckRlY29kZVJlc3VsdEgAEj4KCnBlbV9kZWNvZGUYoB8gASgLMicucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXN1bHRIABI+CgpwZW1fZW5jb2RlGKEfIAEoCzInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2VuY29kZRiIJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVzdWx0SABCCAoGcmVzdWx0SgUIARDoByKOAQoWQ29kZWNPcGVyYXRpb25SZXNwb25zZRI5CgZyZXN1bHQYASABKAsyJy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY09wZXJhdGlvblJlc3VsdEgAEi4KBWVycm9yGAIgASgLMh0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvckgAQgkKB291dGNvbWUinwcKFUNvZGVjT3BlcmF0aW9uUmVxdWVzdBJdChptdWx0aWNvZGVjX3ByZWZpeF9mb3JfbmFtZRjoByABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNQcmVmaXhGb3JOYW1lUmVxdWVzdEgAEloKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0SAASSwoQbXVsdGljb2RlY190YWJsZRjqByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNUYWJsZVJlcXVlc3RIABJHCg5tdWx0aWtleV9wYXJzZRjQDyABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0SAASTwoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXF1ZXN0SAASSAoPZGFnX2Nib3JfZW5jb2RlGLkXIAEoCzIsLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckVuY29kZVJlcXVlc3RIABJICg9kYWdfY2Jvcl9kZWNvZGUYuhcgASgLMiwucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRGVjb2RlUmVxdWVzdEgAEj8KCnBlbV9kZWNvZGUYoB8gASgLMigucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXF1ZXN0SAASPwoKcGVtX2VuY29kZRihHyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZVJlcXVlc3RIABJcChlkZXRlcm1pbmlzdGljX2Nib3JfZW5jb2RlGIgnIAEoCzI2LnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JFbmNvZGVSZXF1ZXN0SAASXAoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoFCAEQ6Aci9gEKE0NvZGVjTXVsdGljb2RlY1NwZWMSDAoEbmFtZRgBIAEoCRIMCgRjb2RlGAIgASgMEg4KBnByZWZpeBgDIAEoDBIoCgN0YWcYBCABKA4yGy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1RhZxJCChFrZXlfbWF0ZXJpYWxfa2luZBgFIAEoDjInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjS2V5TWF0ZXJpYWxLaW5kEhQKDGZpeGVkX2xlbmd0aBgGIAEoDRIXCg92YXJpYWJsZV9sZW5ndGgYByABKAgSFgoOYWxnb3JpdGhtX25hbWUYCCABKAkifAobQ29kZWNNdWx0aWNvZGVjTG9va3VwUmVzdWx0EgwKBG5hbWUYASABKAkSFQoNcHJlZml4X2xlbmd0aBgCIAEoDRI4CghtZXRhZGF0YRgDIAEoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiVQoaQ29kZWNNdWx0aWNvZGVjVGFibGVSZXN1bHQSNwoHZW50cmllcxgBIAMoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiogEKGENvZGVjTXVsdGlrZXlQYXJzZVJlc3VsdBISCgpjb2RlY19uYW1lGAEgASgJEhYKDmFsZ29yaXRobV9uYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAwSIgoaZXhwZWN0ZWRfcHVibGljX2tleV9sZW5ndGgYBCABKA0SIgoadmFyaWFibGVfcHVibGljX2tleV9sZW5ndGgYBSABKAgiVgobQ29kZWNEYWdDYm9yVmVyaWZ5Q2lkUmVzdWx0Eg0KBXZhbGlkGAEgASgIEhQKDGV4cGVjdGVkX2NpZBgCIAEoCRISCgphY3R1YWxfY2lkGAMgASgJIjIKFENvZGVjUGVtRGVjb2RlUmVzdWx0Eg0KBWxhYmVsGAEgASgJEgsKA2RlchgCIAEoDCJNChZDb2RlY0Jhc2VFbmNvZGluZ0Vycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iRAoNQ29kZWNQZW1FcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIkwKFUNvZGVjTXVsdGlmb3JtYXRFcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIlEKGkNvZGVjQ2Fub25pY2FsaXphdGlvbkVycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iSAoRQ29kZWNCYWNrZW5kRXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbiJJChJDb2RlY0JvdW5kYXJ5RXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbip2ChBDb2RlY0Vycm9yT3JpZ2luEiIKHkNPREVDX0VSUk9SX09SSUdJTl9VTlNQRUNJRklFRBAAEh0KGUNPREVDX0VSUk9SX09SSUdJTl9DQUxMRVIQARIfChtDT0RFQ19FUlJPUl9PUklHSU5fUFJPVklERVIQAiqVAQoNQ29kZWNQZW1MYWJlbBIfChtDT0RFQ19QRU1fTEFCRUxfVU5TUEVDSUZJRUQQABIfChtDT0RFQ19QRU1fTEFCRUxfUFJJVkFURV9LRVkQZBIiCh5DT0RFQ19QRU1fTEFCRUxfRUNfUFJJVkFURV9LRVkQbhIeChpDT0RFQ19QRU1fTEFCRUxfUFVCTElDX0tFWRB4KnkKEkNvZGVjUGVtTGluZUVuZGluZxIlCiFDT0RFQ19QRU1fTElORV9FTkRJTkdfVU5TUEVDSUZJRUQQABIcChhDT0RFQ19QRU1fTElORV9FTkRJTkdfTEYQZBIeChpDT0RFQ19QRU1fTElORV9FTkRJTkdfQ1JMRhBuKuABChRDb2RlY0tleU1hdGVyaWFsS2luZBInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9VTlNQRUNJRklFRBAAEiYKIkNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1BVQkxJQ19LRVkQARInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9QUklWQVRFX0tFWRACEikKJUNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1NZTU1FVFJJQ19LRVkQAxIjCh9DT0RFQ19LRVlfTUFURVJJQUxfS0lORF9OT1RfS0VZEAQqlwEKCENvZGVjVGFnEhkKFUNPREVDX1RBR19VTlNQRUNJRklFRBAAEhgKFENPREVDX1RBR19FTkNSWVBUSU9OEAESEQoNQ09ERUNfVEFHX0tFWRACEhIKDkNPREVDX1RBR19IQVNIEAMSFwoTQ09ERUNfVEFHX01VTFRJSEFTSBAEEhYKEkNPREVDX1RBR19NVUxUSUtFWRAFKpILChBDb2RlY0Vycm9yUmVhc29uEiIKHkNPREVDX0VSUk9SX1JFQVNPTl9VTlNQRUNJRklFRBAAEi0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX1VOU1VQUE9SVEVEX0NPREVDEGQSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9FTkNPRElORxBlEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfTEVOR1RIEGYSKwonQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5QVVRfVE9PX0xBUkdFEGcSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfT1VUUFVUX1RPT19MQVJHRRBoEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfQkFTRTY0EG4SLQopQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9CQVNFNjRVUkwQbxInCiNDT0RFQ19FUlJPUl9SRUFTT05fQkFTRV9JTlZBTElEX0hFWBB4Ei0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX05PTl9DQU5PTklDQUxfSEVYEHkSLAonQ09ERUNfRVJST1JfUkVBU09OX1BFTV9JTlZBTElEX0JPVU5EQVJZEMgBEioKJUNPREVDX0VSUk9SX1JFQVNPTl9QRU1fTEFCRUxfTUlTTUFUQ0gQyQESLQooQ09ERUNfRVJST1JfUkVBU09OX1BFTV9VTlNVUFBPUlRFRF9MQUJFTBDKARIoCiNDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQk9EWRDLARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0RFUl9UT09fTEFSR0UQzAESPAo3Q09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX0lOVkFMSURfTVVMVElCQVNFX1BSRUZJWBCsAhI9CjhDT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfSU5WQUxJRF9NVUxUSUNPREVDX1BSRUZJWBCtAhI2CjFDT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfVU5LTk9XTl9NVUxUSUNPREVDEK4CEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9NVUxUSUZPUk1BVF9JTlZBTElEX01VTFRJS0VZEK8CEi4KKUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5WQUxJRF9DQk9SEJADEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX0NBTk9OSUNBTF9DQk9SEJEDEi4KKUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5WQUxJRF9KU09OEJIDEjQKL0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX0NBTk9OSUNBTF9KU09OEJMDEioKJUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfSU5URVJOQUwQlAMSKAojQ09ERUNfRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQ9AMSMwouQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX01BTEZPUk1FRF9QUk9UT0JVRhDYBBIvCipDT0RFQ19FUlJPUl9SRUFTT05fQk9VTkRBUllfTUFMRk9STUVEX0pTT04Q2QQSOAozQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX1JFU09VUkNFX0xJTUlUX0VYQ0VFREVEENoEEjIKLUNPREVDX0VSUk9SX1JFQVNPTl9CT1VOREFSWV9NSVNTSU5HX09QRVJBVElPThDbBCIECHAQcEImChJtZS5yZWFsbHkuY29kZWMudjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
|
|
8
|
+
export const file_reallyme_codec_v1_codec = /*@__PURE__*/ fileDesc("Ch1yZWFsbHltZS9jb2RlYy92MS9jb2RlYy5wcm90bxIRcmVhbGx5bWUuY29kZWMudjEivwMKCkNvZGVjRXJyb3ISQgoNYmFzZV9lbmNvZGluZxgBIAEoCzIpLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQmFzZUVuY29kaW5nRXJyb3JIABIvCgNwZW0YAiABKAsyIC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVycm9ySAASPwoLbXVsdGlmb3JtYXQYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpZm9ybWF0RXJyb3JIABJJChBjYW5vbmljYWxpemF0aW9uGAQgASgLMi0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNDYW5vbmljYWxpemF0aW9uRXJyb3JIABI3CgdiYWNrZW5kGAUgASgLMiQucmVhbGx5bWUuY29kZWMudjEuQ29kZWNCYWNrZW5kRXJyb3JIABI5Cghib3VuZGFyeRgGIAEoCzIlLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjQm91bmRhcnlFcnJvckgAEjMKBm9yaWdpbhhkIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JPcmlnaW5CBwoFZXJyb3IiMwojQ29kZWNNdWx0aWNvZGVjUHJlZml4Rm9yTmFtZVJlcXVlc3QSDAoEbmFtZRgBIAEoCSIzCiJDb2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0Eg0KBXZhbHVlGAEgASgMIh0KG0NvZGVjTXVsdGljb2RlY1RhYmxlUmVxdWVzdCItChlDb2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0EhAKCG11bHRpa2V5GAEgASgJIjwKHENvZGVjRGFnQ2JvclZlcmlmeUNpZFJlcXVlc3QSCwoDY2lkGAEgASgJEg8KB3BheWxvYWQYAiABKAwiWgoZQ29kZWNEYWdDYm9yRW5jb2RlUmVxdWVzdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSIrChhDb2RlY0RhZ0Nib3JFbmNvZGVSZXN1bHQSDwoHZW5jb2RlZBgBIAEoDCIsChlDb2RlY0RhZ0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiWQoYQ29kZWNEYWdDYm9yRGVjb2RlUmVzdWx0Ej0KBXZhbHVlGAEgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIn0KFUNvZGVjUGVtRGVjb2RlT3B0aW9ucxI4Cg5hbGxvd2VkX2xhYmVscxgBIAMoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSFQoNbWF4X2lucHV0X2xlbhgCIAEoDRITCgttYXhfZGVyX2xlbhgDIAEoDSJfChVDb2RlY1BlbURlY29kZVJlcXVlc3QSCwoDcGVtGAEgASgMEjkKB29wdGlvbnMYAiABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbURlY29kZU9wdGlvbnMifAoVQ29kZWNQZW1FbmNvZGVPcHRpb25zEhMKC21heF9kZXJfbGVuGAEgASgNEhIKCmxpbmVfd2lkdGgYAiABKA0SOgoLbGluZV9lbmRpbmcYAyABKA4yJS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUxpbmVFbmRpbmcikAEKFUNvZGVjUGVtRW5jb2RlUmVxdWVzdBIvCgVsYWJlbBgBIAEoDjIgLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtTGFiZWwSCwoDZGVyGAIgASgMEjkKB29wdGlvbnMYAyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZU9wdGlvbnMiIwoUQ29kZWNQZW1FbmNvZGVSZXN1bHQSCwoDcGVtGAEgASgMIhwKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JOdWxsIisKGkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JCb29sEg0KBXZhbHVlGAEgASgIIjYKJUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JVbnNpZ25lZEludGVnZXISDQoFdmFsdWUYASABKAQiNgolQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck5lZ2F0aXZlSW50ZWdlchINCgV2YWx1ZRgBIAEoEiLQAQodQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXISUgoOdW5zaWduZWRfdmFsdWUYASABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVW5zaWduZWRJbnRlZ2VySAASUgoObmVnYXRpdmVfdmFsdWUYAiABKAsyOC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTmVnYXRpdmVJbnRlZ2VySABCBwoFdmFsdWUiKwoaQ29kZWNEZXRlcm1pbmlzdGljQ2JvclRleHQSDQoFdmFsdWUYASABKAkiLAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzEg0KBXZhbHVlGAEgASgMIrEBChxDb2RlY0RldGVybWluaXN0aWNDYm9yTWFwS2V5EkcKC2ludGVnZXJfa2V5GAEgASgLMjAucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckludGVnZXJIABJBCgh0ZXh0X2tleRgCIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JUZXh0SABCBQoDa2V5Ip0BCh5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwRW50cnkSPAoDa2V5GAEgASgLMi8ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2Jvck1hcEtleRI9CgV2YWx1ZRgCIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSJdChtDb2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXkSPgoGdmFsdWVzGAEgAygLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlIl8KGUNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXASQgoHZW50cmllcxgBIAMoCzIxLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JNYXBFbnRyeSKRBAobQ29kZWNEZXRlcm1pbmlzdGljQ2JvclZhbHVlEkMKCm51bGxfdmFsdWUYASABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTnVsbEgAEkMKCmJvb2xfdmFsdWUYAiABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQm9vbEgAEkkKDWludGVnZXJfdmFsdWUYAyABKAsyMC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9ySW50ZWdlckgAEkMKCnRleHRfdmFsdWUYBCABKAsyLS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVGV4dEgAEkUKC2J5dGVzX3ZhbHVlGAUgASgLMi4ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEZXRlcm1pbmlzdGljQ2JvckJ5dGVzSAASRQoLYXJyYXlfdmFsdWUYBiABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yQXJyYXlIABJBCgltYXBfdmFsdWUYByABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yTWFwSABCBwoFdmFsdWUiZAojQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlcXVlc3QSPQoFdmFsdWUYASABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yVmFsdWUiNQoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckVuY29kZVJlc3VsdBIPCgdlbmNvZGVkGAEgASgMIjYKI0NvZGVjRGV0ZXJtaW5pc3RpY0Nib3JEZWNvZGVSZXF1ZXN0Eg8KB2VuY29kZWQYASABKAwiYwoiQ29kZWNEZXRlcm1pbmlzdGljQ2JvckRlY29kZVJlc3VsdBI9CgV2YWx1ZRgBIAEoCzIuLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JWYWx1ZSL7BgoUQ29kZWNPcGVyYXRpb25SZXN1bHQSTQoabXVsdGljb2RlY19wcmVmaXhfZm9yX25hbWUY6AcgASgLMiYucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWNvZGVjU3BlY0gAElMKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBSZXN1bHRIABJKChBtdWx0aWNvZGVjX3RhYmxlGOoHIAEoCzItLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1RhYmxlUmVzdWx0SAASRgoObXVsdGlrZXlfcGFyc2UY0A8gASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNNdWx0aWtleVBhcnNlUmVzdWx0SAASTgoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXN1bHRIABJHCg9kYWdfY2Jvcl9lbmNvZGUYuRcgASgLMisucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRW5jb2RlUmVzdWx0SAASRwoPZGFnX2Nib3JfZGVjb2RlGLoXIAEoCzIrLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckRlY29kZVJlc3VsdEgAEj4KCnBlbV9kZWNvZGUYoB8gASgLMicucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXN1bHRIABI+CgpwZW1fZW5jb2RlGKEfIAEoCzInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjUGVtRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2VuY29kZRiIJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRW5jb2RlUmVzdWx0SAASWwoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVzdWx0SABCCAoGcmVzdWx0SgUIARDoByKOAQoWQ29kZWNPcGVyYXRpb25SZXNwb25zZRI5CgZyZXN1bHQYASABKAsyJy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY09wZXJhdGlvblJlc3VsdEgAEi4KBWVycm9yGAIgASgLMh0ucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvckgAQgkKB291dGNvbWUinwcKFUNvZGVjT3BlcmF0aW9uUmVxdWVzdBJdChptdWx0aWNvZGVjX3ByZWZpeF9mb3JfbmFtZRjoByABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNQcmVmaXhGb3JOYW1lUmVxdWVzdEgAEloKGG11bHRpY29kZWNfbG9va3VwX3ByZWZpeBjpByABKAsyNS5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNMb29rdXBQcmVmaXhSZXF1ZXN0SAASSwoQbXVsdGljb2RlY190YWJsZRjqByABKAsyLi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpY29kZWNUYWJsZVJlcXVlc3RIABJHCg5tdWx0aWtleV9wYXJzZRjQDyABKAsyLC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY011bHRpa2V5UGFyc2VSZXF1ZXN0SAASTwoTZGFnX2Nib3JfdmVyaWZ5X2NpZBi4FyABKAsyLy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RhZ0Nib3JWZXJpZnlDaWRSZXF1ZXN0SAASSAoPZGFnX2Nib3JfZW5jb2RlGLkXIAEoCzIsLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGFnQ2JvckVuY29kZVJlcXVlc3RIABJICg9kYWdfY2Jvcl9kZWNvZGUYuhcgASgLMiwucmVhbGx5bWUuY29kZWMudjEuQ29kZWNEYWdDYm9yRGVjb2RlUmVxdWVzdEgAEj8KCnBlbV9kZWNvZGUYoB8gASgLMigucmVhbGx5bWUuY29kZWMudjEuQ29kZWNQZW1EZWNvZGVSZXF1ZXN0SAASPwoKcGVtX2VuY29kZRihHyABKAsyKC5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1BlbUVuY29kZVJlcXVlc3RIABJcChlkZXRlcm1pbmlzdGljX2Nib3JfZW5jb2RlGIgnIAEoCzI2LnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRGV0ZXJtaW5pc3RpY0Nib3JFbmNvZGVSZXF1ZXN0SAASXAoZZGV0ZXJtaW5pc3RpY19jYm9yX2RlY29kZRiJJyABKAsyNi5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0RldGVybWluaXN0aWNDYm9yRGVjb2RlUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoFCAEQ6Aci9gEKE0NvZGVjTXVsdGljb2RlY1NwZWMSDAoEbmFtZRgBIAEoCRIMCgRjb2RlGAIgASgMEg4KBnByZWZpeBgDIAEoDBIoCgN0YWcYBCABKA4yGy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY1RhZxJCChFrZXlfbWF0ZXJpYWxfa2luZBgFIAEoDjInLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjS2V5TWF0ZXJpYWxLaW5kEhQKDGZpeGVkX2xlbmd0aBgGIAEoDRIXCg92YXJpYWJsZV9sZW5ndGgYByABKAgSFgoOYWxnb3JpdGhtX25hbWUYCCABKAkifAobQ29kZWNNdWx0aWNvZGVjTG9va3VwUmVzdWx0EgwKBG5hbWUYASABKAkSFQoNcHJlZml4X2xlbmd0aBgCIAEoDRI4CghtZXRhZGF0YRgDIAEoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiVQoaQ29kZWNNdWx0aWNvZGVjVGFibGVSZXN1bHQSNwoHZW50cmllcxgBIAMoCzImLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjTXVsdGljb2RlY1NwZWMiogEKGENvZGVjTXVsdGlrZXlQYXJzZVJlc3VsdBISCgpjb2RlY19uYW1lGAEgASgJEhYKDmFsZ29yaXRobV9uYW1lGAIgASgJEhIKCnB1YmxpY19rZXkYAyABKAwSIgoaZXhwZWN0ZWRfcHVibGljX2tleV9sZW5ndGgYBCABKA0SIgoadmFyaWFibGVfcHVibGljX2tleV9sZW5ndGgYBSABKAgiVgobQ29kZWNEYWdDYm9yVmVyaWZ5Q2lkUmVzdWx0Eg0KBXZhbGlkGAEgASgIEhQKDGV4cGVjdGVkX2NpZBgCIAEoCRISCgphY3R1YWxfY2lkGAMgASgJIjIKFENvZGVjUGVtRGVjb2RlUmVzdWx0Eg0KBWxhYmVsGAEgASgJEgsKA2RlchgCIAEoDCJNChZDb2RlY0Jhc2VFbmNvZGluZ0Vycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iRAoNQ29kZWNQZW1FcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIkwKFUNvZGVjTXVsdGlmb3JtYXRFcnJvchIzCgZyZWFzb24YASABKA4yIy5yZWFsbHltZS5jb2RlYy52MS5Db2RlY0Vycm9yUmVhc29uIlEKGkNvZGVjQ2Fub25pY2FsaXphdGlvbkVycm9yEjMKBnJlYXNvbhgBIAEoDjIjLnJlYWxseW1lLmNvZGVjLnYxLkNvZGVjRXJyb3JSZWFzb24iSAoRQ29kZWNCYWNrZW5kRXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbiJJChJDb2RlY0JvdW5kYXJ5RXJyb3ISMwoGcmVhc29uGAEgASgOMiMucmVhbGx5bWUuY29kZWMudjEuQ29kZWNFcnJvclJlYXNvbip2ChBDb2RlY0Vycm9yT3JpZ2luEiIKHkNPREVDX0VSUk9SX09SSUdJTl9VTlNQRUNJRklFRBAAEh0KGUNPREVDX0VSUk9SX09SSUdJTl9DQUxMRVIQARIfChtDT0RFQ19FUlJPUl9PUklHSU5fUFJPVklERVIQAiqVAQoNQ29kZWNQZW1MYWJlbBIfChtDT0RFQ19QRU1fTEFCRUxfVU5TUEVDSUZJRUQQABIfChtDT0RFQ19QRU1fTEFCRUxfUFJJVkFURV9LRVkQZBIiCh5DT0RFQ19QRU1fTEFCRUxfRUNfUFJJVkFURV9LRVkQbhIeChpDT0RFQ19QRU1fTEFCRUxfUFVCTElDX0tFWRB4KnkKEkNvZGVjUGVtTGluZUVuZGluZxIlCiFDT0RFQ19QRU1fTElORV9FTkRJTkdfVU5TUEVDSUZJRUQQABIcChhDT0RFQ19QRU1fTElORV9FTkRJTkdfTEYQZBIeChpDT0RFQ19QRU1fTElORV9FTkRJTkdfQ1JMRhBuKuABChRDb2RlY0tleU1hdGVyaWFsS2luZBInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9VTlNQRUNJRklFRBAAEiYKIkNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1BVQkxJQ19LRVkQARInCiNDT0RFQ19LRVlfTUFURVJJQUxfS0lORF9QUklWQVRFX0tFWRACEikKJUNPREVDX0tFWV9NQVRFUklBTF9LSU5EX1NZTU1FVFJJQ19LRVkQAxIjCh9DT0RFQ19LRVlfTUFURVJJQUxfS0lORF9OT1RfS0VZEAQqlwEKCENvZGVjVGFnEhkKFUNPREVDX1RBR19VTlNQRUNJRklFRBAAEhgKFENPREVDX1RBR19FTkNSWVBUSU9OEAESEQoNQ09ERUNfVEFHX0tFWRACEhIKDkNPREVDX1RBR19IQVNIEAMSFwoTQ09ERUNfVEFHX01VTFRJSEFTSBAEEhYKEkNPREVDX1RBR19NVUxUSUtFWRAFKrQPChBDb2RlY0Vycm9yUmVhc29uEiIKHkNPREVDX0VSUk9SX1JFQVNPTl9VTlNQRUNJRklFRBAAEi0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX1VOU1VQUE9SVEVEX0NPREVDEGQSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9FTkNPRElORxBlEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfTEVOR1RIEGYSKwonQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5QVVRfVE9PX0xBUkdFEGcSLAooQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfT1VUUFVUX1RPT19MQVJHRRBoEioKJkNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX0lOVkFMSURfQkFTRTY0EG4SLQopQ09ERUNfRVJST1JfUkVBU09OX0JBU0VfSU5WQUxJRF9CQVNFNjRVUkwQbxInCiNDT0RFQ19FUlJPUl9SRUFTT05fQkFTRV9JTlZBTElEX0hFWBB4Ei0KKUNPREVDX0VSUk9SX1JFQVNPTl9CQVNFX05PTl9DQU5PTklDQUxfSEVYEHkSLAonQ09ERUNfRVJST1JfUkVBU09OX1BFTV9JTlZBTElEX0JPVU5EQVJZEMgBEioKJUNPREVDX0VSUk9SX1JFQVNPTl9QRU1fTEFCRUxfTUlTTUFUQ0gQyQESLQooQ09ERUNfRVJST1JfUkVBU09OX1BFTV9VTlNVUFBPUlRFRF9MQUJFTBDKARIoCiNDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQk9EWRDLARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0RFUl9UT09fTEFSR0UQzAESJwoiQ09ERUNfRVJST1JfUkVBU09OX1BFTV9FTVBUWV9JTlBVVBDNARIlCiBDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0VNUFRZX0RFUhDOARIrCiZDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfT1BUSU9OUxDPARIpCiRDT0RFQ19FUlJPUl9SRUFTT05fUEVNX01JU1NJTkdfQkVHSU4Q0AESJwoiQ09ERUNfRVJST1JfUkVBU09OX1BFTV9NSVNTSU5HX0VORBDRARIqCiVDT0RFQ19FUlJPUl9SRUFTT05fUEVNX0lOVkFMSURfQkFTRTY0ENIBEjwKN0NPREVDX0VSUk9SX1JFQVNPTl9NVUxUSUZPUk1BVF9JTlZBTElEX01VTFRJQkFTRV9QUkVGSVgQrAISPQo4Q09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX0lOVkFMSURfTVVMVElDT0RFQ19QUkVGSVgQrQISNgoxQ09ERUNfRVJST1JfUkVBU09OX01VTFRJRk9STUFUX1VOS05PV05fTVVMVElDT0RFQxCuAhI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fTVVMVElGT1JNQVRfSU5WQUxJRF9NVUxUSUtFWRCvAhIuCilDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVkFMSURfQ0JPUhCQAxI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX05PTl9DQU5PTklDQUxfQ0JPUhCRAxIuCilDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVkFMSURfSlNPThCSAxI0Ci9DT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX05PTl9DQU5PTklDQUxfSlNPThCTAxIqCiVDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0lOVEVSTkFMEJQDEjoKNUNPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfTk9OX01JTklNQUxfQ0JPUl9JTlRFR0VSEJUDEjgKM0NPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfRFVQTElDQVRFX0NCT1JfTUFQX0tFWRCWAxI8CjdDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX0NCT1JfTUFQX0tFWVNfT1VUX09GX09SREVSEJcDEjUKMENPREVDX0VSUk9SX1JFQVNPTl9DQU5PTklDQUxfQ0JPUl9UUkFJTElOR19CWVRFUxCYAxI4CjNDT0RFQ19FUlJPUl9SRUFTT05fQ0FOT05JQ0FMX1VOU1VQUE9SVEVEX0lQTERfVkFMVUUQmQMSKAojQ09ERUNfRVJST1JfUkVBU09OX0JBQ0tFTkRfSU5URVJOQUwQ9AMSMwouQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX01BTEZPUk1FRF9QUk9UT0JVRhDYBBIvCipDT0RFQ19FUlJPUl9SRUFTT05fQk9VTkRBUllfTUFMRk9STUVEX0pTT04Q2QQSOAozQ09ERUNfRVJST1JfUkVBU09OX0JPVU5EQVJZX1JFU09VUkNFX0xJTUlUX0VYQ0VFREVEENoEEjIKLUNPREVDX0VSUk9SX1JFQVNPTl9CT1VOREFSWV9NSVNTSU5HX09QRVJBVElPThDbBCIECHAQcEImChJtZS5yZWFsbHkuY29kZWMudjFQAboCDVJlYWxseU1lUHJvdG9iBnByb3RvMw");
|
|
9
9
|
/**
|
|
10
10
|
* Describes the message reallyme.codec.v1.CodecError.
|
|
11
11
|
* Use `create(CodecErrorSchema)` to create a new message.
|
|
@@ -464,6 +464,30 @@ export var CodecErrorReason;
|
|
|
464
464
|
* @generated from enum value: CODEC_ERROR_REASON_PEM_DER_TOO_LARGE = 204;
|
|
465
465
|
*/
|
|
466
466
|
CodecErrorReason[CodecErrorReason["PEM_DER_TOO_LARGE"] = 204] = "PEM_DER_TOO_LARGE";
|
|
467
|
+
/**
|
|
468
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_INPUT = 205;
|
|
469
|
+
*/
|
|
470
|
+
CodecErrorReason[CodecErrorReason["PEM_EMPTY_INPUT"] = 205] = "PEM_EMPTY_INPUT";
|
|
471
|
+
/**
|
|
472
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_EMPTY_DER = 206;
|
|
473
|
+
*/
|
|
474
|
+
CodecErrorReason[CodecErrorReason["PEM_EMPTY_DER"] = 206] = "PEM_EMPTY_DER";
|
|
475
|
+
/**
|
|
476
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_OPTIONS = 207;
|
|
477
|
+
*/
|
|
478
|
+
CodecErrorReason[CodecErrorReason["PEM_INVALID_OPTIONS"] = 207] = "PEM_INVALID_OPTIONS";
|
|
479
|
+
/**
|
|
480
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_BEGIN = 208;
|
|
481
|
+
*/
|
|
482
|
+
CodecErrorReason[CodecErrorReason["PEM_MISSING_BEGIN"] = 208] = "PEM_MISSING_BEGIN";
|
|
483
|
+
/**
|
|
484
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_MISSING_END = 209;
|
|
485
|
+
*/
|
|
486
|
+
CodecErrorReason[CodecErrorReason["PEM_MISSING_END"] = 209] = "PEM_MISSING_END";
|
|
487
|
+
/**
|
|
488
|
+
* @generated from enum value: CODEC_ERROR_REASON_PEM_INVALID_BASE64 = 210;
|
|
489
|
+
*/
|
|
490
|
+
CodecErrorReason[CodecErrorReason["PEM_INVALID_BASE64"] = 210] = "PEM_INVALID_BASE64";
|
|
467
491
|
/**
|
|
468
492
|
* Multiformats and key envelopes.
|
|
469
493
|
*
|
|
@@ -504,6 +528,26 @@ export var CodecErrorReason;
|
|
|
504
528
|
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_INTERNAL = 404;
|
|
505
529
|
*/
|
|
506
530
|
CodecErrorReason[CodecErrorReason["CANONICAL_INTERNAL"] = 404] = "CANONICAL_INTERNAL";
|
|
531
|
+
/**
|
|
532
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_NON_MINIMAL_CBOR_INTEGER = 405;
|
|
533
|
+
*/
|
|
534
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_NON_MINIMAL_CBOR_INTEGER"] = 405] = "CANONICAL_NON_MINIMAL_CBOR_INTEGER";
|
|
535
|
+
/**
|
|
536
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_DUPLICATE_CBOR_MAP_KEY = 406;
|
|
537
|
+
*/
|
|
538
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_DUPLICATE_CBOR_MAP_KEY"] = 406] = "CANONICAL_DUPLICATE_CBOR_MAP_KEY";
|
|
539
|
+
/**
|
|
540
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER = 407;
|
|
541
|
+
*/
|
|
542
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER"] = 407] = "CANONICAL_CBOR_MAP_KEYS_OUT_OF_ORDER";
|
|
543
|
+
/**
|
|
544
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_CBOR_TRAILING_BYTES = 408;
|
|
545
|
+
*/
|
|
546
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_CBOR_TRAILING_BYTES"] = 408] = "CANONICAL_CBOR_TRAILING_BYTES";
|
|
547
|
+
/**
|
|
548
|
+
* @generated from enum value: CODEC_ERROR_REASON_CANONICAL_UNSUPPORTED_IPLD_VALUE = 409;
|
|
549
|
+
*/
|
|
550
|
+
CodecErrorReason[CodecErrorReason["CANONICAL_UNSUPPORTED_IPLD_VALUE"] = 409] = "CANONICAL_UNSUPPORTED_IPLD_VALUE";
|
|
507
551
|
/**
|
|
508
552
|
* Backend failures.
|
|
509
553
|
*
|
package/dist/proto.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
export { CodecBackendErrorSchema, CodecBaseEncodingErrorSchema, CodecCanonicalizationErrorSchema, CodecBoundaryErrorSchema, CodecDagCborDecodeRequestSchema, CodecDagCborDecodeResultSchema, CodecDagCborEncodeRequestSchema, CodecDagCborEncodeResultSchema, CodecDagCborVerifyCidRequestSchema, CodecDagCborVerifyCidResultSchema, CodecDeterministicCborArraySchema, CodecDeterministicCborBoolSchema, CodecDeterministicCborBytesSchema, CodecDeterministicCborDecodeRequestSchema, CodecDeterministicCborDecodeResultSchema, CodecDeterministicCborEncodeRequestSchema, CodecDeterministicCborEncodeResultSchema, CodecDeterministicCborIntegerSchema, CodecDeterministicCborMapEntrySchema, CodecDeterministicCborMapKeySchema, CodecDeterministicCborMapSchema, CodecDeterministicCborNegativeIntegerSchema, CodecDeterministicCborNullSchema, CodecDeterministicCborTextSchema, CodecDeterministicCborUnsignedIntegerSchema, CodecDeterministicCborValueSchema, CodecErrorReason, CodecErrorReasonSchema, CodecErrorOrigin, CodecErrorOriginSchema, CodecErrorSchema, CodecKeyMaterialKind, CodecKeyMaterialKindSchema, CodecMultiformatErrorSchema, CodecMulticodecLookupResultSchema, CodecMulticodecLookupPrefixRequestSchema, CodecMulticodecPrefixForNameRequestSchema, CodecMulticodecSpecSchema, CodecMulticodecTableRequestSchema, CodecMulticodecTableResultSchema, CodecMultikeyParseRequestSchema, CodecMultikeyParseResultSchema, CodecOperationRequestSchema, CodecOperationResponseSchema, CodecOperationResultSchema, CodecPemDecodeOptionsSchema, CodecPemDecodeRequestSchema, CodecPemEncodeOptionsSchema, CodecPemEncodeRequestSchema, CodecPemEncodeResultSchema, CodecPemErrorSchema, CodecPemLabel, CodecPemLabelSchema, CodecPemLineEnding, CodecPemLineEndingSchema, CodecPemDecodeResultSchema, CodecTag, CodecTagSchema, file_reallyme_codec_v1_codec, } from "./proto/generated/reallyme/codec/v1/codec_pb.js";
|
package/dist/readOutput.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export declare const ensureBytesInput: (value: Uint8Array) => void;
|
|
|
6
6
|
* provider or protobuf serializer consumes another.
|
|
7
7
|
*/
|
|
8
8
|
export declare const snapshotBoundedBytesInput: (value: Uint8Array, maximumLength?: number) => Uint8Array;
|
|
9
|
+
/** Copy provider-owned bytes without invoking methods supplied by the provider. */
|
|
10
|
+
export declare const snapshotProviderBytes: (value: Uint8Array, maximumLength?: number) => Uint8Array;
|
|
11
|
+
/** Wipes the private copy even when the provider rejects the request. */
|
|
12
|
+
export declare const withSnapshotBytesInput: <T>(value: Uint8Array, action: (snapshot: Uint8Array) => T) => T;
|
|
9
13
|
export declare const ensureStringInput: (value: string) => void;
|
|
10
14
|
export declare const ensureStringValue: (value: string) => void;
|
|
11
15
|
export declare const readBooleanOutput: (value: unknown) => boolean;
|
package/dist/readOutput.js
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText:
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 ReallyMe LLC
|
|
2
2
|
//
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
4
4
|
import { MAX_CODEC_FFI_INPUT_BYTES, MAX_CODEC_FFI_OUTPUT_BYTES, requireBoundaryUtf8String, } from "./boundary.js";
|
|
5
5
|
import { ReallyMeCodecError } from "./errors.js";
|
|
6
6
|
const uint8ArraySubarray = Uint8Array.prototype.subarray;
|
|
7
7
|
const uint8ArraySet = Uint8Array.prototype.set;
|
|
8
|
+
const byteInputReservedProperties = [
|
|
9
|
+
"constructor",
|
|
10
|
+
"length",
|
|
11
|
+
"byteLength",
|
|
12
|
+
"byteOffset",
|
|
13
|
+
"buffer",
|
|
14
|
+
"subarray",
|
|
15
|
+
];
|
|
8
16
|
const readProviderProperty = (object, name, allowMissing = false) => {
|
|
9
17
|
try {
|
|
10
18
|
const descriptor = Object.getOwnPropertyDescriptor(object, name);
|
|
@@ -36,9 +44,28 @@ const requireBoundedProviderString = (value, allowEmpty) => {
|
|
|
36
44
|
}
|
|
37
45
|
};
|
|
38
46
|
export const ensureBytesInput = (value) => {
|
|
39
|
-
|
|
40
|
-
!
|
|
41
|
-
|
|
47
|
+
try {
|
|
48
|
+
if (!(value instanceof Uint8Array) ||
|
|
49
|
+
!ArrayBuffer.isView(value) ||
|
|
50
|
+
Object.getPrototypeOf(value) !== Uint8Array.prototype) {
|
|
51
|
+
throw new ReallyMeCodecError("invalid-input");
|
|
52
|
+
}
|
|
53
|
+
// Own metadata can hide the actual view length; an own constructor can
|
|
54
|
+
// change subarray's species and substitute different bytes during copying.
|
|
55
|
+
// Reject overrides without invoking getters before crossing into WASM.
|
|
56
|
+
for (const property of byteInputReservedProperties) {
|
|
57
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, property);
|
|
58
|
+
// A data property naming the ordinary constructor preserves the same
|
|
59
|
+
// species behavior as an unmodified view and was accepted previously.
|
|
60
|
+
if (property === "constructor" && descriptor?.value === Uint8Array) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (descriptor !== undefined) {
|
|
64
|
+
throw new ReallyMeCodecError("invalid-input");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (_error) {
|
|
42
69
|
throw new ReallyMeCodecError("invalid-input");
|
|
43
70
|
}
|
|
44
71
|
};
|
|
@@ -78,6 +105,25 @@ export const snapshotBoundedBytesInput = (value, maximumLength = MAX_CODEC_FFI_I
|
|
|
78
105
|
throw new ReallyMeCodecError("invalid-input");
|
|
79
106
|
}
|
|
80
107
|
};
|
|
108
|
+
/** Copy provider-owned bytes without invoking methods supplied by the provider. */
|
|
109
|
+
export const snapshotProviderBytes = (value, maximumLength = MAX_CODEC_FFI_OUTPUT_BYTES) => {
|
|
110
|
+
try {
|
|
111
|
+
return snapshotBoundedBytesInput(value, maximumLength);
|
|
112
|
+
}
|
|
113
|
+
catch (_error) {
|
|
114
|
+
throw new ReallyMeCodecError("provider-failure");
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/** Wipes the private copy even when the provider rejects the request. */
|
|
118
|
+
export const withSnapshotBytesInput = (value, action) => {
|
|
119
|
+
const snapshot = snapshotBoundedBytesInput(value);
|
|
120
|
+
try {
|
|
121
|
+
return action(snapshot);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
snapshot.fill(0);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
81
127
|
export const ensureStringInput = (value) => {
|
|
82
128
|
if (typeof value !== "string" || value.length === 0) {
|
|
83
129
|
throw new ReallyMeCodecError("invalid-input");
|