@actuarial-ts/compliance 0.6.0 → 0.7.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/README.md +19 -9
- package/dist/bundle.d.ts +1 -1
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +163 -21
- package/dist/bundle.js.map +1 -1
- package/dist/diagnosticArtifactStream.d.ts +30 -0
- package/dist/diagnosticArtifactStream.d.ts.map +1 -0
- package/dist/diagnosticArtifactStream.js +128 -0
- package/dist/diagnosticArtifactStream.js.map +1 -0
- package/dist/diagnosticByteSource.d.ts +10 -0
- package/dist/diagnosticByteSource.d.ts.map +1 -0
- package/dist/diagnosticByteSource.js +70 -0
- package/dist/diagnosticByteSource.js.map +1 -0
- package/dist/diagnosticByteView.d.ts +3 -0
- package/dist/diagnosticByteView.d.ts.map +1 -0
- package/dist/diagnosticByteView.js +27 -0
- package/dist/diagnosticByteView.js.map +1 -0
- package/dist/diagnosticCompactRun.d.ts +43 -0
- package/dist/diagnosticCompactRun.d.ts.map +1 -0
- package/dist/diagnosticCompactRun.js +253 -0
- package/dist/diagnosticCompactRun.js.map +1 -0
- package/dist/diagnosticReplayFrames.d.ts +10 -0
- package/dist/diagnosticReplayFrames.d.ts.map +1 -0
- package/dist/diagnosticReplayFrames.js +99 -0
- package/dist/diagnosticReplayFrames.js.map +1 -0
- package/dist/diagnosticReplayProtocol.d.ts +17 -0
- package/dist/diagnosticReplayProtocol.d.ts.map +1 -0
- package/dist/diagnosticReplayProtocol.js +98 -0
- package/dist/diagnosticReplayProtocol.js.map +1 -0
- package/dist/diagnosticReplayReader.d.ts +41 -0
- package/dist/diagnosticReplayReader.d.ts.map +1 -0
- package/dist/diagnosticReplayReader.js +346 -0
- package/dist/diagnosticReplayReader.js.map +1 -0
- package/dist/diagnosticReplayValue.d.ts +34 -0
- package/dist/diagnosticReplayValue.d.ts.map +1 -0
- package/dist/diagnosticReplayValue.js +269 -0
- package/dist/diagnosticReplayValue.js.map +1 -0
- package/dist/diagnosticReplayWriter.d.ts +25 -0
- package/dist/diagnosticReplayWriter.d.ts.map +1 -0
- package/dist/diagnosticReplayWriter.js +148 -0
- package/dist/diagnosticReplayWriter.js.map +1 -0
- package/dist/diagnosticRun.d.ts +52 -29
- package/dist/diagnosticRun.d.ts.map +1 -1
- package/dist/diagnosticRun.js +564 -174
- package/dist/diagnosticRun.js.map +1 -1
- package/dist/diagnosticRunEvidence.d.ts +18 -0
- package/dist/diagnosticRunEvidence.d.ts.map +1 -0
- package/dist/diagnosticRunEvidence.js +195 -0
- package/dist/diagnosticRunEvidence.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +47 -6
- package/dist/ledger.js.map +1 -1
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +27 -3
- package/dist/metadata.js.map +1 -1
- package/dist/sha256Stream.d.ts +6 -0
- package/dist/sha256Stream.d.ts.map +1 -0
- package/dist/sha256Stream.js +103 -0
- package/dist/sha256Stream.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -5
- package/src/bundle.ts +272 -32
- package/src/diagnosticArtifactStream.ts +148 -0
- package/src/diagnosticByteSource.ts +82 -0
- package/src/diagnosticByteView.ts +27 -0
- package/src/diagnosticCompactRun.ts +462 -0
- package/src/diagnosticReplayFrames.ts +99 -0
- package/src/diagnosticReplayProtocol.ts +99 -0
- package/src/diagnosticReplayReader.ts +428 -0
- package/src/diagnosticReplayValue.ts +269 -0
- package/src/diagnosticReplayWriter.ts +190 -0
- package/src/diagnosticRun.ts +1030 -93
- package/src/diagnosticRunEvidence.ts +391 -0
- package/src/index.ts +10 -0
- package/src/ledger.ts +59 -8
- package/src/metadata.ts +48 -7
- package/src/sha256Stream.ts +108 -0
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Documentation, judgment, provenance, and reproducibility primitives for actuarial-ts. The package is designed to support compliance work under applicable ASOPs; it neither determines compliance nor replaces the actuary’s review.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npm install @actuarial-ts/compliance@0.
|
|
6
|
+
npm install @actuarial-ts/compliance@0.7.0 @actuarial-ts/core@0.7.0 @actuarial-ts/data@0.7.0 @actuarial-ts/interchange@0.7.0
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Node 20+, ESM.
|
|
@@ -19,14 +19,16 @@ if (outcome.status !== "completed") throw new Error(`diagnostics blocked at ${ou
|
|
|
19
19
|
|
|
20
20
|
const provenance = await createDiagnosticRunIdentity({
|
|
21
21
|
completedRun: outcome,
|
|
22
|
-
|
|
22
|
+
inputArtifacts: [
|
|
23
23
|
{ id: "loss-run", scope: "input", assurance: "sdk-computed", bytes: lossRunBytes },
|
|
24
24
|
{ id: "exposures", scope: "input", assurance: "sdk-computed", bytes: exposureBytes },
|
|
25
|
-
{ id: "source-archive", scope: "input", assurance: "caller-declared", algorithm: "
|
|
26
|
-
{ id: "transform-script", scope: "preparation", assurance: "caller-declared", algorithm: "git-sha", value: transformCommit, byteLength: 0 },
|
|
25
|
+
{ id: "source-archive", scope: "input", assurance: "caller-declared", algorithm: "sha256", value: archiveSha256 },
|
|
27
26
|
],
|
|
28
|
-
|
|
29
|
-
{
|
|
27
|
+
preparationArtifacts: [
|
|
28
|
+
{ id: "transform-script", scope: "preparation", assurance: "caller-declared", algorithm: "git-sha", value: transformCommit },
|
|
29
|
+
],
|
|
30
|
+
preparationLineage: [
|
|
31
|
+
{ outputArtifactId: "loss-run", inputArtifactIds: ["source-archive"], transformationArtifactIds: ["transform-script"] },
|
|
30
32
|
],
|
|
31
33
|
});
|
|
32
34
|
|
|
@@ -34,7 +36,11 @@ const bundle = createBundle({
|
|
|
34
36
|
inputs,
|
|
35
37
|
parameters,
|
|
36
38
|
results: outcome.result,
|
|
37
|
-
sdkVersions: {
|
|
39
|
+
sdkVersions: {
|
|
40
|
+
"@actuarial-ts/core": provenance.manifest.engine.packages.core,
|
|
41
|
+
"@actuarial-ts/data": provenance.manifest.engine.packages.data,
|
|
42
|
+
"@actuarial-ts/compliance": provenance.manifest.engine.packages.compliance,
|
|
43
|
+
},
|
|
38
44
|
createdAt: "2026-09-03T00:00:00Z",
|
|
39
45
|
diagnosticRuns: [provenance],
|
|
40
46
|
wrap: { triangles: [], selections: [], results: [] },
|
|
@@ -47,13 +53,17 @@ The manifest contains the complete normalized definition, preparation identity a
|
|
|
47
53
|
|
|
48
54
|
The returned `VerifiedDiagnosticRunProvenance` is frozen and registered in private owner state. A cast, clone, or parsed JSON object cannot author a new bundle. Use `verifyDiagnosticRunIdentity(stored, sameRunAndEvidence)` to regenerate and authenticate stored provenance; it reports the first mismatching JSON path and returns regenerated authentic review text rather than trusting stored prose.
|
|
49
55
|
|
|
50
|
-
Wrapped bundles include one deduplicated typed `diagnostic-definition` document per definition and require the outer SDK versions/generator to agree with every run manifest. FNV-1a/JCS tags are deterministic integrity aids, not cryptographic authentication.
|
|
56
|
+
Wrapped bundles include one deduplicated typed `diagnostic-definition` document per definition and require the outer SDK versions/generator to agree with every run manifest. `verifyBundle` also recompiles serialized definitions and rechecks definition, review, result, run, and binding fingerprints plus the typed definition mirror; merely re-stamping inconsistent JSON cannot make it verify. FNV-1a/JCS tags are deterministic integrity aids, not cryptographic authentication.
|
|
51
57
|
|
|
52
58
|
Material host judgments worth recording in the assumption ledger include amount basis and limit application, expense treatment, missingness, exposure timing, period convention, filters/grouping, communicated scale, and any policy that permits a failed review. Helpers never invent an actuary’s rationale.
|
|
53
59
|
|
|
54
60
|
The package also provides estimate metadata, assumption ledgers, ASOP No. 41 draft disclosure generation, ASOP No. 56 model cards, actual-versus-expected roll-forward, and canonical reproducibility bundles.
|
|
55
61
|
|
|
56
|
-
See the [formula catalog](https://github.com/yerromnitsuj/actng/blob/v0.
|
|
62
|
+
See the [formula catalog](https://github.com/yerromnitsuj/actng/blob/v0.7.0/docs/reference/diagnostic-formulas.md) and [migration guide](https://github.com/yerromnitsuj/actng/blob/v0.7.0/docs/migrations/0.6-generalized-diagnostics.md).
|
|
63
|
+
|
|
64
|
+
## Compact provenance and replay streams
|
|
65
|
+
|
|
66
|
+
Version 0.7.0 adds separately authenticated compact provenance and a versioned replay stream. They retain complete audit evidence while avoiding archive-sized identity objects/strings; this is not a dataset-capacity certification. In the source checkout, `docs/reference/diagnostic-replay-stream.md` describes the APIs, host resource limits, wire version, independent verification, and assurance boundaries; that reference document is not part of the npm package. Existing eager provenance and interchange BundleDoc APIs remain unchanged.
|
|
57
67
|
|
|
58
68
|
## License
|
|
59
69
|
|
package/dist/bundle.d.ts
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
import { canonicalJson, fnv1a64 } from "@actuarial-ts/core";
|
|
29
29
|
import { BundleDoc, MethodResultDoc, SelectionDoc, StochasticResultDoc, TriangleDoc } from "@actuarial-ts/interchange";
|
|
30
30
|
import type { VerifiedDiagnosticRunProvenance } from "./diagnosticRun.js";
|
|
31
|
-
export { ComplianceError, COMPLIANCE_ERROR_CODES, type ComplianceErrorCode } from "./errors.js";
|
|
31
|
+
export { ComplianceError, COMPLIANCE_ERROR_CODES, type ComplianceErrorCode, } from "./errors.js";
|
|
32
32
|
export { COMPLIANCE_PACKAGE_VERSION } from "./version.js";
|
|
33
33
|
export { canonicalJson, fnv1a64 };
|
|
34
34
|
/**
|
package/dist/bundle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,aAAa,EACb,OAAO,EAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,SAAS,EACT,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,+BAA+B,EAChC,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;GAIG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,UAA2B,CAAC;AAE3E;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,eAAe,GAAG,mBAAmB,CAAC,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,gGAAgG;IAChG,MAAM,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,UAAU,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,qHAAqH;IACrH,cAAc,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE;;;;OAIG;IACH,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,GAAG;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACnD,mBAAmB,CAAC;AACvB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;AA8H9E,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AA4OD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,EAChD,YAAY,EAAE,OAAO,GACpB,kBAAkB,CAIpB"}
|
package/dist/bundle.js
CHANGED
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
* ASOP No. 41 (documentation and reproducibility of the analysis);
|
|
26
26
|
* responsibility for compliance remains with the credentialed actuary.
|
|
27
27
|
*/
|
|
28
|
-
import { canonicalJson, fnv1a64 } from "@actuarial-ts/core";
|
|
29
|
-
import { INTERCHANGE_SPEC_VERSION, diagnosticDefinitionToDoc, } from "@actuarial-ts/interchange";
|
|
30
|
-
import { assertVerifiedDiagnosticRunProvenance, verifiedDefinitionForBundle } from "./diagnosticRun.js";
|
|
28
|
+
import { canonicalJson, fnv1a64, isDiagnosticPlainRecord, } from "@actuarial-ts/core";
|
|
29
|
+
import { INTERCHANGE_SPEC_VERSION, diagnosticDefinitionToDoc, docToDiagnosticDefinition, } from "@actuarial-ts/interchange";
|
|
30
|
+
import { assertVerifiedDiagnosticRunProvenance, serializedDiagnosticRunMismatch, verifiedDefinitionForBundle, } from "./diagnosticRun.js";
|
|
31
31
|
import { ComplianceError } from "./errors.js";
|
|
32
32
|
import { COMPLIANCE_PACKAGE_VERSION } from "./version.js";
|
|
33
|
-
export { ComplianceError, COMPLIANCE_ERROR_CODES } from "./errors.js";
|
|
33
|
+
export { ComplianceError, COMPLIANCE_ERROR_CODES, } from "./errors.js";
|
|
34
34
|
export { COMPLIANCE_PACKAGE_VERSION } from "./version.js";
|
|
35
35
|
export { canonicalJson, fnv1a64 };
|
|
36
36
|
/**
|
|
@@ -59,16 +59,32 @@ export function createBundle(input) {
|
|
|
59
59
|
if (input.diagnosticRuns !== undefined) {
|
|
60
60
|
for (const run of input.diagnosticRuns)
|
|
61
61
|
assertVerifiedDiagnosticRunProvenance(run);
|
|
62
|
+
const seenBindings = new Set();
|
|
63
|
+
for (const [runIndex, run] of input.diagnosticRuns.entries()) {
|
|
64
|
+
if (seenBindings.has(run.runResultFingerprint))
|
|
65
|
+
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Duplicate diagnostic run-result fingerprint", `$.diagnosticRuns[${runIndex}].runResultFingerprint`);
|
|
66
|
+
seenBindings.add(run.runResultFingerprint);
|
|
67
|
+
}
|
|
62
68
|
if (input.diagnosticRuns.length > 0) {
|
|
63
|
-
|
|
69
|
+
if (!isDiagnosticPlainRecord(input.sdkVersions))
|
|
70
|
+
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Diagnostic bundles require a plain SDK-version map", "$.sdkVersions");
|
|
71
|
+
const expected = input.diagnosticRuns[0].manifest.engine.packages;
|
|
64
72
|
for (const [runIndex, run] of input.diagnosticRuns.entries()) {
|
|
65
|
-
if (canonicalJson(run.manifest.
|
|
66
|
-
|
|
73
|
+
if (canonicalJson(run.manifest.engine.packages) !==
|
|
74
|
+
canonicalJson(expected))
|
|
75
|
+
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Diagnostic runs disagree on SDK package versions", `$.diagnosticRuns[${runIndex}].manifest.engine.packages`);
|
|
67
76
|
}
|
|
68
|
-
for (const [name, version] of Object.entries(
|
|
77
|
+
for (const [name, version] of Object.entries({
|
|
78
|
+
"@actuarial-ts/core": expected.core,
|
|
79
|
+
"@actuarial-ts/data": expected.data,
|
|
80
|
+
"@actuarial-ts/compliance": expected.compliance,
|
|
81
|
+
}))
|
|
69
82
|
if (input.sdkVersions[name] !== version)
|
|
70
83
|
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", `Outer sdkVersions must record ${name} at ${version}`, `$.sdkVersions.${name}`);
|
|
71
|
-
if (input.wrap !== undefined &&
|
|
84
|
+
if (input.wrap !== undefined &&
|
|
85
|
+
input.generator !== undefined &&
|
|
86
|
+
(input.generator.name !== "@actuarial-ts/compliance" ||
|
|
87
|
+
input.generator.version !== COMPLIANCE_PACKAGE_VERSION))
|
|
72
88
|
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", "Wrapped diagnostic bundles require the actual compliance generator stamp", "$.generator");
|
|
73
89
|
}
|
|
74
90
|
body["diagnosticRuns"] = input.diagnosticRuns;
|
|
@@ -80,27 +96,43 @@ export function createBundle(input) {
|
|
|
80
96
|
// The inner record is carried opaquely as the `bundle` segment; the outer
|
|
81
97
|
// tag is fnv1a64(canonicalJson({ bundle, interchange })) — exactly
|
|
82
98
|
// interchange's semanticBodyOf for kind "bundle" (spec 3.2).
|
|
83
|
-
const bundleSegment = {
|
|
99
|
+
const bundleSegment = {
|
|
100
|
+
hash: inner.hash,
|
|
101
|
+
payload: inner.payload,
|
|
102
|
+
};
|
|
84
103
|
const definitions = new Map();
|
|
85
104
|
for (const run of input.diagnosticRuns ?? []) {
|
|
86
105
|
const compiled = verifiedDefinitionForBundle(run);
|
|
87
|
-
definitions.set(run.
|
|
106
|
+
definitions.set(run.definition.identities.definition, diagnosticDefinitionToDoc(compiled, {
|
|
88
107
|
createdAt: input.createdAt,
|
|
89
|
-
generator: {
|
|
108
|
+
generator: {
|
|
109
|
+
name: "@actuarial-ts/compliance",
|
|
110
|
+
version: COMPLIANCE_PACKAGE_VERSION,
|
|
111
|
+
},
|
|
90
112
|
}));
|
|
91
113
|
}
|
|
92
114
|
const interchange = {
|
|
93
115
|
triangles: [...input.wrap.triangles],
|
|
94
116
|
selections: [...input.wrap.selections],
|
|
95
117
|
results: [...input.wrap.results],
|
|
96
|
-
...(definitions.size === 0
|
|
118
|
+
...(definitions.size === 0
|
|
119
|
+
? {}
|
|
120
|
+
: {
|
|
121
|
+
diagnosticDefinitions: [...definitions.values()].sort((a, b) => a.diagnosticDefinition.identities.definition <
|
|
122
|
+
b.diagnosticDefinition.identities.definition
|
|
123
|
+
? -1
|
|
124
|
+
: 1),
|
|
125
|
+
}),
|
|
97
126
|
};
|
|
98
127
|
const wrapped = {
|
|
99
128
|
interchangeVersion: WRAPPED_BUNDLE_INTERCHANGE_VERSION,
|
|
100
129
|
kind: "bundle",
|
|
101
130
|
generator: input.generator
|
|
102
131
|
? { ...input.generator }
|
|
103
|
-
: {
|
|
132
|
+
: {
|
|
133
|
+
name: "@actuarial-ts/compliance",
|
|
134
|
+
version: COMPLIANCE_PACKAGE_VERSION,
|
|
135
|
+
},
|
|
104
136
|
createdAt: input.createdAt,
|
|
105
137
|
bundle: bundleSegment,
|
|
106
138
|
interchange,
|
|
@@ -117,10 +149,13 @@ function isPlainObject(value) {
|
|
|
117
149
|
/** First differing path between two canonicalizable structures, or null when equal. */
|
|
118
150
|
function firstDifference(stored, rerun, path) {
|
|
119
151
|
if (isPlainObject(stored) && isPlainObject(rerun)) {
|
|
120
|
-
const keys = [
|
|
152
|
+
const keys = [
|
|
153
|
+
...new Set([...Object.keys(stored), ...Object.keys(rerun)]),
|
|
154
|
+
].sort();
|
|
121
155
|
for (const key of keys) {
|
|
122
156
|
const keyPath = `${path}.${key}`;
|
|
123
|
-
if (!(key
|
|
157
|
+
if (!Object.prototype.hasOwnProperty.call(stored, key) ||
|
|
158
|
+
!Object.prototype.hasOwnProperty.call(rerun, key))
|
|
124
159
|
return keyPath;
|
|
125
160
|
const diff = firstDifference(stored[key], rerun[key], keyPath);
|
|
126
161
|
if (diff !== null)
|
|
@@ -159,12 +194,44 @@ function verifyUnwrapped(bundle, rerunResults) {
|
|
|
159
194
|
if (!isPlainObject(stored) || !("results" in stored)) {
|
|
160
195
|
throw new ComplianceError("BAD_BUNDLE", 'bundle payload has no "results" segment');
|
|
161
196
|
}
|
|
197
|
+
if (Object.prototype.hasOwnProperty.call(stored, "diagnosticRuns")) {
|
|
198
|
+
if (!Array.isArray(stored["diagnosticRuns"]))
|
|
199
|
+
throw new ComplianceError("BAD_BUNDLE", 'bundle payload "diagnosticRuns" must be an array');
|
|
200
|
+
const seen = new Set();
|
|
201
|
+
for (const [index, run] of stored["diagnosticRuns"].entries()) {
|
|
202
|
+
const path = `$.diagnosticRuns[${index}]`;
|
|
203
|
+
const mismatch = serializedDiagnosticRunMismatch(run, path);
|
|
204
|
+
if (mismatch !== null)
|
|
205
|
+
return { reproduced: false, mismatchPath: mismatch };
|
|
206
|
+
const fingerprint = run["runResultFingerprint"];
|
|
207
|
+
if (seen.has(fingerprint))
|
|
208
|
+
return {
|
|
209
|
+
reproduced: false,
|
|
210
|
+
mismatchPath: `${path}.runResultFingerprint`,
|
|
211
|
+
};
|
|
212
|
+
seen.add(fingerprint);
|
|
213
|
+
const packages = run.manifest.engine
|
|
214
|
+
.packages;
|
|
215
|
+
for (const [name, shortName] of [
|
|
216
|
+
["@actuarial-ts/core", "core"],
|
|
217
|
+
["@actuarial-ts/data", "data"],
|
|
218
|
+
["@actuarial-ts/compliance", "compliance"],
|
|
219
|
+
]) {
|
|
220
|
+
if (!isPlainObject(stored["sdkVersions"]) ||
|
|
221
|
+
stored["sdkVersions"][name] !== packages?.[shortName])
|
|
222
|
+
return { reproduced: false, mismatchPath: `$.sdkVersions.${name}` };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
162
226
|
const storedResults = stored["results"];
|
|
163
227
|
const rerunCanonical = canonicalJson(rerunResults);
|
|
164
228
|
const storedCanonical = canonicalJson(storedResults);
|
|
165
229
|
if (rerunCanonical === storedCanonical)
|
|
166
230
|
return { reproduced: true };
|
|
167
|
-
return {
|
|
231
|
+
return {
|
|
232
|
+
reproduced: false,
|
|
233
|
+
mismatchPath: firstDifference(storedResults, rerunResults, "$") ?? "$",
|
|
234
|
+
};
|
|
168
235
|
}
|
|
169
236
|
function isWrappedBundleDoc(value) {
|
|
170
237
|
return value.kind === "bundle";
|
|
@@ -184,12 +251,85 @@ function verifyWrapped(doc, rerunResults) {
|
|
|
184
251
|
// exactly interchange's semanticBodyOf for kind "bundle" (spec 3.2).
|
|
185
252
|
const expected = fnv1a64(canonicalJson({ bundle: doc.bundle, interchange: doc.interchange }));
|
|
186
253
|
const actual = typeof doc.integrity === "string" ? doc.integrity : null;
|
|
187
|
-
const outerIntegrity = {
|
|
254
|
+
const outerIntegrity = {
|
|
255
|
+
ok: expected === actual,
|
|
256
|
+
expected,
|
|
257
|
+
actual,
|
|
258
|
+
};
|
|
188
259
|
if (!outerIntegrity.ok) {
|
|
189
260
|
return { reproduced: false, mismatchPath: "$.integrity", outerIntegrity };
|
|
190
261
|
}
|
|
191
|
-
const inner = {
|
|
192
|
-
|
|
262
|
+
const inner = {
|
|
263
|
+
payload: innerRaw["payload"],
|
|
264
|
+
hash: innerRaw["hash"],
|
|
265
|
+
};
|
|
266
|
+
const innerResult = verifyUnwrapped(inner, rerunResults);
|
|
267
|
+
if (!innerResult.reproduced)
|
|
268
|
+
return { ...innerResult, outerIntegrity };
|
|
269
|
+
const body = JSON.parse(inner.payload);
|
|
270
|
+
const runs = Array.isArray(body["diagnosticRuns"])
|
|
271
|
+
? body["diagnosticRuns"]
|
|
272
|
+
: [];
|
|
273
|
+
const docs = doc.interchange
|
|
274
|
+
.diagnosticDefinitions;
|
|
275
|
+
if (runs.length > 0) {
|
|
276
|
+
const packages = runs[0].manifest.engine
|
|
277
|
+
.packages;
|
|
278
|
+
if (doc.generator?.name !== "@actuarial-ts/compliance")
|
|
279
|
+
return {
|
|
280
|
+
reproduced: false,
|
|
281
|
+
mismatchPath: "$.generator.name",
|
|
282
|
+
outerIntegrity,
|
|
283
|
+
};
|
|
284
|
+
if (doc.generator.version !== packages.compliance)
|
|
285
|
+
return {
|
|
286
|
+
reproduced: false,
|
|
287
|
+
mismatchPath: "$.generator.version",
|
|
288
|
+
outerIntegrity,
|
|
289
|
+
};
|
|
290
|
+
if (!Array.isArray(docs))
|
|
291
|
+
return {
|
|
292
|
+
reproduced: false,
|
|
293
|
+
mismatchPath: "$.interchange.diagnosticDefinitions",
|
|
294
|
+
outerIntegrity,
|
|
295
|
+
};
|
|
296
|
+
const expected = new Set(runs.map((run) => run.definition.identities.definition));
|
|
297
|
+
const actual = new Set();
|
|
298
|
+
for (const [index, raw] of docs.entries()) {
|
|
299
|
+
try {
|
|
300
|
+
const document = raw;
|
|
301
|
+
const integrity = docToDiagnosticDefinition(document).definition.definitionIntegrity;
|
|
302
|
+
if (actual.has(integrity))
|
|
303
|
+
return {
|
|
304
|
+
reproduced: false,
|
|
305
|
+
mismatchPath: `$.interchange.diagnosticDefinitions[${index}]`,
|
|
306
|
+
outerIntegrity,
|
|
307
|
+
};
|
|
308
|
+
if (document.generator.name !== doc.generator.name ||
|
|
309
|
+
document.generator.version !== doc.generator.version)
|
|
310
|
+
return {
|
|
311
|
+
reproduced: false,
|
|
312
|
+
mismatchPath: `$.interchange.diagnosticDefinitions[${index}].generator`,
|
|
313
|
+
outerIntegrity,
|
|
314
|
+
};
|
|
315
|
+
actual.add(integrity);
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
return {
|
|
319
|
+
reproduced: false,
|
|
320
|
+
mismatchPath: `$.interchange.diagnosticDefinitions[${index}]`,
|
|
321
|
+
outerIntegrity,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (canonicalJson([...actual].sort()) !== canonicalJson([...expected].sort()))
|
|
326
|
+
return {
|
|
327
|
+
reproduced: false,
|
|
328
|
+
mismatchPath: "$.interchange.diagnosticDefinitions",
|
|
329
|
+
outerIntegrity,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
return { ...innerResult, outerIntegrity };
|
|
193
333
|
}
|
|
194
334
|
/**
|
|
195
335
|
* Verifies a re-run against a bundle: canonicalizes `rerunResults` and
|
|
@@ -210,6 +350,8 @@ function verifyWrapped(doc, rerunResults) {
|
|
|
210
350
|
* serialized cannot be verified.
|
|
211
351
|
*/
|
|
212
352
|
export function verifyBundle(bundle, rerunResults) {
|
|
213
|
-
return isWrappedBundleDoc(bundle)
|
|
353
|
+
return isWrappedBundleDoc(bundle)
|
|
354
|
+
? verifyWrapped(bundle, rerunResults)
|
|
355
|
+
: verifyUnwrapped(bundle, rerunResults);
|
|
214
356
|
}
|
|
215
357
|
//# sourceMappingURL=bundle.js.map
|
package/dist/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DiagnosticArtifactDigest } from "./diagnosticRun.js";
|
|
2
|
+
export interface DiagnosticArtifactStreamMetadata {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly scope: "input" | "preparation";
|
|
5
|
+
/** Optional completeness check; no digest handle is issued on truncation. */
|
|
6
|
+
readonly expectedByteLength?: number;
|
|
7
|
+
/** Caller-selected resource ceiling, at most Number.MAX_SAFE_INTEGER. */
|
|
8
|
+
readonly maximumByteLength?: number;
|
|
9
|
+
}
|
|
10
|
+
declare const computedArtifactDigestBrand: unique symbol;
|
|
11
|
+
export type ComputedDiagnosticArtifactDigest = Extract<DiagnosticArtifactDigest, {
|
|
12
|
+
assurance: "sdk-computed";
|
|
13
|
+
}> & {
|
|
14
|
+
readonly [computedArtifactDigestBrand]: true;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Hash the bytes actually received, retaining only a bounded chunk copy.
|
|
18
|
+
* The producer owns I/O. A completed handle means SDK-computed content digest,
|
|
19
|
+
* not source authenticity, a signature, or validation of an actuarial run.
|
|
20
|
+
* Shared buffers are refused; bytes are consumed before requesting the next
|
|
21
|
+
* chunk. A changing producer must be checked again against this digest on replay.
|
|
22
|
+
* Cancellation is cooperative between received chunks; the producer should use
|
|
23
|
+
* the same signal to cancel pending I/O. One synchronous chunk is not interrupted.
|
|
24
|
+
*/
|
|
25
|
+
export declare function digestDiagnosticArtifactChunks(metadata: DiagnosticArtifactStreamMetadata, chunks: AsyncIterable<Uint8Array> | Iterable<Uint8Array>, options?: {
|
|
26
|
+
readonly signal?: AbortSignal;
|
|
27
|
+
}): Promise<ComputedDiagnosticArtifactDigest>;
|
|
28
|
+
export declare function assertComputedDiagnosticArtifactDigest(value: unknown): asserts value is ComputedDiagnosticArtifactDigest;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=diagnosticArtifactStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticArtifactStream.d.ts","sourceRoot":"","sources":["../src/diagnosticArtifactStream.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAKnE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AACD,OAAO,CAAC,MAAM,2BAA2B,EAAE,OAAO,MAAM,CAAC;AACzD,MAAM,MAAM,gCAAgC,GAAG,OAAO,CACpD,wBAAwB,EACxB;IAAE,SAAS,EAAE,cAAc,CAAA;CAAE,CAC9B,GAAG;IAAE,QAAQ,CAAC,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAiErD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,gCAAgC,EAC1C,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,EACxD,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC9C,OAAO,CAAC,gCAAgC,CAAC,CAuC3C;AAED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,gCAAgC,CAGnD"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { diagnosticJsonPreflight, isDiagnosticPlainRecord, isDiagnosticToken, } from "@actuarial-ts/core";
|
|
2
|
+
import { ComplianceError } from "./errors.js";
|
|
3
|
+
import { createSha256 } from "./sha256Stream.js";
|
|
4
|
+
import { diagnosticByteView } from "./diagnosticByteView.js";
|
|
5
|
+
import { consumeDiagnosticByteSource } from "./diagnosticByteSource.js";
|
|
6
|
+
const computed = new WeakSet();
|
|
7
|
+
const signalAborted = Object.getOwnPropertyDescriptor(AbortSignal.prototype, "aborted").get;
|
|
8
|
+
const throwIfAborted = AbortSignal.prototype.throwIfAborted;
|
|
9
|
+
const COPY_SIZE = 65_536;
|
|
10
|
+
function invalid(message, path = "$") {
|
|
11
|
+
throw new ComplianceError("BAD_DIAGNOSTIC_RUN", message, path);
|
|
12
|
+
}
|
|
13
|
+
function ownedMetadata(value) {
|
|
14
|
+
// Read descriptors once. A Proxy must not pass validation with one property
|
|
15
|
+
// value and supply a different value when the final digest is assembled.
|
|
16
|
+
if (!isDiagnosticPlainRecord(value))
|
|
17
|
+
invalid("Artifact metadata must be a plain object");
|
|
18
|
+
const snapshot = Object.create(null);
|
|
19
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
20
|
+
if (typeof key !== "string")
|
|
21
|
+
invalid("Artifact metadata cannot have symbol keys");
|
|
22
|
+
const field = Object.getOwnPropertyDescriptor(value, key);
|
|
23
|
+
if (!field || !("value" in field) || !field.enumerable)
|
|
24
|
+
invalid("Artifact metadata must contain enumerable data properties", `$.${key}`);
|
|
25
|
+
snapshot[key] = field.value;
|
|
26
|
+
}
|
|
27
|
+
value = snapshot;
|
|
28
|
+
const issues = diagnosticJsonPreflight(value, "input");
|
|
29
|
+
if (issues.length)
|
|
30
|
+
invalid(issues[0].message, issues[0].path);
|
|
31
|
+
if (!isDiagnosticPlainRecord(value))
|
|
32
|
+
invalid("Artifact metadata must be a plain object");
|
|
33
|
+
for (const key of Object.keys(value))
|
|
34
|
+
if (!["id", "scope", "expectedByteLength", "maximumByteLength"].includes(key))
|
|
35
|
+
invalid("Unknown artifact metadata key", `$.${key}`);
|
|
36
|
+
if (!isDiagnosticToken(value.id))
|
|
37
|
+
invalid("Artifact ID must be a valid token", "$.id");
|
|
38
|
+
if (value.scope !== "input" && value.scope !== "preparation")
|
|
39
|
+
invalid("Artifact scope must be input or preparation", "$.scope");
|
|
40
|
+
for (const key of ["expectedByteLength", "maximumByteLength"])
|
|
41
|
+
if (value[key] !== undefined && (!Number.isSafeInteger(value[key]) || value[key] < 0))
|
|
42
|
+
invalid("Byte length must be a nonnegative safe integer", `$.${key}`);
|
|
43
|
+
const maximumByteLength = value.maximumByteLength ?? Number.MAX_SAFE_INTEGER;
|
|
44
|
+
if (value.expectedByteLength !== undefined && value.expectedByteLength > maximumByteLength)
|
|
45
|
+
invalid("Expected byte length exceeds the resource ceiling", "$.expectedByteLength");
|
|
46
|
+
return {
|
|
47
|
+
id: value.id,
|
|
48
|
+
scope: value.scope,
|
|
49
|
+
expectedByteLength: value.expectedByteLength,
|
|
50
|
+
maximumByteLength,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function cancellation(options) {
|
|
54
|
+
if (!isDiagnosticPlainRecord(options))
|
|
55
|
+
invalid("Artifact stream options must be a plain object");
|
|
56
|
+
for (const key of Reflect.ownKeys(options))
|
|
57
|
+
if (key !== "signal")
|
|
58
|
+
invalid("Unknown artifact stream option");
|
|
59
|
+
const field = Object.getOwnPropertyDescriptor(options, "signal");
|
|
60
|
+
if (field && (!("value" in field) || !field.enumerable))
|
|
61
|
+
invalid("Artifact signal must be supplied as a data property");
|
|
62
|
+
const signal = field?.value;
|
|
63
|
+
if (signal === undefined)
|
|
64
|
+
return () => { };
|
|
65
|
+
try {
|
|
66
|
+
signalAborted.call(signal);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
invalid("Artifact signal must be an AbortSignal");
|
|
70
|
+
}
|
|
71
|
+
// Capture the genuine signal and intrinsic method before any producer await.
|
|
72
|
+
return () => throwIfAborted.call(signal);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Hash the bytes actually received, retaining only a bounded chunk copy.
|
|
76
|
+
* The producer owns I/O. A completed handle means SDK-computed content digest,
|
|
77
|
+
* not source authenticity, a signature, or validation of an actuarial run.
|
|
78
|
+
* Shared buffers are refused; bytes are consumed before requesting the next
|
|
79
|
+
* chunk. A changing producer must be checked again against this digest on replay.
|
|
80
|
+
* Cancellation is cooperative between received chunks; the producer should use
|
|
81
|
+
* the same signal to cancel pending I/O. One synchronous chunk is not interrupted.
|
|
82
|
+
*/
|
|
83
|
+
export async function digestDiagnosticArtifactChunks(metadata, chunks, options = {}) {
|
|
84
|
+
const owned = ownedMetadata(metadata);
|
|
85
|
+
const checkCancellation = cancellation(options);
|
|
86
|
+
checkCancellation();
|
|
87
|
+
const hash = createSha256();
|
|
88
|
+
const copy = new Uint8Array(COPY_SIZE);
|
|
89
|
+
let byteLength = 0;
|
|
90
|
+
try {
|
|
91
|
+
for await (const chunk of consumeDiagnosticByteSource(chunks, checkCancellation)) {
|
|
92
|
+
checkCancellation();
|
|
93
|
+
const view = diagnosticByteView(chunk);
|
|
94
|
+
const size = view.byteLength;
|
|
95
|
+
if (!Number.isSafeInteger(byteLength + size) || byteLength + size > owned.maximumByteLength)
|
|
96
|
+
invalid("Artifact byte length exceeds the resource ceiling", "$.chunks");
|
|
97
|
+
if (owned.expectedByteLength !== undefined && byteLength + size > owned.expectedByteLength)
|
|
98
|
+
invalid("Artifact has more bytes than declared", "$.chunks");
|
|
99
|
+
for (let start = 0; start < size; start += COPY_SIZE) {
|
|
100
|
+
const length = Math.min(COPY_SIZE, size - start);
|
|
101
|
+
copy.set(new Uint8Array(view.buffer, view.byteOffset + start, length));
|
|
102
|
+
hash.update(copy.subarray(0, length));
|
|
103
|
+
}
|
|
104
|
+
byteLength += size;
|
|
105
|
+
}
|
|
106
|
+
checkCancellation();
|
|
107
|
+
if (owned.expectedByteLength !== undefined && byteLength !== owned.expectedByteLength)
|
|
108
|
+
invalid("Artifact ended before its declared byte length", "$.chunks");
|
|
109
|
+
const digest = Object.freeze({
|
|
110
|
+
id: owned.id,
|
|
111
|
+
scope: owned.scope,
|
|
112
|
+
assurance: "sdk-computed",
|
|
113
|
+
algorithm: "sha256",
|
|
114
|
+
value: hash.digest(),
|
|
115
|
+
byteLength,
|
|
116
|
+
});
|
|
117
|
+
computed.add(digest);
|
|
118
|
+
return digest;
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
copy.fill(0);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export function assertComputedDiagnosticArtifactDigest(value) {
|
|
125
|
+
if (value === null || typeof value !== "object" || !computed.has(value))
|
|
126
|
+
invalid("Value is not an authentic SDK-computed streamed artifact digest");
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=diagnosticArtifactStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticArtifactStream.js","sourceRoot":"","sources":["../src/diagnosticArtifactStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type DiagnosticByteSource = Iterable<Uint8Array> | AsyncIterable<Uint8Array>;
|
|
2
|
+
/**
|
|
3
|
+
* Own one producer iterator through completion, cancellation or read failure.
|
|
4
|
+
* Unlike a bare for-await loop, a rejected next() also closes the producer.
|
|
5
|
+
* A cleanup failure never replaces the error that caused cleanup. Hosts should
|
|
6
|
+
* pass the same cancellation signal to pending I/O; checks cannot interrupt it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function consumeDiagnosticByteSource(source: DiagnosticByteSource, checkCancellation?: () => void): AsyncGenerator<Uint8Array>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=diagnosticByteSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticByteSource.d.ts","sourceRoot":"","sources":["../src/diagnosticByteSource.ts"],"names":[],"mappings":"AAAA,KAAK,oBAAoB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAQ7E;;;;;GAKG;AACH,wBAAuB,2BAA2B,CAChD,MAAM,EAAE,oBAAoB,EAC5B,iBAAiB,GAAE,MAAM,IAAe,GACvC,cAAc,CAAC,UAAU,CAAC,CAgE5B"}
|