diff --git a/.kiro/specs/pre-push-safety-net/brief.md b/.kiro/specs/pre-push-safety-net/brief.md index 2741b5f..67611a8 100644 --- a/.kiro/specs/pre-push-safety-net/brief.md +++ b/.kiro/specs/pre-push-safety-net/brief.md @@ -1,6 +1,6 @@ # Brief: pre-push-safety-net -Status: requirements, design and tasks approved; groups 1–4 verified complete (14/27 subtasks). Groups 5–8 pending; real capability eligibility and hook latency remain unproven. Language: English. +Status: requirements, design and tasks approved; groups 1–5 implemented and verified (16/27 subtasks). The first PMPro/Node experiment is measured NO-GO: six cold timeouts, no completed target checks. Groups 6–8 pending; normal capabilities remain disabled and warm hook latency unproven. Language: English. ## Problem diff --git a/.kiro/specs/pre-push-safety-net/implementation-group-5.md b/.kiro/specs/pre-push-safety-net/implementation-group-5.md index 6885414..c571d13 100644 --- a/.kiro/specs/pre-push-safety-net/implementation-group-5.md +++ b/.kiro/specs/pre-push-safety-net/implementation-group-5.md @@ -1,7 +1,7 @@ # Implementation verification: group 5 Group 5 was authorized by the maintainer's “approved” after group 4 completion. -Task 5.1 is verified complete (15/27 total); task 5.2 is next. +Tasks 5.1–5.2 are implemented and verified (16/27 total); the measured feasibility decision is NO-GO. Real capability eligibility and rollout readiness remain unproven. ## Execution and review mode @@ -105,3 +105,80 @@ facts or detector semantics changed. The additional regression failed before rep - CLAIM: The reproduced Node cancellation path retains diagnostics and returns within 30 + 2 seconds. - EVIDENCE: Final packaged real Node replay returned in 30.1255 seconds with one complete diagnostic artifact and incomplete coverage. Final policy/core/facts/query hashes match the workspace. See `benchmarks/measurements/2026-09-13-replay-deadline-repair.json` for initial/partial-repair traces and final raw artifact. - GAPS: This proves the reproduced cancellation path, not representative warm performance or security coverage. Normal capabilities remain disabled. + +## Task 5.2 brief and measurement method + +Requirements 6.2–6.5 and 8.1–8.4: execute the prepared PMPro and Node security/fixed/benign +changes through full replay, freeze the core before transfer, retain unresolved populations, +and make an explicit feasibility decision. This task owns the evaluation harness, not new +engine abstractions, framework facts, ranking weights or normal alert eligibility. + +The harness freezes the full input population and runtime profile before invoking the CLI. +Authored variants are reproducible commits in a private Git object store, with byte/hash +checks and the rest of each tree retained. The original cache is mounted read-only. All six +cases run under 30 seconds plus a 2-second cancellation/report allowance, with complete CLI +elapsed time measured. Exact artifacts/process exits remain separate from the scorer's +witness association. Empty completed rows cannot manufacture a witnessed negative. + +Initial OFF-state evidence: `/tmp/ousast-experiment-red.log`, three failed acceptance tests. +After implementation and flag removal, the same three tests pass, including whole-tree +retention, unchanged source/index, reproducible authored identity, bad-hash refusal, +timeout accounting and absence of fabricated negative evidence. + +The first v1 trial is retained as diagnostic history. Its Node post-deadline failures +triggered the predecessor repair above; PMPro measurements overlapped regression tests. +The v2 profile is frozen anew after repair; final timed runs have no competing test/build +workload from this session. Both profiles and their distinct core/policy hashes are retained. +The reserved Ghost workload remains untouched. No framework/fact adaptation or ranking +retune is made from these Node results. + +## Final experiment: measured NO-GO + +[Joint scorecard](../../../benchmarks/measurements/2026-09-13-first-replay-experiment.json) +records the final v2 profile, all metrics, hardware, exact case identities, initial trial +and final-trial bundle hashes. The two gzip bundles are JSON mappings from each original +filename to its exact UTF-8 contents; decompression was checked against every original file. +They preserve all detailed CLI artifacts, stdout/stderr, pins, profiles and scorer inputs. + +| Workload | Cases | Whole CLI elapsed | Reached analysis | Result | +|---|---:|---|---|---| +| PMPro | 3 | 30.61–30.64 s | No; both trees materialized, discovery/preparation expired before change context | Timeout, no completed target check | +| NodeGoat | 3 | 30.55–30.58 s | Driver reached after 7.78–7.96 s preparation; deadline consumed in head analysis/planning | Timeout, 436 deferred questions per case | + +All six processes exited 0 (advisory allow), saved artifacts and explicitly reported +incomplete analysis. The harness exited **1 with a completed NO-GO decision**, distinct +from an instrument crash. Both the initial and post-PMPro freeze match each final runtime +and the current workspace's core/facts/query/policy hashes. CPU: Intel Core i7-8700, +four exposed CPUs, 3 GiB container memory limit, network disabled. Tests/builds were not +running during these final measurements. Filesystem caches were not flushed. + +The scorer retains all 11 unresolved cases; six were executed and the regression, +unsupported-envelope and reserved populations were not scanned. No security change was +recovered within budget, no witnessed fixed-side negative was established, and no normal +alert was admitted. Precision has denominator zero and is undefined. The two benign +pushes emitted no alert, but an empty registry cannot establish product usefulness. +There are no warm-changed or identical-tip samples. Cold sample p50 is 30.58 s and p95 +30.64 s for six one-shot deadline-limited runs; these are not warm latency acceptance evidence. + +The negative result points first to preparation/discovery cost for PMPro, before graph +persistence can help that path. Group6 can implement valid reuse, including compatible +preparation work, but must not claim scale from identical-tip hits or bypass the ranker +with another slicer. No new abstract capability or incremental graph mutation is justified +by this measurement. Normal capability qualification remains task8.3. + +## Task 5.2 review verdict +- VERDICT: APPROVED +- TASK: 5.2 +- MECHANICAL_RESULTS: Full suite 1,242 passed, nine skipped, exit 0; Ruff/format (243 files), mypy (112 source files), compileall and detection/map/pair gates PASS; three behavioral OFF-state failures reproduced before implementation; no new placeholder markers/secrets; evaluation boundary respected. +- FINDINGS: Initial instrument failures repaired in their owning driver/replay integration before the final freeze. All six final runtime provenance records match the frozen profile; scorer replay and complete compressed-artifact round trips reproduce exactly. No outstanding implementation blocker. +- SUMMARY: Manual review approves the executed diagnostic experiment and truthful NO-GO assessment; it does not approve usefulness, warm latency or capability admission. + +## Group 5 verification and integration assessment +- STATUS: VERIFIED +- CLAIM_TYPE: TASK +- CLAIM: Tasks5.1–5.2 implement full local replay and execute the first frozen PMPro/Node experiment with truthful evidence, failures, deadline accounting and an explicit feasibility decision. +- EVIDENCE: Controlled security/fixed replay, packaged deadline repair, 1,242 passing tests, fresh static/regression checks, six final real CLI replays, exact frozen runtime hashes and reproducible 11-case scorecard. Task5.2 acceptance requires publishing the actual decision; this decision is NO-GO. +- GAPS: No completed target checks in the 30-second cold workload, no warm measurements, no independent eligibility, and remaining groups6–8. The first usefulness/quality/latency milestone has not passed; the feature is not complete. + +Implementation and measurement integration: GO for the scoped work in group5. +Product feasibility and rollout: **NO-GO**. Kiro state is 16/27 tasks verified; group6 next. diff --git a/.kiro/specs/pre-push-safety-net/spec.json b/.kiro/specs/pre-push-safety-net/spec.json index ba64124..7a4a2c8 100644 --- a/.kiro/specs/pre-push-safety-net/spec.json +++ b/.kiro/specs/pre-push-safety-net/spec.json @@ -1,7 +1,7 @@ { "feature_name": "pre-push-safety-net", "created_at": "2026-09-12T15:35:00Z", - "updated_at": "2026-09-13T13:11:42.850127+00:00", + "updated_at": "2026-09-13T13:22:55.634332+00:00", "language": "en", "phase": "implementation", "approvals": { @@ -19,7 +19,7 @@ } }, "ready_for_implementation": true, - "implementation_approval_note": "Group5 authorized. Task5.1 and its observed deadline regression repaired and verified with manual Kiro fallback; task5.2 resumes under a newly frozen core identity.", + "implementation_approval_note": "Groups1\u20135 implemented and verified (16/27). Group5 used manual Kiro fallback review, repaired observed predecessor deadline bugs, and executed a newly frozen PMPro/Node experiment. Measured feasibility NO-GO; real capabilities remain disabled. Groups6\u20138 pending.", "depends_on": [ "contributor-scan" ], @@ -92,9 +92,10 @@ "4.1", "4.2", "4.3", - "5.1" + "5.1", + "5.2" ], - "remaining_tasks": 12, + "remaining_tasks": 11, "verification_record": "implementation-group-5.md", "verification_records": [ "implementation-group-1.md", @@ -103,7 +104,8 @@ "implementation-group-4.md", "implementation-group-5.md" ], - "next_group": 5, - "blocked_tasks": [] + "next_group": 6, + "blocked_tasks": [], + "feasibility": "NO-GO: six cold replay timeouts; no completed supported target checks; warm performance and eligibility unproven" } } diff --git a/.kiro/specs/pre-push-safety-net/tasks.md b/.kiro/specs/pre-push-safety-net/tasks.md index 568c289..9deaacb 100644 --- a/.kiro/specs/pre-push-safety-net/tasks.md +++ b/.kiro/specs/pre-push-safety-net/tasks.md @@ -1,9 +1,11 @@ # Implementation Plan: pre-push-safety-net -Status: task plan approved by the maintainer on 2026-09-12. Groups 1–4 (tasks 1.1–4.3) -are complete after task reviews and fresh verification (14/27 subtasks). Task 4.3 used -the documented manual review fallback after agent dispatch became unavailable. -Task 5.1 is also verified (15/27 total); task 5.2 and groups 6–8 remain pending; no production capability or hook latency is admitted. +Status: task plan approved by the maintainer on 2026-09-12. Groups 1–5 (tasks 1.1–5.2) +are implemented, reviewed and verified (16/27 subtasks). Tasks 4.3 and group 5 used the +documented Kiro manual review fallback after agent dispatch reached its thread limit. +The first experiment is measured NO-GO: all six cold PMPro/Node cases timed out without +completed target checks. Groups 6–8 remain pending; no production capability or warm +hook latency is admitted. ## Execution contract @@ -139,7 +141,7 @@ Task 5.1 is also verified (15/27 total); task 5.2 and groups 6–8 remain pendin - _Boundary: Result and Hook Adapter_ - _Requirements: 3.1, 3.2, 3.3, 5.1, 5.2, 5.5, 7.3_ -- [ ] 5. Prove the first end-to-end experiment before cache optimization +- [x] 5. Prove the first end-to-end experiment before cache optimization - [x] 5.1 Wire explicit base/head replay through the full transaction - Connect immutable snapshots, ranker decisions, existing arbiter, targeted comparison, admission diagnostics and compact artifacts through an explicit local replay command. - Apply the shared budget to preparation and both revisions; no model/service or installed hook is required. All runtime errors preserve coverage state. @@ -148,11 +150,12 @@ Task 5.1 is also verified (15/27 total); task 5.2 and groups 6–8 remain pendin - _Boundary: Push runner, CLI, Snapshot Adapter, engine and policy integration_ - _Depends: 1.3, 3.1, 3.4, 4.3_ - _Requirements: 1.1, 2.1, 3.1, 3.4, 4.1, 4.2, 5.5, 7.1, 7.3_ -- [ ] 5.2 Measure PMPro and frozen-core Node transfer +- [x] 5.2 Measure PMPro and frozen-core Node transfer - _Prerequisite repaired 2026-09-13:_ 3.1/5.1 deadline regression verified in the packaged Node replay; re-freeze the experiment after this core identity change. - Replay each prepared security/fixed/benign case, first using the declared hook deadline; record timeouts and stage costs. A separately named extended lab run may obtain witnesses but cannot satisfy the hook latency gate. - Freeze the core after PMPro, run Node with existing facts, and classify instrument, mapping, fact, scope and domain gaps without tuning on an untouched holdout. - Done when one joint artifact reports actual evidence and outcomes for both workloads, with unresolved cases retained and an explicit feasibility decision; no normal capability is enabled here. + - _Verified 2026-09-13:_ manual Kiro review APPROVED; six final CLI cases measured under unchanged core, all timed out in 30.55–30.64 seconds with artifacts retained. Full 11-case population retained; feasibility NO-GO, no eligibility enabled. 1,242 tests passed, nine skipped. See `implementation-group-5.md`. - _Boundary: Evaluation harness, full-run integration_ - _Depends: 1.2, 1.3, 5.1_ - _Requirements: 6.2, 6.3, 6.4, 6.5, 8.1, 8.2, 8.3, 8.4_ @@ -234,3 +237,9 @@ Task 5.1 is also verified (15/27 total); task 5.2 and groups 6–8 remain pendin - Done when a reproducible validation artifact states GO only with all mandatory integration and joint quality/latency gates satisfied; otherwise it names the remaining NO-GO conditions without marking the feature complete. - _Boundary: Packaged runtime, full feature validation integration_ - _Requirements: 3.1, 3.4, 5.1, 5.2, 5.3, 5.4, 5.5, 6.5, 7.1, 7.3, 7.4, 8.3, 8.4_ + + +## Implementation Notes + +- Task5.2 measured PMPro timing out after both snapshots were materialized but before change context/graph analysis. Group6 must account for compatible snapshot/discovery reuse as well as graph reuse; identical-tip hits cannot substitute for the later representative changed-code latency gate. No new detector, scope heuristic or incremental CPG mutation is implied. +- Cancellation must cover semantic planning and reporting, not only engine subprocesses: `_collect` and `_scope_work` now consume the shared deadline, and replay instantiates the budget-aware backend once. Preserve the 400-question failure-census and real Node artifact-retention regressions. diff --git a/.kiro/steering/roadmap.md b/.kiro/steering/roadmap.md index 0bced26..f4d4c10 100644 --- a/.kiro/steering/roadmap.md +++ b/.kiro/steering/roadmap.md @@ -46,28 +46,33 @@ engine are out of scope. - [ ] pre-push-safety-net — Immutable pushed tips, existing-ranker integration, compatible artifact reuse, total deadline, change attribution, actionability admission and compact hook behavior. Dependencies: contributor-scan. Requirements/design approved 2026-09-12; tasks generated - (8 groups, 27 executable subtasks), independently reviewed and approved; groups 1–4 are complete (14/27 tasks), including the resolved frontend-retention prerequisite. + (8 groups, 27 executable subtasks), independently reviewed and approved; groups 1–5 are implemented and verified (16/27 tasks), including the resolved frontend-retention prerequisite. ### Next concrete step -Groups 1–4 are verified: runtime, inputs, scoring, snapshots, shared deadline, -ranker scope, change context, vendor-free partitions, novelty comparison, actionability -admission and compact reporting. Tasks 4.1/4.2 passed independent review; 4.3 used the -Kiro manual review fallback after the agent service reached its thread limit. -Group 5 is next: wire explicit full transaction replay, then run the first bounded -experiment. Real capabilities remain disabled pending independent evaluation. -Automatic dominance-only change-context projection remains an upstream limit to -retain during replay integration. See `pre-push-safety-net/implementation-group-4.md` -for verification and scope limits. -The first complete experiment is 5.2, before persistent caching and hook -installation work. Keep PMPro as the primary core-optimization example, then freeze the core and -prove a changed security flow and its fixed twin on a JavaScript/Express Node API workload through -the same ranker, with a real deadline and vendor-free graph. Include benign pushes and retain Python -regressions. `pre-push-safety-net/evaluation.md` proposes NodeGoat for integration, a separate untouched -Node API repository for generalization, and libpng for C envelope/abstraction-limit evidence. Shared -abstract evidence and decisions are mandatory; framework facts/adaptations are reported separately. -Measure realistic changed-code cache behavior before more ranker tuning. Broader runtime and -capability admission follow that result; an LLM ranker is optional. +Groups 1–5 now connect immutable replay to the existing ranker, detector, comparison, +admission and compact artifacts. The first frozen PMPro/Node experiment is **NO-GO**: +all six cold security/fixed/benign cases timed out without completed target checks. +After repairing post-deadline semantic planning and a repeated availability probe, +every final CLI run saved its artifact and returned in 30.55–30.64 seconds. PMPro spent +its deadline in preparation/discovery after materializing both trees; Node reached the +driver but did not complete checks. The exact 11-case population remains unresolved. +No normal capability is enabled and these six cold samples establish no warm p95 claim. + +Group 6 is next for valid graph/result identity, leases and reuse. Account for snapshot +and discovery costs before treating graph persistence as the sole optimization; record +compatible preparation reuse alongside graph reuse. Representative changed-code warm +latency and coverage must still be measured later, without substituting identical-tip hits. +Do not change ranking weights, add a second source-slicer or assume incremental Joern +mutation from this negative performance evidence. + +Tasks 4.3 and group 5 used the documented Kiro manual review fallback after the agent +thread limit; this is not independent review. See `pre-push-safety-net/implementation-group-5.md` +and `benchmarks/measurements/2026-09-13-first-replay-experiment.json` for provenance, +initial instrument failures, their repairs and the newly frozen final trial. The NodeGoat +teaching workload did not cause a framework/fact adaptation or ranking retune. Ghost remains +untouched; independent PHP/Python eligibility populations and C/C++ property support remain +separate gaps. Automatic dominance-only context projection is still an upstream limit. ## Historical roadmap narrative — September 9–11 diff --git a/.kiro/steering/safety-net.md b/.kiro/steering/safety-net.md index a23bfa7..b329613 100644 --- a/.kiro/steering/safety-net.md +++ b/.kiro/steering/safety-net.md @@ -79,11 +79,16 @@ updates as a shortcut to an unmeasured latency promise. The product direction above is user-requested. The amended requirements, design and initial evaluation profile in `pre-push-safety-net` were approved for task generation on 2026-09-12 ("ok, next kiro phase"). The maintainer then approved the task plan and starting group 1 -("approve.") and then group 2 ("ok, next kiro phase, approved"). Groups 1–4 are now verified -complete (14/27 total), including the approved frontend-retention prerequisite. -Group 4 adds bound novelty, operation-specific admission and compact artifacts; -4.1/4.2 passed independent review and 4.3 used the documented Kiro manual fallback -after agent dispatch became unavailable. Group 5 is next for full replay and the -first bounded experiment. Task completion still requires review and fresh evidence. -Real capability eligibility, automatic dominance context projection and hook -performance remain unproven; the default capability registry is empty. +("approve.") and then group 2 ("ok, next kiro phase, approved"). Groups 1–5 are now +implemented, reviewed and verified (16/27), including the frontend-retention prerequisite +and the deadline regression exposed by full Node replay. Tasks 4.3 and group 5 used the +explicit Kiro manual review fallback after the agent thread limit. + +The first newly frozen PMPro/Node experiment is measured **NO-GO**: all six cold cases +timed out without completed supported target checks, while retaining all 11 declared cases. +The repaired CLI saved all artifacts and returned in 30.55–30.64 seconds. PMPro exhausted +the deadline in preparation/discovery before graph analysis, so compatible preparation +reuse matters alongside graph persistence. Group 6 is next; warm changed-code performance +and useful coverage remain mandatory later gates. No ranking/fact adaptation or holdout +inspection occurred in the final transfer run. Real capability eligibility and automatic +dominance context projection remain unproven; the default capability registry is empty. diff --git a/benchmarks/measurements/2026-09-13-first-replay-experiment.json b/benchmarks/measurements/2026-09-13-first-replay-experiment.json new file mode 100644 index 0000000..d01fab5 --- /dev/null +++ b/benchmarks/measurements/2026-09-13-first-replay-experiment.json @@ -0,0 +1,3078 @@ +{ + "status": "VERIFIED_MEASUREMENT", + "task": "5.2", + "feasibility": { + "decision": "NO-GO", + "capabilities_enabled": false, + "scorecard": "scorecard.json", + "reason": "First cold diagnostic experiment; independent eligibility and joint quality/warm-latency gates remain unmet.", + "recorded_cases": 6, + "declared_population": 11, + "core_unchanged": true, + "adapter_changes": [], + "limits": [ + "No warm-cache measurements", + "Untouched Ghost population not scanned", + "PHP/Python admission populations missing", + "libpng retained as unsupported envelope; no C/C++ detection claim", + "Zero normal alerts from an empty registry cannot establish precision or useful recall" + ] + }, + "review_mode": "manual Kiro fallback after agent thread limit", + "image": "sha256:7f71174daa9e2fe4866f023ae926b6a320718d2e287b61f6c7650d7353051c77", + "hardware": { + "platform": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", + "logical_cpus": 4, + "cpu_model": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz", + "cpuset": "0-3", + "cpu_max": "max 100000" + }, + "memory_limit_bytes": 3221225472, + "network": "none", + "timing_method": "Six serial CLI subprocesses, 30-second analysis plus 2-second allowance; no concurrent test/build workload from this session. Cold means no CPG/query/comparison reuse; filesystem caches uncontrolled.", + "profile": { + "schema_version": 1, + "manifest_sha256": "eec13cb19fe5e2c2402e61ebf4fd17fa809482f321e7a8e615215a12e1bcf845", + "cases": [ + { + "id": "pmpro-introduce", + "base": "pmpro-fixed", + "tip": "pmpro-vulnerable", + "label": "vulnerable", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "Authored replay direction reintroducing the reviewed operation; not a claim about the historical introducing commit.", + "prerequisites": [] + }, + { + "id": "pmpro-repair", + "base": "pmpro-vulnerable", + "tip": "pmpro-fixed", + "label": "fixed", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "PMPro upstream2.9.7 to2.9.8 parameter binding fix for CVE-2023-23488.", + "prerequisites": [] + }, + { + "id": "pmpro-benign", + "base": "pmpro-vulnerable", + "tip": "pmpro-benign", + "label": "benign", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "Authored comment-only change: no new defect; vulnerable backlog remains. This label does not mean repository-clean.", + "prerequisites": [] + }, + { + "id": "nodegoat-introduce", + "base": "nodegoat-fixed", + "tip": "nodegoat-vulnerable", + "label": "vulnerable", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored replay direction reintroducing the reviewed operation; not a claim about the historical introducing commit.", + "prerequisites": [] + }, + { + "id": "nodegoat-repair", + "base": "nodegoat-vulnerable", + "tip": "nodegoat-fixed", + "label": "fixed", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored replacement of three eval calls with Number conversion; source tutorial also documents alternate numeric parsing.", + "prerequisites": [] + }, + { + "id": "nodegoat-benign", + "base": "nodegoat-vulnerable", + "tip": "nodegoat-benign", + "label": "benign", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored comment-only change: no new defect; vulnerable backlog remains. This label does not mean repository-clean.", + "prerequisites": [] + }, + { + "id": "VAmPI-SQLI", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/injection", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ] + }, + { + "id": "VAmPI-BOLA", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/access_control", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ] + }, + { + "id": "VAmPI-BOLA-BOOKS", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/access_control", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ] + }, + { + "id": "libpng-CVE-2025-66293", + "base": "libpng-envelope", + "tip": "libpng-envelope", + "label": "unsupported", + "role": "envelope", + "capability": "c/libpng/memory_safety", + "provenance": "Arithmetic/bounds is outside the current abstract domain; measures graph/cost envelope only.", + "prerequisites": [] + }, + { + "id": "ghost-reserved-population", + "base": "ghost-reserved", + "tip": "ghost-reserved", + "label": "unreviewed", + "role": "reserved_holdout", + "capability": "javascript/express/unreviewed", + "provenance": "Reserved from production API/module/async shape and public security-fix history before scanner results. Manifest6.64.0-rc.0, Express4.22.2. Not an ESM or Express5 coverage claim.", + "prerequisites": [ + "Review and freeze supported positive/fixed/benign changes from independent history; select family before scanning.", + "Freeze core and existing facts after development; preserve reservation and record any contamination." + ] + } + ], + "config": { + "ranking_mode": "evidence", + "engine": "joern-4.0.625", + "facts": "32edb6e1a78f1afb08ac4248cd436be16663e0d90dc1b3aaf948f2ce49a5a8f0", + "queries": "cdd625fc9013f43452a76ec727282cbf82374f3604be36648b6dbbd6aebf1535", + "policy": "aab46d801c7e775d220b90672e8eae38f1f66e80d25ac28338ca4ef4f8869bfc", + "core": "fd93ec1a320dd81c824b3ebe489065d302174cbd354928ae152e8b0b98da3b0a", + "version": "first-replay-v2-2026-09-13", + "scope": "full tracked tree; declared first-party graph/target exclusions; evidence ranker", + "hardware": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", + "budget_seconds": 30, + "targets": { + "pmpro-introduce": { + "path": "classes/class.memberorder.php", + "function": "getMemberOrderByCode", + "family": "injection", + "lines": [ + 936 + ] + }, + "pmpro-repair": { + "path": "classes/class.memberorder.php", + "function": "getMemberOrderByCode", + "family": "injection", + "lines": [ + 937 + ] + }, + "pmpro-benign": { + "path": "classes/class.memberorder.php", + "function": "getMemberOrderByCode", + "family": "injection", + "lines": [ + 937 + ] + }, + "nodegoat-introduce": { + "path": "app/routes/contributions.js", + "function": "handleContributionsUpdate", + "family": "injection", + "lines": [ + 32, + 33, + 34 + ] + }, + "nodegoat-repair": { + "path": "app/routes/contributions.js", + "function": "handleContributionsUpdate", + "family": "injection", + "lines": [ + 32, + 33, + 34 + ] + }, + "nodegoat-benign": { + "path": "app/routes/contributions.js", + "function": "handleContributionsUpdate", + "family": "injection", + "lines": [ + 32, + 33, + 34 + ] + }, + "VAmPI-SQLI": { + "path": "models/user_model.py", + "function": "get_user", + "family": "injection", + "lines": [ + 73 + ] + }, + "VAmPI-BOLA": { + "path": "api_views/users.py", + "function": "update_password", + "family": "access_control", + "lines": [ + 187 + ] + }, + "VAmPI-BOLA-BOOKS": { + "path": "api_views/books.py", + "function": "get_by_title", + "family": "access_control", + "lines": [ + 51 + ] + } + } + }, + "gates": { + "precision": 0.95, + "recall": 0.9, + "completion": 0.95, + "warm_p95_seconds": 30.0, + "fixed_false_alerts": 0, + "benign_false_alerts": 0 + }, + "profile_sha256": "b47cb63d8d3ef33e9117f50fd96934ccee871d0c571eda32e336191e9bbe2f96" + }, + "scorecard": { + "schema_version": 1, + "profile_sha256": "b47cb63d8d3ef33e9117f50fd96934ccee871d0c571eda32e336191e9bbe2f96", + "profile": { + "schema_version": 1, + "manifest_sha256": "eec13cb19fe5e2c2402e61ebf4fd17fa809482f321e7a8e615215a12e1bcf845", + "cases": [ + { + "id": "pmpro-introduce", + "base": "pmpro-fixed", + "tip": "pmpro-vulnerable", + "label": "vulnerable", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "Authored replay direction reintroducing the reviewed operation; not a claim about the historical introducing commit.", + "prerequisites": [] + }, + { + "id": "pmpro-repair", + "base": "pmpro-vulnerable", + "tip": "pmpro-fixed", + "label": "fixed", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "PMPro upstream2.9.7 to2.9.8 parameter binding fix for CVE-2023-23488.", + "prerequisites": [] + }, + { + "id": "pmpro-benign", + "base": "pmpro-vulnerable", + "tip": "pmpro-benign", + "label": "benign", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "Authored comment-only change: no new defect; vulnerable backlog remains. This label does not mean repository-clean.", + "prerequisites": [] + }, + { + "id": "nodegoat-introduce", + "base": "nodegoat-fixed", + "tip": "nodegoat-vulnerable", + "label": "vulnerable", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored replay direction reintroducing the reviewed operation; not a claim about the historical introducing commit.", + "prerequisites": [] + }, + { + "id": "nodegoat-repair", + "base": "nodegoat-vulnerable", + "tip": "nodegoat-fixed", + "label": "fixed", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored replacement of three eval calls with Number conversion; source tutorial also documents alternate numeric parsing.", + "prerequisites": [] + }, + { + "id": "nodegoat-benign", + "base": "nodegoat-vulnerable", + "tip": "nodegoat-benign", + "label": "benign", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored comment-only change: no new defect; vulnerable backlog remains. This label does not mean repository-clean.", + "prerequisites": [] + }, + { + "id": "VAmPI-SQLI", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/injection", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ] + }, + { + "id": "VAmPI-BOLA", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/access_control", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ] + }, + { + "id": "VAmPI-BOLA-BOOKS", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/access_control", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ] + }, + { + "id": "libpng-CVE-2025-66293", + "base": "libpng-envelope", + "tip": "libpng-envelope", + "label": "unsupported", + "role": "envelope", + "capability": "c/libpng/memory_safety", + "provenance": "Arithmetic/bounds is outside the current abstract domain; measures graph/cost envelope only.", + "prerequisites": [] + }, + { + "id": "ghost-reserved-population", + "base": "ghost-reserved", + "tip": "ghost-reserved", + "label": "unreviewed", + "role": "reserved_holdout", + "capability": "javascript/express/unreviewed", + "provenance": "Reserved from production API/module/async shape and public security-fix history before scanner results. Manifest6.64.0-rc.0, Express4.22.2. Not an ESM or Express5 coverage claim.", + "prerequisites": [ + "Review and freeze supported positive/fixed/benign changes from independent history; select family before scanning.", + "Freeze core and existing facts after development; preserve reservation and record any contamination." + ] + } + ], + "config": { + "ranking_mode": "evidence", + "engine": "joern-4.0.625", + "facts": "32edb6e1a78f1afb08ac4248cd436be16663e0d90dc1b3aaf948f2ce49a5a8f0", + "queries": "cdd625fc9013f43452a76ec727282cbf82374f3604be36648b6dbbd6aebf1535", + "policy": "aab46d801c7e775d220b90672e8eae38f1f66e80d25ac28338ca4ef4f8869bfc", + "core": "fd93ec1a320dd81c824b3ebe489065d302174cbd354928ae152e8b0b98da3b0a", + "version": "first-replay-v2-2026-09-13", + "scope": "full tracked tree; declared first-party graph/target exclusions; evidence ranker", + "hardware": "Linux-6.8.0-138-generic-x86_64-with-glibc2.39", + "budget_seconds": 30, + "targets": { + "pmpro-introduce": { + "path": "classes/class.memberorder.php", + "function": "getMemberOrderByCode", + "family": "injection", + "lines": [ + 936 + ] + }, + "pmpro-repair": { + "path": "classes/class.memberorder.php", + "function": "getMemberOrderByCode", + "family": "injection", + "lines": [ + 937 + ] + }, + "pmpro-benign": { + "path": "classes/class.memberorder.php", + "function": "getMemberOrderByCode", + "family": "injection", + "lines": [ + 937 + ] + }, + "nodegoat-introduce": { + "path": "app/routes/contributions.js", + "function": "handleContributionsUpdate", + "family": "injection", + "lines": [ + 32, + 33, + 34 + ] + }, + "nodegoat-repair": { + "path": "app/routes/contributions.js", + "function": "handleContributionsUpdate", + "family": "injection", + "lines": [ + 32, + 33, + 34 + ] + }, + "nodegoat-benign": { + "path": "app/routes/contributions.js", + "function": "handleContributionsUpdate", + "family": "injection", + "lines": [ + 32, + 33, + 34 + ] + }, + "VAmPI-SQLI": { + "path": "models/user_model.py", + "function": "get_user", + "family": "injection", + "lines": [ + 73 + ] + }, + "VAmPI-BOLA": { + "path": "api_views/users.py", + "function": "update_password", + "family": "access_control", + "lines": [ + 187 + ] + }, + "VAmPI-BOLA-BOOKS": { + "path": "api_views/books.py", + "function": "get_by_title", + "family": "access_control", + "lines": [ + 51 + ] + } + } + }, + "gates": { + "precision": 0.95, + "recall": 0.9, + "completion": 0.95, + "warm_p95_seconds": 30.0, + "fixed_false_alerts": 0, + "benign_false_alerts": 0 + }, + "profile_sha256": "b47cb63d8d3ef33e9117f50fd96934ccee871d0c571eda32e336191e9bbe2f96" + }, + "population": 11, + "recorded_cases": 6, + "measurement_status": "recorded", + "cases": [ + { + "id": "pmpro-introduce", + "base": "pmpro-fixed", + "tip": "pmpro-vulnerable", + "label": "vulnerable", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "Authored replay direction reintroducing the reviewed operation; not a claim about the historical introducing commit.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": { + "case_id": "pmpro-introduce", + "ranking_mode": "evidence", + "rank": null, + "rank_kind": "selected_question_position", + "selected": [], + "deferred": [], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "timeout", + "cache_state": "cold", + "timings": { + "total": 30.63820442801807, + "build": 0, + "query": 0 + } + }, + "problem": "target unmatched, unanswered, or lacks exact witnessed answer", + "input_status": "ready", + "input_problem": null + }, + { + "id": "pmpro-repair", + "base": "pmpro-vulnerable", + "tip": "pmpro-fixed", + "label": "fixed", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "PMPro upstream2.9.7 to2.9.8 parameter binding fix for CVE-2023-23488.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": { + "case_id": "pmpro-repair", + "ranking_mode": "evidence", + "rank": null, + "rank_kind": "selected_question_position", + "selected": [], + "deferred": [], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "timeout", + "cache_state": "cold", + "timings": { + "total": 30.613278800970875, + "build": 0, + "query": 0 + } + }, + "problem": "target unmatched, unanswered, or lacks exact witnessed answer", + "input_status": "ready", + "input_problem": null + }, + { + "id": "pmpro-benign", + "base": "pmpro-vulnerable", + "tip": "pmpro-benign", + "label": "benign", + "role": "development", + "capability": "php/wordpress/injection", + "provenance": "Authored comment-only change: no new defect; vulnerable backlog remains. This label does not mean repository-clean.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": { + "case_id": "pmpro-benign", + "ranking_mode": "evidence", + "rank": null, + "rank_kind": "selected_question_position", + "selected": [], + "deferred": [], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "timeout", + "cache_state": "cold", + "timings": { + "total": 30.634440443944186, + "build": 0, + "query": 0 + } + }, + "problem": "target unmatched, unanswered, or lacks exact witnessed answer", + "input_status": "ready", + "input_problem": null + }, + { + "id": "nodegoat-introduce", + "base": "nodegoat-fixed", + "tip": "nodegoat-vulnerable", + "label": "vulnerable", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored replay direction reintroducing the reviewed operation; not a claim about the historical introducing commit.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": { + "case_id": "nodegoat-introduce", + "ranking_mode": "evidence", + "rank": null, + "rank_kind": "selected_question_position", + "selected": [], + "deferred": [ + "590ded4d9ba52b59e2934f3d461e45dfa5bd351f13c4fc17238297438fbf492f", + "33ab14574877d6a529a58df1926e358759fb4ee1ffbc68146aebf77a895c8eb9", + "489bf9f5f3a1e3771698cf111c0e7fa3e84f81848869c88a44cf3d19979d168c", + "ca3b943eb07fc11f6cc16228ae4e7813cfccac5dfe7ea9147deb0ce84677e486", + "a83d9fd2d4f399a40984cdc63e30003a73c98a6986f76fd5e22ed0ed7873c8b3", + "593c9114695f69035b4df9d566534e35fcfaa2d78a3e4362c2ff634580d6bee9", + "87ba1a35a429f850990db0eceda9996daf572b97b32b38e0f7ff4b80dec9a6b2", + "e9cf95baf8cef9a83d9da86e0bce276421ed404867ad948acc338fa759a3450a", + "431521d90fc22b7683173732598c39b94a25447f7403dcd4d9e17ca23e243a61", + "d331868f74b26a35872e8eeed4f66f3e34a29f8e9745fc14c1609cc3408aebeb", + "61b6ec72d6c0dddae427635aca3c97681a112cc4c5f8e4367d9f5864c6eb72b3", + "e831bbc3ab250e71270b1f5175756f39c2da662bffd68b2ed78b5389a4f23d0c", + "082910c464337b0041733c3c2733ad7947d71549180f9a0b8ad4172901469d02", + "14541cd08e0b036e4ab5caa442c01459fb03a6e3ef0388bcd0347b121effc6fc", + "da4abcaa22e13947dca90ac9156293bda9297423304d60d587569389742ce17a", + "29000feef9d494e003efdcbb6eab5410bc93ad2f4674df9db389ed98a9cfb242", + "4679cce5fa8da06bd1f9542b5a58321d2b090556cce83080b6e9ace36d352a59", + "df4a0610953efc25e4ddc4bc942688434be889411d073fab09015aba97ce2511", + "9b7910f9f96aa714b760481e46e543ea413d6e4763b858a3d0c186a560ad618c", + "298f3d69ca3e2b343c9cc5288680120b89e035bfae803dc6f6952358b6d0f1d3", + "7fbdc1e100a0b9078b6a2d6264bfaa596c64501b8c5ced1557b56a3d98e2b351", + "e4fe7eb3e5d57766a2c6adc79d46b9f57ac13ba11df7846cc4f7d62123a51bd4", + "0cc9059de118ef8da2ab45a3453bb2f64a679dfa33233f3b1b722b3858df789b", + "d561ce2e09d49013cacec011cf5dfa8c5f35c25c41085e856b3d5f28579ba6f4", + "7eb45f19bf15a2826d7aac45f36137de8824abfa9c0d5412da3c69c5d6da7a0d", + "ef130caaa2b3321cd12e2c8c39a27f9a868d2405e572fcafa5cab93900d9f97a", + "115b829e9b03431b06c12212efdcc2da02b5e22953e8a02243a8cd5a59cea0f4", + "db0e20f3ffa3b74105bddd565ba608daaea4cf9baba6b43a2539958e1a8be668", + "d2034c51a6d44b7b5cb553f2ad130441532b6be68cac0e829b74c4240aa642c4", + "1d7abc4a4a8c6023e1c5231f46167efdb6c476e4533ea4670a17ecc6c8d09c92", + "ba984e9deee4ab97a4211ce15915bc36e0e42907e21f40525be95c698c439653", + "ecc80bd3363347eac23b60a8ec50efe1a5defd3609aff7149022fac1e74524d4", + "7cead756038bdaf46936671d2311c93b391692337189bd9f3acb5711dcd1b594", + "d7044d436bcc3e7e313fb2baff364c8aecf980b28741afd4d020f858a47a3909", + "f0fb49041bdc02002b8aaf574a29a738aeb235ca0bc5cbbe9998dd9841e93a0d", + "f12e400682d1a222abca9d05f942a24394d7795eacc7ec322c585a0a6ffe69ec", + "5e24ba3194915f95a2452882fe928f834ed4740f8fa2087c7573b7c2f128a2ad", + "4d7554903c7ff3f7005fe4ed77f7e82af8cba218d3ac0b431acf14d18ffeb639", + "896720a23ec5b7da3163d53b517817cb01337cdad64d2104dbfdd3b3526f9c5f", + "e13de3ef10e25c529870483b67e47206b9cd32251e118f20f628eba95236d9c9", + "ac5ad3cda567527eb97dca35bb56d076292b88e20baa36d337967eb1f4f63dff", + "7c0bba65b77fc890e479add54e7fb0e9a7d145a4304d81f614536a8470d0a471", + "4ed8fe95db377770a47a2b3ad04a3a720ec21bdbd5222272ec5555130a627fbb", + "ece73e32fe91c87a001f1e41342e09378041ee876c8a8846a51347b8b607cc2f", + "8146eab0359ca0b822353b632ced69bf09fd449704cdf7c6f84440d7ca784cef", + "ec7c01083f1fcb35c35244172a005b3eabebff9c0fd1dcfb4372268f82fb3894", + "ca89f1fd26f88f845f394fce84527e83c6a4cc8252f30d6787e7c5ac13e119a9", + "c3b4d527dc5c4ed121a487d5e4e3aa868df773ef3b04200802f9a306bf67c730", + "9e5735029a42e23af56c2cc802655bf46c55bfebf19f19810ac16cfa15fc688c", + "a562474ca19fd4d4ec052396b656b092e82be7b1c002746f631cd9fb68b39ff3", + "22e26415a3768b1b12cfb9469b912d359d0804761ee7f1d02d281600373dc8a4", + "03548d772fd2a4030a9f595257333eb9b323f1057a2a0399ed15efea113e719d", + "0f5f635e19864fbd276fd3eb0b6460f86274e6bc52533594879fcc42c02e4df5", + "f95e55b8ae987f7c4b11837ddaa8dac8bed46541f6d8c12633b46fe915b41824", + "e77b04a213011bc3e9812f81c2d1266be1234ff91a72d347b71017e8ea09f4e4", + "f7ab6f0b570873d6b99c3fc33ab556f093d7f5e4991eac884d3e766a2c29b326", + "722bfc188cadc50c1485cf4ede13f2b62e93b08b16f42f2586c104b8bd3745e7", + "144c1db7c40aa0a420e02130a756c7793fc8fa5d33549a08c236ddb96bad2df3", + "6bb3ba6475ce8d11ff20924b69721387bb0d4bbce1b852e640403dbd750f0a8f", + "a08e3f98d65d0452a631a11de0ef53c9fb53492efcf3d8003b5512478b92b4bc", + "4e0e78390504d44716e20ff65cf5f16c1f1ddc2fa0441e503dcae1826c666529", + "0e143029eb9d5d5c30c3dc0fda147c852e68d4e8d407795a1047beb586723238", + "43e8934e37c9ecda6c36b4bee6af63f4269e59cefb5df30af45ae08bd93f5063", + "6ad6e59fa1a92132e095463bdbb461598c80b45af85ff453a6450b59b61d10cc", + "c2b3c06e92fa87731137f871b9dd0f867fc53156a80bbf00da955cf5bfe0fe7e", + "b7b9b9cb1194740a47fa214266a43fdb70019fa1308009589d38f2c7662aa4b3", + "4d3ed9000a9b5806a0ed641e2739166e3df18ffa1925ee396fbe25d29e332c71", + "bce9e3fb76d6276772f1f279260ddb2f673a4a45a08f13fbc75343d20c0ad4ad", + "f0aa35455461c8f75dd8ca533e03dd43ea339a7026f07407ef26b12c3fe6f44a", + "64c0f7e52fb34476d5e47478ff354845a776dd781a2044963cae3191bb18058b", + "9f9eb159649a2e07879e36c4f5eb5bbb38e337540c4b295adb4b59ca31e2a868", + "bfba8296d9252a696a7f8262a80b63019fd89fb866e3d3daab087101c9d7ebd2", + "6b6bc1f8b05dab47833d180de1fc7b40d8637a213c87af02f19bfac2f9439869", + "72261efc87c3f66bd420e106d6e04235b2d6a7b4c59ceb5a235dbfbf31d02f29", + "94e30a15524e236d04ae2f0238a72c0b446a48b7b4302471ad6703861948025a", + "fa59397c0eb909b5b269278b706ba8432004d786cc8431db1e27fdf9614211bf", + "a65d452c03e7a0e7bfc77d9337f0c3f6cc47449979963ca1173f45c619b7b812", + "135f8cdcca313308bc5456466706c561652768149ff61e93f241b383c07448e8", + "d029880ad27458bf1d443088b6afe399af206a9f412fd8406769198f304e64f5", + "2ae591e30078f1e045b446004067a4734acda37a9673dbac82bca972cb5f8c2b", + "b35cc9123b9c6316f72cdbfcd7945157215622625141e56543a4093c0c553013", + "c8d88ff3a98aaa4eba3756a5f0b89cdeeeda10e5180f5eee0d3ae2b7dd042cdb", + "f06f0c86aa4079e5d3ac48ffa9b50661a0bd2f4c315190b26f13664de494c9d9", + "627afe91ac03ff52d178f64eb23d372523f86fb34fcc0ca0dade6786c38f0dbc", + "ccab701536e7f9615e52f4b1a1c68a2416263ad8de279372ce248fed5d7868ed", + "bb71e211e99f3dbe040a15b22eb7e004da953ca61b700ca3d1c94764cb6bb80f", + "d799a15d3d810c39c4a519c59843bbb6c2617f559f8ebdefe801296e0819149a", + "d6a24a60b3cec846b01cb2c3a1535ee2ab834a09e935abe70ede278ecb1ef045", + "d1cae428bb382d9cc38acac1c7bb8a5e6142a46f5b0e6e2ddb1609b0acc66f68", + "c46c90f66921363f974dcf82aaf3b3410222ec081abe097417dd1a1accb372b4", + "5630ea72ee47272cdf5f9e3d1df3aeb499c357880ad49b26cff1cebcbbaaaeed", + "013a84070826e011c0b19953b3493276e98498b3837618303aff28475b38eb2c", + "c158a154e2b9394ee661d2f982e93af8d59543bb7da5c8d2c8e9c65905384d4a", + "a0423c87fb8581f1897c9a0c774c3881ba8775e05f6cd88408cee05d126ac52a", + "7e9c5dc7bc705ee6825fcebe23ba885a4be30b318195ec89e9a19b450bff86fb", + "c6c5a131a84fabe329dc50128240b463b18a4ea0af2d036bcc02d869ec57fa7b", + "ffe9fe5d19fd7233e88869bdd2f6fe00785a9b15d074a3f8b171a03121ba64b0", + "324cdf414ea58e6d9496c28b138b43bb18cd6e983fb7678aef960670a51dc93c", + "fb3bd242d8f9801589ca53c24a1b36b88ee1e6b8932ddb6a5d3bb7b3019556be", + "5784aa43502be5cfa00e65ed1800bc86cea1b83db7b99737a92e3059c0aedb51", + "e05d1e4da035294fb1b5185492276e323b43a33c173dd05390edee2726f82f60", + "480a6f9e635cdb839e9ed2fab13d22291dff3c92ae99e1bf514439b370480f24", + "acc5d491964faf3f4858dce3bfe338199f9b5469c1ad33e64c2f0bfad2f0263e", + "e14724d931f179f9298c723043307a99153207ec425d4fae28f78becba7c0a9f", + "756d4aea97736b83d6904a6d96d22e8026d24796d64d6806c2fcc478272c16bc", + "8fc292a32ac35211b4747151ed7797cdcc9cf7edca0ea697f9cd9ca9eb2bf906", + "0434560a038fb3a29aaeae6531b7190a9a993f75cebecbde4dbc5d9f248c16b9", + "5c7e3540a665e15247dc85c88bc06f2514da2cd85010ec820cc53548ac751009", + "074e2d12c8900202ecd6b02df395375ee6343d1c04c22982c214e74d38fdf51f", + "cf2f20c22b8acc270d75b060b45b3725d2a4a0bc4dc33adc9feeec336fa84f31", + "bb67a42d62cb5389aeb41a0e18d26046ab4f20feae70cba114ddffd5995ac3e8", + "ad9733cd531deb592afd4650ebd20d8c967ea49693d2954151a70f4a4edb68df", + "572f510d0485395c2ff610cd031d238c3745f79fe98a8f9fef5b042c24e57b69", + "0ae9ac017e10c4d6256d41b99b5e771d7e8acf05bc1087acb58148a8ea2e8c5b", + "691315c9798b266ce8aaff0a6368a80e40c685c1a8e3a54fe139131f4d6da7a7", + "aee4c8330dd8ef28010fdaf243964d48dec427871626422da8d915843534755b", + "57aa82c0185ff3d73d91dfcbc6bae9b5d438cf064ed0ea9489d6b5de7c3df531", + "79ed0c8a9f7d6b06e75ef023d6ca5a32416a9c8fbd5a75fd97ea1c0e8f7a5a30", + "23f9afb28b6b7349cbf502c2a6a1ffff117d2b3a974d8705b99fc8717108627b", + "a6f0fe4aec662565f32d93874690023ebe09aea9a887b330e0c64a18e41dc966", + "aa5a287a1749ab0ab4e4b56048c738b95df8f4b19a82378847a39ccb5eb42315", + "09dff44163511e71b0fbf539655ece1940bd80039bc8743cc922699a37340b71", + "567b6eaa4c3dabaccdfb44885a6a4cd345ce3ffc6a201265084c1818c0b84226", + "881e7f1a45e2d7ebf74842b131573da24478db0c44ddaea50ca20007994387c0", + "e9a98c513dc38db66988ce7ed9fe730df4ba5297f2495c77a54ad2aa9195b9e6", + "f7484f28717752c36583df6d2167f9861bbf8368ac7f18b8a7c41ed41f301f37", + "c0c4a04d19b7a5f1f33fff97f49a9d0245c4b14d24c3691cefbf46b76c064d7e", + "2b86fe6715dd628b59d2303d2939369a6ebff338e7c9a3f41a5e76371e70d56b", + "3663dbf64c23ffed29746c390953bb4c54f0f3154cc9fa65e7bf6acdf7249702", + "8beedef6ba5098ea3567e7e9dd3ff36fa7ccf418f7a8dabc5cd1c8df83ac946e", + "07ee5dd2f228e5d605f204a0e607fde140b169321c49486f64ef0ef3498defed", + "34ca592cc7c4769ab6ab180436ace3d801b26463a0915b253459fbe8aacc7ce3", + "2ee6a26bbed8f2554b909b310e8fbcafea825d9016c009fa785f34121053ae17", + "6dd70277e9e05c3828bec89c4cc94f2b256eef50554fe78b7bc7805ba0c77d7d", + "448a4023be7987eb4282a5534d6369f7e8ded7ddb3cc29c537a4e09ded04434a", + "338e654fb02855abf17360c328f02986bf949d898b489ea7b9b29ce090fd1eeb", + "bbd12c331fb019e0c84c5629c0b4945609328a196e3862f6f6dbadba31da81c9", + "06ea156efb68bae0ec77525ddbd4eb18c1c97512cf524cdd7661286b48a2684a", + "163b26e0bcc1ebc83d620624356e8a535ba4a3130af719e57a4dad9922d0ca1c", + "ef7c18370144ac600fa593af56a8a849f7070b91261415e8e3cad6bcdadc80da", + "f196cd68d51074be3989e323fc62287af695b781697b91b658003c825b426ce6", + "a763fb136aa3978b7f47acb90aae2c6bb5715e8ca5ef1088d7856608c8807071", + "5bdc9a08c76139479780eda09106fbec03bd5662c1817f14c0893abe4c22c798", + "4d34d526ba5ee10314a8f6a74f7fedddbcf0ca79986c20a5127dbb08acfd6c43", + "2c2899bd893f9611640844c56b404e5b91768151cb862ff497bb823c505d568a", + "be30cb63922297543ed6c72314d3b6ec3d849d3c5d28fc3590ad44ebd82c4f0e", + "28f1d0d25c8654cd762a439d6eb6f3a6896d37071f406d8edeeb4c20adee20ce", + "f6a81369acf1c84e3cd6bf3399289323cb47848984a8c96800c0682fc1055a04", + "94b9c4a91bfce96cbe773c203dfdf22d1b015231e91dd478399c2586be6a3e77", + "526ce466755c525287df1a2adbdbdf566c896d79150b9bc7dbe65936e83abb30", + "57dcaf9ddb9d8b054aa5dda6a0c9739439362e898cdf22aaf9f7338149f8cbd7", + "064ff0d84035d834f9382eb8b4ad901fbeb4aa9fe816d7c36a34d56af41817bd", + "d97343cdd389cd2ed9d0f1358d2bbddc2752053d95eab3e16e99423298a4371f", + "f9deb31f0f9b98cad69111389734d43ed4fa86f24b05c9f2d48a78ea7a8708a3", + "f962a89d04810a6c57abde4a8d3182d2a31c5d0f0ed3c37c053abea1fa223f31", + "b62ac1b4b282eadf241f508bd5769bdd440b274f967d6ca73cb685ca249bd287", + "57840b0da13c3f6f67e587689ab1eac913c17e91d493d1ce9ff089e8dccdfd29", + "e3d1ce3b9de0fc9b48f2432d5e64947b5b24c3acaf1166f746bff1c54a028b9b", + "d322db4b50c2c1bdbe0e22ef291070e20c93e0f7199c184f5ff8b4795b55cbe9", + "88371d1acc9bc3b69c1d1957b27c9aefa3835be37bba74a359c35b1beaddc2f7", + "3486da81fc55b7e285f23e85f44c481d780090285a384cfedaefa27265a236a8", + "c87588b38d18fe9a5c563e2ae8d79649ce699607a891bd41b68194ce4507137d", + "d6e3d356d491e5f3dbaca74cf11aef9bd751b36737feb34e466b707156b0d779", + "843197ad039bb4e840b949b0ed1e5cf2230829366646a92ffc53d63e26149867", + "b0766042c55d7c370799af987bed01fed8a417f83bc67e21d1366988aa1af10e", + "b788ba22bd4225c24f95821dbf1f467dc2b13c7615b0bd2b00c3b234b7519539", + "91430345496348280d29d11662aeb6048fd7596fc6304380b6154494df30d154", + "8c1be7b4e8fd13181be0c4e46350a2f972e24acd13427e71c15e60dade41c28d", + "f87a9ae1d7dc81f88c5891890b889aa7212e172ddec092182b7de6f01e787d7a", + "b6a42fb01b464f31f65ebc10fbc12fccb051d8b44cac51a6818d3aedabea07f9", + "4a820a780053b6f65492691e067e236adbd2a05b467e4e3f2ed37ba1260ce84f", + "b07131192ab22510055930477ced5a10698278b2e00e3f711ebc202db640bee4", + "5fbb00d9b2952ae4f0fed217bf2d8603872d8fc93073d99f31d8815539121987", + "0bd48e207e95be86ea4e459c090a75c0adac8ca31bd2b631043854551b2c4392", + "b11de5874aa62f939e383179c3ea1b34d3569ec6ade901964393b92f8325ad11", + "8cd692618bec00fbbf099d570561201a2d0fdb601050fd20e198ead478530675", + "19345b5fb5cecfc86e4db3cb8715cc7370e81796d70f11ba150a13c5ea8e4c37", + "3ad0b3549b82f93ad869a9341397d394c1acee5e18d94a699b118094dd7a9a70", + "32220b1bfe511b9dcec64d7ea8f4317e96b2d0cdc10bcfa55cfa3b63ce64aab6", + "0cca9d955282f37dd60e764c56b52cbad90b33ec2c2943a7e5d155d35b0417fa", + "40d00274aa5b28039b0d57d75a81f174c0a31e4be2d324ba79a64b79efd4e411", + "319d00690097314e26638e2f4a6d848f50d1ff2f9d6f755a618eb31398ed373a", + "dfa47fe83d195de69774c841747f6e7ea78d6d91297821dc9b8ee5fc625cfe2b", + "5a497ad4d83218c29d4f22781a54d9e1927dc414f7cba6f89d794ed047f8b245", + "1bd3f2289cc1bfa889496ca5074991941263703a2517281734f33d0ef1050f1a", + "587a689c0312ac0f6d98de7495f01f34428cb128e73875a71508f7d5874415b4", + "fc77f013f48b454d8703f25f76646f74b74c9e4f8e5d542bc5f48d98c6e51fae", + "a2a7af80da34233233ec619dc29366b40a9e55ead63626db185524f2415761f5", + "f180a77f032bfea9c7d152438ba830f19e1bfc88481a56b9e554c61d2cd64f6e", + "cb70e9a1b44fa1f13f3bcc5290e6db5c8d6eda83602c9513e91e779ac6cddd3f", + "74f543e29e519871aabcedb9d39c953d5397aac456c3c5e6eb0e10e517989eb3", + "c983c339bc6881a1e6a0b2c6a794de858613b91318205a623dc61d80c2238036", + "97c5314218bfb458e1fb6d1a33c9ac75c7de152774a736f6c5874657515ccfcb", + "0744dea5a54614d094a6eb711ff7df94a180bfdeacaf330e31d9466cd51aeda2", + "06dc1ba86d3fcb46096bed80d9c5c558f79a5a33f4fcdb379f1567b1271b64ab", + "aa48541c8cce586b7a8c5e8ebe3cb607d1c283ef8940b7d4c7fb584327dd177f", + "a9d086126128de76e0bafc06ca465176ed2884cb7ec963457fe106346b8094f9", + "637323a350346cee17c66cda9b8b1be49d58350b0a0904bd61e5af20ce611df5", + "aa25524f30b8e84ef80b52064a75ca56cf438e67e2696e360d683c03e85c4c6f", + "9b5371eadea2bf5707f730896b4766a8b56012269f1c02c5df9d0df1d1cbf696", + "d527de43dc2dfdb271c213a927ab31c08b1f063298b211b6b11831a4dff51922", + "5ee4f0b0ba2c39e7071bba12da912c1ae213b8a2cee0bb437afa500328a237d4", + "43d3388ae21433a62d37d4c92861c125683f03a0edd9d1afaa56a42a7b793dc1", + "cc8161804d4c84fe4c4f7210a16193637accc1f791b7fc7be026c07177b7da4c", + "4bc68b77bfd52e96e8db4fb7293a6d4f396d234eb4dafb625df76bc8f1ba1c7d", + "a66e57d86751f21d11652bc991ffe476eacb638f38f95947b723ac9448c5f668", + "278e2e9a97727da969f8d122576dd475c43141146f984e3af997600a013f19bf", + "3152613ac0763b809bc99a50b728391cfe19d2cfeb27ff47a1e3671ed7526a3f", + "06168cf4f7850405f47bd8cfe013dc077b51457b355698ea3407f998cb561c2b", + "44620fe943880d4498587b283cf31a67b85fdeef53f59223299018c3666ae32b", + "eaa4fc381ad8dd4a49b66bbe7ccb050b2ed8735ec0d5eaee4f555fce0ff39a8c", + "68a35789d8aa7b4f5293eb06988118bf39be4f0354e6dd89674da130c4ff7911", + "3c9cfda0c903ea8e97a9bdc2966dff555df6580479782ced9ea934837e3bdb5c", + "4367699c5a75ef7a22a52ca8d1b77e15ae6c8c18b2ec5fa929d688281ff34edb", + "f020689fd3ee8e3f51d12f177d80fb80aba8d3435a9f58e63cf4caadc02eca10", + "06f7107e12e2f2c7151d2c38ca31adcd8690e7dcab4537b37183561a9306208c", + "2f8516c90c01cfb4bd29a3b8ad1b61280436a37804b24929327cb41d8eac39aa", + "8f51fe6438299d6f935f48d1d0991270ad477174195aff8574ef587a45038efb", + "8d26ec62881cf7efa89509047c178e7b920a87cc4bfb9cb0d6d991e87ca22124", + "ec5cd96c01771e651d9e09445c5df8af453e475da75f47a583a1006e99686b09", + "2981a228c15eb8a02d051bad6ce39736dd5f4c3f63a979d997bc23086105cbaa", + "7055c8f3c6f41ee3593da37fd92332c561907e07a633b9ba7bf66347cdccb378", + "68b25a8b5bcd76f92ed9473318e67e752b5898eb6b34c4a1205b77a88dc0214b", + "435b8c03368213b50237bb6f7a4dbfad4e7ba8d4f3948b046a5e95ff38c739be", + "f553b646e7933b5f766d1187c3bb1aee241ea0734ec1c6addc08871c43bb7c64", + "5f7e12488b0d469ffbaa32d1fa766352c8672ccd9e81f503480cec626d1f88b3", + "86fed64323e502425165fd4b319a848da156ed4e1acbec6ac706b8f5afbdc1e9", + "3273da703327df23094325bf9a120c3bbbc9388b4bbbec32a24b768f4d02669a", + "cd57f10c8a3c69b40ea2832dc35837d8a7521f2a17b2936eccaab7d5bf482dd5", + "fe62a9ab0e66c65344f94de1006ed30505bca06dcc7619ca717078a09afafb91", + "f83f5339fbbb59939406f37a8053030f00333d809da78196e1dc177209fd0e70", + "9cfce61b0d63c05676d62a7dac8c1362d78e2e686d6a8b53c56094bb2014ab96", + "dd387d649e718c5d7cd9618fab6cf60bae452924f4e0b36b9b9ee9d4b9738ef8", + "b4e9704f8937686cd738c71fa7250b970fe64be89c75e36412cf4288e7911371", + "b2d3838be418d29c1ebf100d269591a89b6e74f81b822cff71d8a9d9548dea0c", + "e31733d8cd5174ecda373492fb9ed3f56fffdac8f869380c06ee9f185821918b", + "3c7b69a99d3765c95a713d27af4ac28d7808ca92543062610bdf24edd3643790", + "cd639186013fa4488043c42b05357e82425a3e889ac14679eef46b7388cecfd9", + "0ca04c8edcd2d8a247e575209a9e5c8a1cf86c39e6655d79d6f85ef41556ef71", + "d8cb785d9bcf0b1a8289362c5badd0db084f2efa3d831fdda8ffbc5cd423febb", + "c932a2fea0cf3a50a44090757e856ecaa4914e385b566787b60877f04c947002", + "1d3d7b3981fee634842a7dc05f5e4d1bac279c0ab8e9df78d768f43676186340", + "155e5683914f9d0fff0323548d9a531ed582e72414b934e57edb656579cb05e7", + "486352981492eeca9626588e8aa0a737dedf797d83a20148cf86aaca0e5cd660", + "692125735f88d08d8cec81e5564ed2f20d88422cb693407e8b569f2b1e07050c", + "b9195800d5bcce2e36a49a8f49f1674d9913dcb526cf50d1097ce4bea82407fe", + "92d25db73aef0c89d7f6d45a21f56bf7c0b3854a0c8d19db7bc7247ed2244f78", + "9eefbecbf32c98775e957013ff48c835781e52d91e576f81eec2c079bb61acd5", + "9a71eba84ef99ab18d46121f3d387888c2ebd4054b85f3cc2fe90f8e75cb6538", + "5fec8b431826e32ff8b6d3da66269f1e8561573bdbc8602f3fb20fd5e1bd8f44", + "117d803b171807fb6ea627fb8eadd75abcb20606fc3acfea76def5897a986f35", + "71a5b2e0b33d5bbb1ac73e6967b839cdfbea4de2fc828ec34ae8e40f8dfe96aa", + "3175ca255e0323924a203bf8aa949691546196277c5976052ff0678a934fbffa", + "7b355ea64f6dfd26a0ca7c433c31b1368e70d785f31c71caff4df6883245d409", + "3f00299f644f669c39db368d2a0df198f572ce9c8c08c85a94fd8c7db9cb5500", + "3e4b1620b66257264d51007170e6b0c49729b4731e3e1d236d188dc325ece52b", + "ef62a3e54636bc30ce5b75fb14e4753986000fed2eca3cb11aab716c88729f31", + "53635a42011bce8fec02af0d16ca0cf4b994332d1ce09551b99693a1ed59d247", + "0e4f65ec98ba41eedab3df06256eb227c558f31fee052a4266b3539f7af08275", + "23a5e489bbb5740c0c685591e6b73a7096bb238cad11e8d7e84fc9f4b7f55207", + "b92a8731fdc1bf7bd7bce4084892f87e4d9174acb204ee163cebebcfcae6a5d8", + "2e55a819e3b67123ec2edfc304418d7fee50dae9c9b922c3a5d250d6f7c9662e", + "3b6aa69186293835af4c700678ee9bb810de2ab8899c93cf245e01537742f5a1", + "2377ef08168881eba6f35e080a5fed4608aa733dc9670f59d45ceee5ce08fa47", + "2f26d70299414d84d00c95be2fd40758bce2e88a1fe89bedf898395894f501b9", + "5c2048320f765e1756e7a743afa544a602d648311f4bb8495f3d43de0f8cea49", + "e08780a749f547c02460053e2a258b64f89ad494c042171f2e8a426f3c9a0520", + "97ae7d3c4e6969d04821c5ed50c21a914379c1a1b3b5e5dfd38b26438e249f2f", + "6e181d25ef0f246585e55b5eb77c8e6191fb135af98e816b0abd841134bd5d57", + "271afe681be4d6c7c09cf9b4010888525eb1efb66cc2501215894c15e2898519", + "e8e670d05231f561f6a2ea1c1e08a560a96bb2674ac72851dc29da697ac169ca", + "8726ea1166fc378ce1bc6bc99ba52e93416fb5d1fefd812ea29de503077d548f", + "3cab3aa4cc41da609f367c1c57db872b8cfcb7b2f323516266bb3d8fa36642b4", + "c5a186e0f17d7af521efa20982916fc813e1b7d05295c3da7730ef6b5a48cab7", + "1738964f08db1fbe6b5965f7721be058d80a4e1ec976ac743059a5b31d6cd7a7", + "7f10a07aaba3a86425dce315a22df012363cd11065229f983530e2156fd77442", + "d97c168cb31e3390b66dc4f61020d70ef36ec9bdc679c2b64a79dfc648238207", + "0db0f54012e0427209e8a7b14f787419a4a6cf8cfbfd7e985e34898c1dcc3b5b", + "82d9cb547ff915752dd430f4b91c03970ed3cc9e376a93aafea77e196cd1998b", + "88f50df0343fa95532cb3b9d60cba5cee24c7e245bccc8ea06d8803d43f99f75", + "525d6f86a91046bc79ec5e19e21eeb42edb94aa9c1a3a6ff669455aebbefdea1", + "a8387bac47d88608c9a58ab2916857b9fc2fd8a1d52fc5d16f79bb4ab8be40e4", + "57ea90041e625ad5368caca533f024381987b1afd81d092b28eed73f0c8c5499", + "3eead9155ab4b5705fa08efb59ff16f1705d2eca4a8d707e4f633731bdccd8e5", + "e1d445eda8d84d9b3972b06b657c3be233a2c77a2cc146988c3d076b11b2f906", + "0e6a4376c4e70a27e5bd632511b761c70d8fe6776f93691d26262e169965152d", + "94df997fee522b612e12ed3596618cf27aa3a3109bb459f16eb6b6c136538295", + "6397f7955219931bf05a5b8407360c4b71ae62002aa273ed85db15276dcfb613", + "a3880c761ca9d0019b08cf255540fa495d5d69593e9bd73fa6eecb41dae42859", + "33e09133f59de09d87866389533ef005fc2c34de8a4cd68ea1d528d3c6df4165", + "58ca35a7300e2d7edd5acee6de464da5593d81380aff9e99fad2bd1d8c0dee68", + "2d8220d8b7f51f9f1082d903f592ff051faa4c37a46fc131c31da1dd2a233ed0", + "0148345468c538297511e912438b1ff6f0bcc70d8058f87ff70b5f944946395f", + "cebf3f7bf74150ce4fbddbc693fd6881a8d18aacbb54b8e33097580fb330e273", + "b8213e35bb6cffbddb211df8497d7c37f33a800f3a729846b041155c2f82c7d0", + "33c0d02c59cebf05005b834b6354b9d11184238c087a253b86e5479209a57d61", + "cfa8f4a6860419485b27245e5f66228003a0f4fce6797dc9e7fb5d938bb61100", + "633e780f4bf491dd0635d773334d7d2ca15a670d0d78681871dd88d77a2132e7", + "0b51f52c0d43beecb81fb62c82a17850a11aa6faab7527ea4833efffb0b4a8c4", + "c295b4b3d54eb3f602e5b7b6f302dd9c66cad44282af938a158887a4b64e6400", + "a9979735925dbdc75c01667c69443c96f645e530ca0fbb182c1d515093799d43", + "9fffb2f1348a76b735b269ce0961460b780c22882cf471ae5f1c1fafea3ae48f", + "d06f59868c9200c0d32396ee176a3260ba3940e0fef382b1edeb189030ab043a", + "44110d2cf36273a7c292ad5a9fc73bfa40d5de4b0188a8bd5d28f6439e078ef7", + "7fffb43180730947e0ce0f17899806d2998df9a70c9f9850a0bf0d5ab97da3f8", + "93b7d5e9121a06853fd8e0b65a846bf7497ec5c9e769db2f721ce40770a5ad8b", + "e3c15c181160b97750a748f9b1ef062574f0899d602333c7c543efe7be6687c6", + "483fc4310a9c5e101c6e1592299caba75d191c524516cf48094705cacaaffa1c", + "e24b115dc5e2bbaa03a956e316f036cd74f284a2170c98d0524b212839ded525", + "bc6e44c74a39e34b2763f04641908744dda340b8ee026c24e6ab18298230dd6f", + "646e8841bd52d5e6f441f08b068b8d3a1ef694e427bd418008dc08e55f9263d8", + "27010201141d9d2123b140bab4c05d1e60884510022f11e83aa5aefbb5fddc66", + "0a34d5ebaad9e855f386b3362d8dfc509d0ffca45877158261eee625e687aea6", + "ad133cc1b1af014f3acdb5852f7efde5750b39eaba1978bd391f0e620de02e54", + "210d474dcc58be7f5f81155c0b2135d26047b8bba3b413b2aa20485e4cce68fe", + "0158e2507ccb37e5302d3d188bb58ce6f7bfa56a8d84c1e2f085796719fc3b9b", + "2c4418eeb0fcf9317e8266ce1290919cf7785f09ec07efceee9c9eb31eb2c785", + "4b325afbc98d6f4510cc2e0bb3e957113ae4945b81d29caeee539c2da6f710e2", + "7d6fcd1860fa72512ef76e0187dc7af6fb467cfa2e96f9601e0e8989c38994c9", + "88260afe57f54f14752828d92501cd736bd27ff95389912283e88faa97a75269", + "529b7bf7e34de1f5689bba72a58407f3731bd2cee8af78a53dbd15497faf9d40", + "d5066d261ad12b1f8692fbfc1876a6d30837395cbb121351d9ba61cf1b20cea1", + "b0f968a432800d13c601c7520bb36cc9ba52b24e2a09109fecc34cbfecdbe9ea", + "f82bb8ca1a7fd8998886a8fe8f00084f108125394b9621c6cd19d92f23fd8c3d", + "53df3ed8b2dd7c46d8c42882a6096bccf1d6c966cbef8158b45f4390085a00c0", + "117aa85101fd69718713ffd12a7b4cbaa9bceb86cb52731e69ffb9ef83f80750", + "10662bded3a99140e896de3673635e5d946b0536db96643d0b4c621d7d68f56b", + "06b6066af41823461a0773a4018a93e9e7dcd71afd31331e5fa650b4fd1ac2ce", + "eca317877601cc31ae62fbd401aaae05a95ba092256beae0a69f90f42031dd40", + "040ab49439c03cee7663bd46349400cb389c480732f583aacabd8aa2281ac141", + "9d64998ae03ac69c2d6157548cf8f59eaf0ce08f10059bdf50ff8aae62dedfc8", + "104e0c71e792ced34e2811d7ec98f691d0740d260a8479c5e352e6d6185581ae", + "09d6c766aafeb3164a7a719920d7f9b871deaa9dc84691e8073f0db23975da39", + "40a86c0d81cb5654b51d4447a6e348a246decc7780581a9aa2d60c2f768e1de7", + "378243809750b9f1750d2d1f0f9204ca18d490e7458afff003f86c8cbb255dbc", + "90565ee1486201dcb600733c58934abb476fb873581c0e3dae8aff2ea1ebfe5b", + "f5dfb739730436eef0a9ed0f8c1c7b982469df5d6c042d321de52ace8d3a2c15", + "34c56c75a6772748996ada2bb9f2ed985d65a7c6de0087e220f45285846cbb73", + "42fad701f64b0f289a69aab6d432cf25ea365f4966a478216977ccbd5e25c19b", + "ebf4109ffcd719505b5871ad734ed07d7d1718a173977d31106050ae7bef2ff1", + "df543c94ec4b21c6fb74b805b76a1f3c855d222faa8599c060f8c85020e320f5", + "ce720073f337bb4893fa3a3b1e2f8e86696e5179617000f4f47cb343922ddd3f", + "786a19bb3612b1d1110134aefbe6968e75bb3340fe8d3994fcbd0e905bffc18c", + "256345974cd78d13520d2e43ca98d1ca0d650baf88aaa6b8db75c80e6505b101", + "2648c4f69b677c285297aca3107a6770c0a4bc1689dde13e6b5b59e8af91940b", + "752195dc0695f44531be939deb0f9940a9eb5273117c7705768c2b5edd6a70e5", + "1e4da8e8647caba2f3b358ddd5c25936b46d87b9e118935597be60fa58c6ca4a", + "5be16077f567b7bf0034e61bcfc0311887588c95ce57c0e2fb430dfeebb93736", + "ad205a52efc99c249042c9a2a85f6e39a89ca00a1bbbdac176bcbbd2f6ac6418", + "41414f5074402bc65ab7cede304c467ea56456ccc4d5a99f74dbf698ec80a014", + "f0a24dbc494b779606b3fae942042ebb6e42d77cf188d81f5e0895215f24d975", + "ed67e0034372067628553cac0f55d69935203f102d2eae5bccf3e9fd6f8bddee", + "1544c144771491cd8bb6c79ebb199070189032a209a17ae0f5df17d95e0a48e5", + "e2fdafc580819c643c0a89d3ee89d934d4131d06f288295e946b93824e098863", + "6b16af8419f1b67c3d8176c2e2b6adf5ad345d84c797d4621c883d12c5881eed", + "6101922fcf4599ad00260237e8b14904716156d58a25c638578de9775f6546c4", + "0211764bef038cb43a5c8b4e4e1c2189e29c63acc195a8f18f5f52abb6c2d896", + "9fdd3d266a5a068ee069bc4df1c9ad13f5dc11503fe9730fc069dce86d2d0cc5", + "501185fcc47f5bc79f11c17aeb48f6a069298e4538f48c2335f5a5cb18d3d4f7", + "9039f3d010b09f603ec640edceb7861a36dab4b82364c69a208040c3ede48f17", + "751f234599524ba682a48181293f9f24bbfded0b905db1400c4d66e287ae6470", + "c739f4bf1f227963dbdc0ba653351d9b1755ac4b30e4e1fc29a552d1763752c8", + "8e3b632fbec986c803e343ccfb4c8a13c03b04f6212cbe161efe5d5976eb71d1", + "1d20996dfd8ac9c5cd8de5ece58b61abc6e482999a720d8fc6cab8017adfde73", + "74468a7e1be2e9c78afffcbe10b6673e7522120d6679186fd21614fb8d3260fa", + "e47b686632ca64ef9e44b6da170481087bddae257940e54aeaf807b18edb4120", + "23f33513eef75806f25e55dfadf2e09727569c6c57dd020b686cef0c9a6e8324", + "8d59bb2bc1e8a2546b70e875ed5138dfab8f5209888877a7090294b3ba3e8adc", + "92bc28c793c6cf7200794bdbb5c3c821fa205ed1b4b06fcbda8d0124d28e3136", + "cc61018d326cd22a23b07c05db51cfb87618046132d4bedca206cdafa063a20a", + "b370ee273c4fcdb5bde8fb9ef6ddfd45406447ce19c748e418de854c2f0362e3", + "6152c270f83886cf3f5761812c6d8eece4cac8c348230c9b42dd271d1e3f1aba", + "2a9b0d00fb1eb5564fd96a8c1369f9f8e1d32b947cb59a334d47b32c6d963897", + "384c35175bd92ed2c097eebdfa72395a309acb7aa60c390ec3eb66773b661d6e", + "573e038e86e51ae46e5a7992fa652fb4b92632a7065260e12c46d1fd6effefb6", + "005be3a45b8fe905f0d1a63f1306ccc4eab8191d20f6f5a805f4754c20ef2daa", + "9a60982d54be5edfd5af1bd9f7d25dca0be74e77d5eeb6eaf37dcfe06cee188e", + "676257a1528797108e3a5fe031627338e9f09b44297e33aa1463cf46e5bf7db3", + "e7a241cb0337b1b02a56acabcd77baa1363feda4f01cda38d460822da991e3bf", + "7ac458257132ccc040a84b03c9fb7b9ca4fbe0579e7d3428f584da04b5b33527", + "cff2be050d602ec4623227bfe5d17c81c6b4da11e8c00ad7f7ca7d4c6acc878d", + "c07b292e4500a3ff9845bb55d6d69eae602d939e7681ae5d65effe80db4626b6", + "47136ecffbadd0a856d93adf53a2e2b675403386663bbe766bec37d313c87a10", + "eb1bacbee5fd2a2b50535a70ed300e93b90491d7d3d29d2f1f8bc5ecde0d7839", + "15e2db68968bb0000bda5bb3747451926355e9cd63db122bec12a53fb15da9e1", + "1ae6a3722ce9c193df69b1b8a37aa086ec323283628290f7298871676d3c4cba", + "65477882f5794c720233a98e1e383d91deb070f0c2bceb95a5efe7008f854cb5", + "2a630b24aeaeeef20baede1abed05cc9c45794561239f64c6bc291afb4b16120", + "70beda84b736a344f503b4e25e0e4a426f31d7041d283aab464026dfb9714457", + "591cd0ffc4b3b51cff8621ab1458a478c0a0f57305f0551e9e5396dbe8f7d349", + "53625b2b7fcffc9568152e6b6d95472fe850ed163ab341044a0754334cf22e34", + "5751606d1ed8891eae9bd10c5676a54ec196b36b00f9b7d3aa9ab0ab04b5cc25", + "f9f8ac5616f2d1864a6599bafb5f2e6bbc7fba72d6aa23d9ea1e0096de9d4164", + "56241bac3d18e635913ae9db5fac9cdde4e28d74795a1ca77227354d8d38fe1a", + "e01cbe3312394d636a19003923a0ff3eea7f8d2e1d6b42f94777655add3fe9ee", + "d08709244798a43e91f24367176899d90f8678813ec8b822163c67e1740f89c2", + "7571cf1e503d83dd0c915f69b8365e94a1b37aaf98a37d08d4b90e2a3675220f", + "f43f4e2cf5990ca47a833947b671586123e6e73a57d4305a9b813a8ed0d2fb8f", + "12bd6bd6659343e3dd9e6666572c55724a0a9e6990b890b556fe662db9d062e5", + "9ae85f24c4abea079e0223f9f05355dcaf5fbb396291c96d5c3b016099e84bbe", + "495097c042dc6319f9f6480ad049016f113b9c5cfc6d612e04aad56934b919eb", + "4eaa8cc1bf14b329db1097395c1a5ecd0f6fdf5a5de76db7f0339ab9b2c491e4", + "9d9f56a74cd94f45656c40e09823308aed0b4c9e745203cd5950138713026939", + "40797ecc115fee18a4608c9efa1ffeb81c2ee1c4842561ef61fcf7076f1ffedd", + "11cd767ae016d95635cbdfe08538b9347337d6b0847d12697075584b8d0619f1", + "71cb92eeba1ac9e0112a7cf621767729fb77eca209140f248c04f3ca1b0918f8", + "e44a0c43a95543503268b2378dfa0c9161c522c62bee65fa4f4a238875c64b7e", + "8715cacf99e5b7a106cda39fd2b6c96c2e5022974b0f66de7d6a15ed2aaf4eed", + "35bb68dde977abf2784e33d1bf3052893a358a43a8b258bea6a7318b1dd4a310", + "b5bb928fb28bf9699bfbabc626fc279a9ebd1ce6b63c993ddeda7b9eb2f8cf27", + "3fc619d1072c86c3df178b90349411bfed86c49dc777f030f2d27e3100394b00", + "05ede74d5dcb911b02053a895751f92ae86743298c8c6d8c5811de191cd4e5d0", + "18ad4372b90d74e60d68a00e4586b0767c060f9c522d2016c515cc5754eeb06b", + "595447850210071d76266dff3f9ceb530f5fbdf38c9940011abb9b96820f69d0", + "3c80c4cfbea01760facf853c328821cbfa9635adf55a650b92fc41bcfb19c8f5", + "e4feca4d382344176e8ac45592711e4472f76e0667867d469c65ccb5be2c7a19", + "7d0b37fb8ac67f6752e21869e57ed1d8b08be8517ca53ac2835cd2295df094ed", + "4af613e520506104185fc529b07037168b79165ec93e37331dd01f306307a9b7", + "103fa19cc7adb309027f4eafd56cee2c11875358bb4d8d8dd2bbc2f3fe698bb9", + "ede21fac9950f370f23f2a674f795bc7b2eea5c4609ee32fa64d4239218b3d98", + "5b6014bebeefd652030b6f79d14252c51a6f1159a2b37bccdcd3e515e0ae27b9", + "dda18f566e40a3b6e882b5f35ed04328ef8288094d8151bcad76a8c228454f6d", + "bb06814f937b8f4fd23622931286468bccb770a49112c94b23f06e97ffb7aa05", + "9c629de1ccf91a807ae4d7c296108a9ec7880c1cd278e0da344061d329755c14", + "6dbf2e32d098163480ab02a98344750fa5daafc7c66adf4fe90d0eaeeff4f86f", + "4e93b1d6b6d8ee75bf09aa1789933ef1248397e1e3df6ddf8af74eaa04d59c3c", + "6e8f38e9b80a674c58e2d85fb797e0357cd1414528a175f8e06a10b15455bc91", + "d397c5433f574c1a5f9d5c219c91131f3823694a50e04a6a2d896458b76f2e2d", + "f50cc41a1fbfe1a27916b010ce35aed4d7f2803e571225ea1382facd5a603139", + "f375dc182eb989bea2dfe5c2e26a351c3e2c2ea5c8f11447f34004c5c5ca2f27", + "7171793b9c6db5102f6088265373a7c57778f18f440380255a390d5745113652", + "494461bfc7dcc180d454bacd79e12b4a12598e3cf2594b4a96001188df71f27c", + "4ccf4da37de3d59a491675a6cddcc6323deb914a8f458fe6bbd20f4ab824fa69", + "74d21ad3cac9cec15832b98239679ab6360d84ae3d2a36a3f02307d647e7719c", + "b7b45314da2fe600d6377531a57acfd3f5d44c2f0e8641d67f0c9288bab8a3ea", + "7e9025449366165d1e1a7a84b15c89acdb7220595af59d776716b7caf76b517a" + ], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "timeout", + "cache_state": "cold", + "timings": { + "total": 30.549125120043755, + "build": 18.33, + "query": 0.0 + } + }, + "problem": "target unmatched, unanswered, or lacks exact witnessed answer", + "input_status": "ready", + "input_problem": null + }, + { + "id": "nodegoat-repair", + "base": "nodegoat-vulnerable", + "tip": "nodegoat-fixed", + "label": "fixed", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored replacement of three eval calls with Number conversion; source tutorial also documents alternate numeric parsing.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": { + "case_id": "nodegoat-repair", + "ranking_mode": "evidence", + "rank": null, + "rank_kind": "selected_question_position", + "selected": [], + "deferred": [ + "590ded4d9ba52b59e2934f3d461e45dfa5bd351f13c4fc17238297438fbf492f", + "33ab14574877d6a529a58df1926e358759fb4ee1ffbc68146aebf77a895c8eb9", + "489bf9f5f3a1e3771698cf111c0e7fa3e84f81848869c88a44cf3d19979d168c", + "ca3b943eb07fc11f6cc16228ae4e7813cfccac5dfe7ea9147deb0ce84677e486", + "a83d9fd2d4f399a40984cdc63e30003a73c98a6986f76fd5e22ed0ed7873c8b3", + "593c9114695f69035b4df9d566534e35fcfaa2d78a3e4362c2ff634580d6bee9", + "87ba1a35a429f850990db0eceda9996daf572b97b32b38e0f7ff4b80dec9a6b2", + "e9cf95baf8cef9a83d9da86e0bce276421ed404867ad948acc338fa759a3450a", + "431521d90fc22b7683173732598c39b94a25447f7403dcd4d9e17ca23e243a61", + "d331868f74b26a35872e8eeed4f66f3e34a29f8e9745fc14c1609cc3408aebeb", + "61b6ec72d6c0dddae427635aca3c97681a112cc4c5f8e4367d9f5864c6eb72b3", + "e831bbc3ab250e71270b1f5175756f39c2da662bffd68b2ed78b5389a4f23d0c", + "082910c464337b0041733c3c2733ad7947d71549180f9a0b8ad4172901469d02", + "14541cd08e0b036e4ab5caa442c01459fb03a6e3ef0388bcd0347b121effc6fc", + "da4abcaa22e13947dca90ac9156293bda9297423304d60d587569389742ce17a", + "29000feef9d494e003efdcbb6eab5410bc93ad2f4674df9db389ed98a9cfb242", + "4679cce5fa8da06bd1f9542b5a58321d2b090556cce83080b6e9ace36d352a59", + "df4a0610953efc25e4ddc4bc942688434be889411d073fab09015aba97ce2511", + "9b7910f9f96aa714b760481e46e543ea413d6e4763b858a3d0c186a560ad618c", + "298f3d69ca3e2b343c9cc5288680120b89e035bfae803dc6f6952358b6d0f1d3", + "7fbdc1e100a0b9078b6a2d6264bfaa596c64501b8c5ced1557b56a3d98e2b351", + "e4fe7eb3e5d57766a2c6adc79d46b9f57ac13ba11df7846cc4f7d62123a51bd4", + "0cc9059de118ef8da2ab45a3453bb2f64a679dfa33233f3b1b722b3858df789b", + "d561ce2e09d49013cacec011cf5dfa8c5f35c25c41085e856b3d5f28579ba6f4", + "7eb45f19bf15a2826d7aac45f36137de8824abfa9c0d5412da3c69c5d6da7a0d", + "ef130caaa2b3321cd12e2c8c39a27f9a868d2405e572fcafa5cab93900d9f97a", + "115b829e9b03431b06c12212efdcc2da02b5e22953e8a02243a8cd5a59cea0f4", + "db0e20f3ffa3b74105bddd565ba608daaea4cf9baba6b43a2539958e1a8be668", + "d2034c51a6d44b7b5cb553f2ad130441532b6be68cac0e829b74c4240aa642c4", + "1d7abc4a4a8c6023e1c5231f46167efdb6c476e4533ea4670a17ecc6c8d09c92", + "ba984e9deee4ab97a4211ce15915bc36e0e42907e21f40525be95c698c439653", + "ecc80bd3363347eac23b60a8ec50efe1a5defd3609aff7149022fac1e74524d4", + "7cead756038bdaf46936671d2311c93b391692337189bd9f3acb5711dcd1b594", + "d7044d436bcc3e7e313fb2baff364c8aecf980b28741afd4d020f858a47a3909", + "f0fb49041bdc02002b8aaf574a29a738aeb235ca0bc5cbbe9998dd9841e93a0d", + "f12e400682d1a222abca9d05f942a24394d7795eacc7ec322c585a0a6ffe69ec", + "5e24ba3194915f95a2452882fe928f834ed4740f8fa2087c7573b7c2f128a2ad", + "4d7554903c7ff3f7005fe4ed77f7e82af8cba218d3ac0b431acf14d18ffeb639", + "896720a23ec5b7da3163d53b517817cb01337cdad64d2104dbfdd3b3526f9c5f", + "e13de3ef10e25c529870483b67e47206b9cd32251e118f20f628eba95236d9c9", + "ac5ad3cda567527eb97dca35bb56d076292b88e20baa36d337967eb1f4f63dff", + "7c0bba65b77fc890e479add54e7fb0e9a7d145a4304d81f614536a8470d0a471", + "4ed8fe95db377770a47a2b3ad04a3a720ec21bdbd5222272ec5555130a627fbb", + "ece73e32fe91c87a001f1e41342e09378041ee876c8a8846a51347b8b607cc2f", + "8146eab0359ca0b822353b632ced69bf09fd449704cdf7c6f84440d7ca784cef", + "ec7c01083f1fcb35c35244172a005b3eabebff9c0fd1dcfb4372268f82fb3894", + "ca89f1fd26f88f845f394fce84527e83c6a4cc8252f30d6787e7c5ac13e119a9", + "c3b4d527dc5c4ed121a487d5e4e3aa868df773ef3b04200802f9a306bf67c730", + "9e5735029a42e23af56c2cc802655bf46c55bfebf19f19810ac16cfa15fc688c", + "a562474ca19fd4d4ec052396b656b092e82be7b1c002746f631cd9fb68b39ff3", + "22e26415a3768b1b12cfb9469b912d359d0804761ee7f1d02d281600373dc8a4", + "03548d772fd2a4030a9f595257333eb9b323f1057a2a0399ed15efea113e719d", + "0f5f635e19864fbd276fd3eb0b6460f86274e6bc52533594879fcc42c02e4df5", + "f95e55b8ae987f7c4b11837ddaa8dac8bed46541f6d8c12633b46fe915b41824", + "e77b04a213011bc3e9812f81c2d1266be1234ff91a72d347b71017e8ea09f4e4", + "f7ab6f0b570873d6b99c3fc33ab556f093d7f5e4991eac884d3e766a2c29b326", + "722bfc188cadc50c1485cf4ede13f2b62e93b08b16f42f2586c104b8bd3745e7", + "144c1db7c40aa0a420e02130a756c7793fc8fa5d33549a08c236ddb96bad2df3", + "6bb3ba6475ce8d11ff20924b69721387bb0d4bbce1b852e640403dbd750f0a8f", + "a08e3f98d65d0452a631a11de0ef53c9fb53492efcf3d8003b5512478b92b4bc", + "4e0e78390504d44716e20ff65cf5f16c1f1ddc2fa0441e503dcae1826c666529", + "0e143029eb9d5d5c30c3dc0fda147c852e68d4e8d407795a1047beb586723238", + "43e8934e37c9ecda6c36b4bee6af63f4269e59cefb5df30af45ae08bd93f5063", + "6ad6e59fa1a92132e095463bdbb461598c80b45af85ff453a6450b59b61d10cc", + "c2b3c06e92fa87731137f871b9dd0f867fc53156a80bbf00da955cf5bfe0fe7e", + "b7b9b9cb1194740a47fa214266a43fdb70019fa1308009589d38f2c7662aa4b3", + "4d3ed9000a9b5806a0ed641e2739166e3df18ffa1925ee396fbe25d29e332c71", + "bce9e3fb76d6276772f1f279260ddb2f673a4a45a08f13fbc75343d20c0ad4ad", + "f0aa35455461c8f75dd8ca533e03dd43ea339a7026f07407ef26b12c3fe6f44a", + "64c0f7e52fb34476d5e47478ff354845a776dd781a2044963cae3191bb18058b", + "9f9eb159649a2e07879e36c4f5eb5bbb38e337540c4b295adb4b59ca31e2a868", + "bfba8296d9252a696a7f8262a80b63019fd89fb866e3d3daab087101c9d7ebd2", + "6b6bc1f8b05dab47833d180de1fc7b40d8637a213c87af02f19bfac2f9439869", + "72261efc87c3f66bd420e106d6e04235b2d6a7b4c59ceb5a235dbfbf31d02f29", + "94e30a15524e236d04ae2f0238a72c0b446a48b7b4302471ad6703861948025a", + "fa59397c0eb909b5b269278b706ba8432004d786cc8431db1e27fdf9614211bf", + "a65d452c03e7a0e7bfc77d9337f0c3f6cc47449979963ca1173f45c619b7b812", + "135f8cdcca313308bc5456466706c561652768149ff61e93f241b383c07448e8", + "d029880ad27458bf1d443088b6afe399af206a9f412fd8406769198f304e64f5", + "2ae591e30078f1e045b446004067a4734acda37a9673dbac82bca972cb5f8c2b", + "b35cc9123b9c6316f72cdbfcd7945157215622625141e56543a4093c0c553013", + "c8d88ff3a98aaa4eba3756a5f0b89cdeeeda10e5180f5eee0d3ae2b7dd042cdb", + "f06f0c86aa4079e5d3ac48ffa9b50661a0bd2f4c315190b26f13664de494c9d9", + "627afe91ac03ff52d178f64eb23d372523f86fb34fcc0ca0dade6786c38f0dbc", + "ccab701536e7f9615e52f4b1a1c68a2416263ad8de279372ce248fed5d7868ed", + "bb71e211e99f3dbe040a15b22eb7e004da953ca61b700ca3d1c94764cb6bb80f", + "d799a15d3d810c39c4a519c59843bbb6c2617f559f8ebdefe801296e0819149a", + "d6a24a60b3cec846b01cb2c3a1535ee2ab834a09e935abe70ede278ecb1ef045", + "d1cae428bb382d9cc38acac1c7bb8a5e6142a46f5b0e6e2ddb1609b0acc66f68", + "c46c90f66921363f974dcf82aaf3b3410222ec081abe097417dd1a1accb372b4", + "5630ea72ee47272cdf5f9e3d1df3aeb499c357880ad49b26cff1cebcbbaaaeed", + "013a84070826e011c0b19953b3493276e98498b3837618303aff28475b38eb2c", + "c158a154e2b9394ee661d2f982e93af8d59543bb7da5c8d2c8e9c65905384d4a", + "a0423c87fb8581f1897c9a0c774c3881ba8775e05f6cd88408cee05d126ac52a", + "7e9c5dc7bc705ee6825fcebe23ba885a4be30b318195ec89e9a19b450bff86fb", + "c6c5a131a84fabe329dc50128240b463b18a4ea0af2d036bcc02d869ec57fa7b", + "ffe9fe5d19fd7233e88869bdd2f6fe00785a9b15d074a3f8b171a03121ba64b0", + "324cdf414ea58e6d9496c28b138b43bb18cd6e983fb7678aef960670a51dc93c", + "fb3bd242d8f9801589ca53c24a1b36b88ee1e6b8932ddb6a5d3bb7b3019556be", + "5784aa43502be5cfa00e65ed1800bc86cea1b83db7b99737a92e3059c0aedb51", + "e05d1e4da035294fb1b5185492276e323b43a33c173dd05390edee2726f82f60", + "480a6f9e635cdb839e9ed2fab13d22291dff3c92ae99e1bf514439b370480f24", + "acc5d491964faf3f4858dce3bfe338199f9b5469c1ad33e64c2f0bfad2f0263e", + "e14724d931f179f9298c723043307a99153207ec425d4fae28f78becba7c0a9f", + "756d4aea97736b83d6904a6d96d22e8026d24796d64d6806c2fcc478272c16bc", + "8fc292a32ac35211b4747151ed7797cdcc9cf7edca0ea697f9cd9ca9eb2bf906", + "0434560a038fb3a29aaeae6531b7190a9a993f75cebecbde4dbc5d9f248c16b9", + "5c7e3540a665e15247dc85c88bc06f2514da2cd85010ec820cc53548ac751009", + "074e2d12c8900202ecd6b02df395375ee6343d1c04c22982c214e74d38fdf51f", + "cf2f20c22b8acc270d75b060b45b3725d2a4a0bc4dc33adc9feeec336fa84f31", + "bb67a42d62cb5389aeb41a0e18d26046ab4f20feae70cba114ddffd5995ac3e8", + "ad9733cd531deb592afd4650ebd20d8c967ea49693d2954151a70f4a4edb68df", + "572f510d0485395c2ff610cd031d238c3745f79fe98a8f9fef5b042c24e57b69", + "0ae9ac017e10c4d6256d41b99b5e771d7e8acf05bc1087acb58148a8ea2e8c5b", + "691315c9798b266ce8aaff0a6368a80e40c685c1a8e3a54fe139131f4d6da7a7", + "aee4c8330dd8ef28010fdaf243964d48dec427871626422da8d915843534755b", + "57aa82c0185ff3d73d91dfcbc6bae9b5d438cf064ed0ea9489d6b5de7c3df531", + "79ed0c8a9f7d6b06e75ef023d6ca5a32416a9c8fbd5a75fd97ea1c0e8f7a5a30", + "23f9afb28b6b7349cbf502c2a6a1ffff117d2b3a974d8705b99fc8717108627b", + "a6f0fe4aec662565f32d93874690023ebe09aea9a887b330e0c64a18e41dc966", + "aa5a287a1749ab0ab4e4b56048c738b95df8f4b19a82378847a39ccb5eb42315", + "09dff44163511e71b0fbf539655ece1940bd80039bc8743cc922699a37340b71", + "567b6eaa4c3dabaccdfb44885a6a4cd345ce3ffc6a201265084c1818c0b84226", + "881e7f1a45e2d7ebf74842b131573da24478db0c44ddaea50ca20007994387c0", + "e9a98c513dc38db66988ce7ed9fe730df4ba5297f2495c77a54ad2aa9195b9e6", + "f7484f28717752c36583df6d2167f9861bbf8368ac7f18b8a7c41ed41f301f37", + "c0c4a04d19b7a5f1f33fff97f49a9d0245c4b14d24c3691cefbf46b76c064d7e", + "2b86fe6715dd628b59d2303d2939369a6ebff338e7c9a3f41a5e76371e70d56b", + "3663dbf64c23ffed29746c390953bb4c54f0f3154cc9fa65e7bf6acdf7249702", + "8beedef6ba5098ea3567e7e9dd3ff36fa7ccf418f7a8dabc5cd1c8df83ac946e", + "07ee5dd2f228e5d605f204a0e607fde140b169321c49486f64ef0ef3498defed", + "34ca592cc7c4769ab6ab180436ace3d801b26463a0915b253459fbe8aacc7ce3", + "2ee6a26bbed8f2554b909b310e8fbcafea825d9016c009fa785f34121053ae17", + "6dd70277e9e05c3828bec89c4cc94f2b256eef50554fe78b7bc7805ba0c77d7d", + "448a4023be7987eb4282a5534d6369f7e8ded7ddb3cc29c537a4e09ded04434a", + "338e654fb02855abf17360c328f02986bf949d898b489ea7b9b29ce090fd1eeb", + "bbd12c331fb019e0c84c5629c0b4945609328a196e3862f6f6dbadba31da81c9", + "06ea156efb68bae0ec77525ddbd4eb18c1c97512cf524cdd7661286b48a2684a", + "163b26e0bcc1ebc83d620624356e8a535ba4a3130af719e57a4dad9922d0ca1c", + "ef7c18370144ac600fa593af56a8a849f7070b91261415e8e3cad6bcdadc80da", + "f196cd68d51074be3989e323fc62287af695b781697b91b658003c825b426ce6", + "a763fb136aa3978b7f47acb90aae2c6bb5715e8ca5ef1088d7856608c8807071", + "5bdc9a08c76139479780eda09106fbec03bd5662c1817f14c0893abe4c22c798", + "4d34d526ba5ee10314a8f6a74f7fedddbcf0ca79986c20a5127dbb08acfd6c43", + "2c2899bd893f9611640844c56b404e5b91768151cb862ff497bb823c505d568a", + "be30cb63922297543ed6c72314d3b6ec3d849d3c5d28fc3590ad44ebd82c4f0e", + "28f1d0d25c8654cd762a439d6eb6f3a6896d37071f406d8edeeb4c20adee20ce", + "f6a81369acf1c84e3cd6bf3399289323cb47848984a8c96800c0682fc1055a04", + "94b9c4a91bfce96cbe773c203dfdf22d1b015231e91dd478399c2586be6a3e77", + "526ce466755c525287df1a2adbdbdf566c896d79150b9bc7dbe65936e83abb30", + "57dcaf9ddb9d8b054aa5dda6a0c9739439362e898cdf22aaf9f7338149f8cbd7", + "064ff0d84035d834f9382eb8b4ad901fbeb4aa9fe816d7c36a34d56af41817bd", + "d97343cdd389cd2ed9d0f1358d2bbddc2752053d95eab3e16e99423298a4371f", + "f9deb31f0f9b98cad69111389734d43ed4fa86f24b05c9f2d48a78ea7a8708a3", + "f962a89d04810a6c57abde4a8d3182d2a31c5d0f0ed3c37c053abea1fa223f31", + "b62ac1b4b282eadf241f508bd5769bdd440b274f967d6ca73cb685ca249bd287", + "57840b0da13c3f6f67e587689ab1eac913c17e91d493d1ce9ff089e8dccdfd29", + "e3d1ce3b9de0fc9b48f2432d5e64947b5b24c3acaf1166f746bff1c54a028b9b", + "d322db4b50c2c1bdbe0e22ef291070e20c93e0f7199c184f5ff8b4795b55cbe9", + "88371d1acc9bc3b69c1d1957b27c9aefa3835be37bba74a359c35b1beaddc2f7", + "3486da81fc55b7e285f23e85f44c481d780090285a384cfedaefa27265a236a8", + "c87588b38d18fe9a5c563e2ae8d79649ce699607a891bd41b68194ce4507137d", + "d6e3d356d491e5f3dbaca74cf11aef9bd751b36737feb34e466b707156b0d779", + "843197ad039bb4e840b949b0ed1e5cf2230829366646a92ffc53d63e26149867", + "b0766042c55d7c370799af987bed01fed8a417f83bc67e21d1366988aa1af10e", + "b788ba22bd4225c24f95821dbf1f467dc2b13c7615b0bd2b00c3b234b7519539", + "91430345496348280d29d11662aeb6048fd7596fc6304380b6154494df30d154", + "8c1be7b4e8fd13181be0c4e46350a2f972e24acd13427e71c15e60dade41c28d", + "f87a9ae1d7dc81f88c5891890b889aa7212e172ddec092182b7de6f01e787d7a", + "b6a42fb01b464f31f65ebc10fbc12fccb051d8b44cac51a6818d3aedabea07f9", + "4a820a780053b6f65492691e067e236adbd2a05b467e4e3f2ed37ba1260ce84f", + "b07131192ab22510055930477ced5a10698278b2e00e3f711ebc202db640bee4", + "5fbb00d9b2952ae4f0fed217bf2d8603872d8fc93073d99f31d8815539121987", + "0bd48e207e95be86ea4e459c090a75c0adac8ca31bd2b631043854551b2c4392", + "b11de5874aa62f939e383179c3ea1b34d3569ec6ade901964393b92f8325ad11", + "8cd692618bec00fbbf099d570561201a2d0fdb601050fd20e198ead478530675", + "19345b5fb5cecfc86e4db3cb8715cc7370e81796d70f11ba150a13c5ea8e4c37", + "3ad0b3549b82f93ad869a9341397d394c1acee5e18d94a699b118094dd7a9a70", + "32220b1bfe511b9dcec64d7ea8f4317e96b2d0cdc10bcfa55cfa3b63ce64aab6", + "0cca9d955282f37dd60e764c56b52cbad90b33ec2c2943a7e5d155d35b0417fa", + "40d00274aa5b28039b0d57d75a81f174c0a31e4be2d324ba79a64b79efd4e411", + "319d00690097314e26638e2f4a6d848f50d1ff2f9d6f755a618eb31398ed373a", + "dfa47fe83d195de69774c841747f6e7ea78d6d91297821dc9b8ee5fc625cfe2b", + "5a497ad4d83218c29d4f22781a54d9e1927dc414f7cba6f89d794ed047f8b245", + "1bd3f2289cc1bfa889496ca5074991941263703a2517281734f33d0ef1050f1a", + "587a689c0312ac0f6d98de7495f01f34428cb128e73875a71508f7d5874415b4", + "fc77f013f48b454d8703f25f76646f74b74c9e4f8e5d542bc5f48d98c6e51fae", + "a2a7af80da34233233ec619dc29366b40a9e55ead63626db185524f2415761f5", + "f180a77f032bfea9c7d152438ba830f19e1bfc88481a56b9e554c61d2cd64f6e", + "cb70e9a1b44fa1f13f3bcc5290e6db5c8d6eda83602c9513e91e779ac6cddd3f", + "74f543e29e519871aabcedb9d39c953d5397aac456c3c5e6eb0e10e517989eb3", + "c983c339bc6881a1e6a0b2c6a794de858613b91318205a623dc61d80c2238036", + "97c5314218bfb458e1fb6d1a33c9ac75c7de152774a736f6c5874657515ccfcb", + "0744dea5a54614d094a6eb711ff7df94a180bfdeacaf330e31d9466cd51aeda2", + "06dc1ba86d3fcb46096bed80d9c5c558f79a5a33f4fcdb379f1567b1271b64ab", + "aa48541c8cce586b7a8c5e8ebe3cb607d1c283ef8940b7d4c7fb584327dd177f", + "a9d086126128de76e0bafc06ca465176ed2884cb7ec963457fe106346b8094f9", + "637323a350346cee17c66cda9b8b1be49d58350b0a0904bd61e5af20ce611df5", + "aa25524f30b8e84ef80b52064a75ca56cf438e67e2696e360d683c03e85c4c6f", + "9b5371eadea2bf5707f730896b4766a8b56012269f1c02c5df9d0df1d1cbf696", + "d527de43dc2dfdb271c213a927ab31c08b1f063298b211b6b11831a4dff51922", + "5ee4f0b0ba2c39e7071bba12da912c1ae213b8a2cee0bb437afa500328a237d4", + "43d3388ae21433a62d37d4c92861c125683f03a0edd9d1afaa56a42a7b793dc1", + "cc8161804d4c84fe4c4f7210a16193637accc1f791b7fc7be026c07177b7da4c", + "4bc68b77bfd52e96e8db4fb7293a6d4f396d234eb4dafb625df76bc8f1ba1c7d", + "a66e57d86751f21d11652bc991ffe476eacb638f38f95947b723ac9448c5f668", + "278e2e9a97727da969f8d122576dd475c43141146f984e3af997600a013f19bf", + "3152613ac0763b809bc99a50b728391cfe19d2cfeb27ff47a1e3671ed7526a3f", + "06168cf4f7850405f47bd8cfe013dc077b51457b355698ea3407f998cb561c2b", + "44620fe943880d4498587b283cf31a67b85fdeef53f59223299018c3666ae32b", + "eaa4fc381ad8dd4a49b66bbe7ccb050b2ed8735ec0d5eaee4f555fce0ff39a8c", + "68a35789d8aa7b4f5293eb06988118bf39be4f0354e6dd89674da130c4ff7911", + "3c9cfda0c903ea8e97a9bdc2966dff555df6580479782ced9ea934837e3bdb5c", + "4367699c5a75ef7a22a52ca8d1b77e15ae6c8c18b2ec5fa929d688281ff34edb", + "f020689fd3ee8e3f51d12f177d80fb80aba8d3435a9f58e63cf4caadc02eca10", + "06f7107e12e2f2c7151d2c38ca31adcd8690e7dcab4537b37183561a9306208c", + "2f8516c90c01cfb4bd29a3b8ad1b61280436a37804b24929327cb41d8eac39aa", + "8f51fe6438299d6f935f48d1d0991270ad477174195aff8574ef587a45038efb", + "8d26ec62881cf7efa89509047c178e7b920a87cc4bfb9cb0d6d991e87ca22124", + "ec5cd96c01771e651d9e09445c5df8af453e475da75f47a583a1006e99686b09", + "2981a228c15eb8a02d051bad6ce39736dd5f4c3f63a979d997bc23086105cbaa", + "7055c8f3c6f41ee3593da37fd92332c561907e07a633b9ba7bf66347cdccb378", + "68b25a8b5bcd76f92ed9473318e67e752b5898eb6b34c4a1205b77a88dc0214b", + "435b8c03368213b50237bb6f7a4dbfad4e7ba8d4f3948b046a5e95ff38c739be", + "f553b646e7933b5f766d1187c3bb1aee241ea0734ec1c6addc08871c43bb7c64", + "5f7e12488b0d469ffbaa32d1fa766352c8672ccd9e81f503480cec626d1f88b3", + "86fed64323e502425165fd4b319a848da156ed4e1acbec6ac706b8f5afbdc1e9", + "3273da703327df23094325bf9a120c3bbbc9388b4bbbec32a24b768f4d02669a", + "cd57f10c8a3c69b40ea2832dc35837d8a7521f2a17b2936eccaab7d5bf482dd5", + "fe62a9ab0e66c65344f94de1006ed30505bca06dcc7619ca717078a09afafb91", + "f83f5339fbbb59939406f37a8053030f00333d809da78196e1dc177209fd0e70", + "9cfce61b0d63c05676d62a7dac8c1362d78e2e686d6a8b53c56094bb2014ab96", + "dd387d649e718c5d7cd9618fab6cf60bae452924f4e0b36b9b9ee9d4b9738ef8", + "b4e9704f8937686cd738c71fa7250b970fe64be89c75e36412cf4288e7911371", + "b2d3838be418d29c1ebf100d269591a89b6e74f81b822cff71d8a9d9548dea0c", + "e31733d8cd5174ecda373492fb9ed3f56fffdac8f869380c06ee9f185821918b", + "3c7b69a99d3765c95a713d27af4ac28d7808ca92543062610bdf24edd3643790", + "cd639186013fa4488043c42b05357e82425a3e889ac14679eef46b7388cecfd9", + "0ca04c8edcd2d8a247e575209a9e5c8a1cf86c39e6655d79d6f85ef41556ef71", + "d8cb785d9bcf0b1a8289362c5badd0db084f2efa3d831fdda8ffbc5cd423febb", + "c932a2fea0cf3a50a44090757e856ecaa4914e385b566787b60877f04c947002", + "1d3d7b3981fee634842a7dc05f5e4d1bac279c0ab8e9df78d768f43676186340", + "155e5683914f9d0fff0323548d9a531ed582e72414b934e57edb656579cb05e7", + "486352981492eeca9626588e8aa0a737dedf797d83a20148cf86aaca0e5cd660", + "692125735f88d08d8cec81e5564ed2f20d88422cb693407e8b569f2b1e07050c", + "b9195800d5bcce2e36a49a8f49f1674d9913dcb526cf50d1097ce4bea82407fe", + "92d25db73aef0c89d7f6d45a21f56bf7c0b3854a0c8d19db7bc7247ed2244f78", + "9eefbecbf32c98775e957013ff48c835781e52d91e576f81eec2c079bb61acd5", + "9a71eba84ef99ab18d46121f3d387888c2ebd4054b85f3cc2fe90f8e75cb6538", + "5fec8b431826e32ff8b6d3da66269f1e8561573bdbc8602f3fb20fd5e1bd8f44", + "117d803b171807fb6ea627fb8eadd75abcb20606fc3acfea76def5897a986f35", + "71a5b2e0b33d5bbb1ac73e6967b839cdfbea4de2fc828ec34ae8e40f8dfe96aa", + "3175ca255e0323924a203bf8aa949691546196277c5976052ff0678a934fbffa", + "7b355ea64f6dfd26a0ca7c433c31b1368e70d785f31c71caff4df6883245d409", + "3f00299f644f669c39db368d2a0df198f572ce9c8c08c85a94fd8c7db9cb5500", + "3e4b1620b66257264d51007170e6b0c49729b4731e3e1d236d188dc325ece52b", + "ef62a3e54636bc30ce5b75fb14e4753986000fed2eca3cb11aab716c88729f31", + "53635a42011bce8fec02af0d16ca0cf4b994332d1ce09551b99693a1ed59d247", + "0e4f65ec98ba41eedab3df06256eb227c558f31fee052a4266b3539f7af08275", + "23a5e489bbb5740c0c685591e6b73a7096bb238cad11e8d7e84fc9f4b7f55207", + "b92a8731fdc1bf7bd7bce4084892f87e4d9174acb204ee163cebebcfcae6a5d8", + "2e55a819e3b67123ec2edfc304418d7fee50dae9c9b922c3a5d250d6f7c9662e", + "3b6aa69186293835af4c700678ee9bb810de2ab8899c93cf245e01537742f5a1", + "2377ef08168881eba6f35e080a5fed4608aa733dc9670f59d45ceee5ce08fa47", + "2f26d70299414d84d00c95be2fd40758bce2e88a1fe89bedf898395894f501b9", + "5c2048320f765e1756e7a743afa544a602d648311f4bb8495f3d43de0f8cea49", + "e08780a749f547c02460053e2a258b64f89ad494c042171f2e8a426f3c9a0520", + "97ae7d3c4e6969d04821c5ed50c21a914379c1a1b3b5e5dfd38b26438e249f2f", + "6e181d25ef0f246585e55b5eb77c8e6191fb135af98e816b0abd841134bd5d57", + "271afe681be4d6c7c09cf9b4010888525eb1efb66cc2501215894c15e2898519", + "e8e670d05231f561f6a2ea1c1e08a560a96bb2674ac72851dc29da697ac169ca", + "8726ea1166fc378ce1bc6bc99ba52e93416fb5d1fefd812ea29de503077d548f", + "3cab3aa4cc41da609f367c1c57db872b8cfcb7b2f323516266bb3d8fa36642b4", + "c5a186e0f17d7af521efa20982916fc813e1b7d05295c3da7730ef6b5a48cab7", + "1738964f08db1fbe6b5965f7721be058d80a4e1ec976ac743059a5b31d6cd7a7", + "7f10a07aaba3a86425dce315a22df012363cd11065229f983530e2156fd77442", + "d97c168cb31e3390b66dc4f61020d70ef36ec9bdc679c2b64a79dfc648238207", + "0db0f54012e0427209e8a7b14f787419a4a6cf8cfbfd7e985e34898c1dcc3b5b", + "82d9cb547ff915752dd430f4b91c03970ed3cc9e376a93aafea77e196cd1998b", + "88f50df0343fa95532cb3b9d60cba5cee24c7e245bccc8ea06d8803d43f99f75", + "525d6f86a91046bc79ec5e19e21eeb42edb94aa9c1a3a6ff669455aebbefdea1", + "a8387bac47d88608c9a58ab2916857b9fc2fd8a1d52fc5d16f79bb4ab8be40e4", + "57ea90041e625ad5368caca533f024381987b1afd81d092b28eed73f0c8c5499", + "3eead9155ab4b5705fa08efb59ff16f1705d2eca4a8d707e4f633731bdccd8e5", + "e1d445eda8d84d9b3972b06b657c3be233a2c77a2cc146988c3d076b11b2f906", + "0e6a4376c4e70a27e5bd632511b761c70d8fe6776f93691d26262e169965152d", + "94df997fee522b612e12ed3596618cf27aa3a3109bb459f16eb6b6c136538295", + "6397f7955219931bf05a5b8407360c4b71ae62002aa273ed85db15276dcfb613", + "a3880c761ca9d0019b08cf255540fa495d5d69593e9bd73fa6eecb41dae42859", + "33e09133f59de09d87866389533ef005fc2c34de8a4cd68ea1d528d3c6df4165", + "58ca35a7300e2d7edd5acee6de464da5593d81380aff9e99fad2bd1d8c0dee68", + "2d8220d8b7f51f9f1082d903f592ff051faa4c37a46fc131c31da1dd2a233ed0", + "0148345468c538297511e912438b1ff6f0bcc70d8058f87ff70b5f944946395f", + "cebf3f7bf74150ce4fbddbc693fd6881a8d18aacbb54b8e33097580fb330e273", + "b8213e35bb6cffbddb211df8497d7c37f33a800f3a729846b041155c2f82c7d0", + "33c0d02c59cebf05005b834b6354b9d11184238c087a253b86e5479209a57d61", + "cfa8f4a6860419485b27245e5f66228003a0f4fce6797dc9e7fb5d938bb61100", + "633e780f4bf491dd0635d773334d7d2ca15a670d0d78681871dd88d77a2132e7", + "0b51f52c0d43beecb81fb62c82a17850a11aa6faab7527ea4833efffb0b4a8c4", + "c295b4b3d54eb3f602e5b7b6f302dd9c66cad44282af938a158887a4b64e6400", + "a9979735925dbdc75c01667c69443c96f645e530ca0fbb182c1d515093799d43", + "9fffb2f1348a76b735b269ce0961460b780c22882cf471ae5f1c1fafea3ae48f", + "d06f59868c9200c0d32396ee176a3260ba3940e0fef382b1edeb189030ab043a", + "44110d2cf36273a7c292ad5a9fc73bfa40d5de4b0188a8bd5d28f6439e078ef7", + "7fffb43180730947e0ce0f17899806d2998df9a70c9f9850a0bf0d5ab97da3f8", + "93b7d5e9121a06853fd8e0b65a846bf7497ec5c9e769db2f721ce40770a5ad8b", + "e3c15c181160b97750a748f9b1ef062574f0899d602333c7c543efe7be6687c6", + "483fc4310a9c5e101c6e1592299caba75d191c524516cf48094705cacaaffa1c", + "e24b115dc5e2bbaa03a956e316f036cd74f284a2170c98d0524b212839ded525", + "bc6e44c74a39e34b2763f04641908744dda340b8ee026c24e6ab18298230dd6f", + "646e8841bd52d5e6f441f08b068b8d3a1ef694e427bd418008dc08e55f9263d8", + "27010201141d9d2123b140bab4c05d1e60884510022f11e83aa5aefbb5fddc66", + "0a34d5ebaad9e855f386b3362d8dfc509d0ffca45877158261eee625e687aea6", + "ad133cc1b1af014f3acdb5852f7efde5750b39eaba1978bd391f0e620de02e54", + "210d474dcc58be7f5f81155c0b2135d26047b8bba3b413b2aa20485e4cce68fe", + "0158e2507ccb37e5302d3d188bb58ce6f7bfa56a8d84c1e2f085796719fc3b9b", + "2c4418eeb0fcf9317e8266ce1290919cf7785f09ec07efceee9c9eb31eb2c785", + "4b325afbc98d6f4510cc2e0bb3e957113ae4945b81d29caeee539c2da6f710e2", + "7d6fcd1860fa72512ef76e0187dc7af6fb467cfa2e96f9601e0e8989c38994c9", + "88260afe57f54f14752828d92501cd736bd27ff95389912283e88faa97a75269", + "529b7bf7e34de1f5689bba72a58407f3731bd2cee8af78a53dbd15497faf9d40", + "d5066d261ad12b1f8692fbfc1876a6d30837395cbb121351d9ba61cf1b20cea1", + "b0f968a432800d13c601c7520bb36cc9ba52b24e2a09109fecc34cbfecdbe9ea", + "f82bb8ca1a7fd8998886a8fe8f00084f108125394b9621c6cd19d92f23fd8c3d", + "53df3ed8b2dd7c46d8c42882a6096bccf1d6c966cbef8158b45f4390085a00c0", + "117aa85101fd69718713ffd12a7b4cbaa9bceb86cb52731e69ffb9ef83f80750", + "10662bded3a99140e896de3673635e5d946b0536db96643d0b4c621d7d68f56b", + "06b6066af41823461a0773a4018a93e9e7dcd71afd31331e5fa650b4fd1ac2ce", + "eca317877601cc31ae62fbd401aaae05a95ba092256beae0a69f90f42031dd40", + "040ab49439c03cee7663bd46349400cb389c480732f583aacabd8aa2281ac141", + "9d64998ae03ac69c2d6157548cf8f59eaf0ce08f10059bdf50ff8aae62dedfc8", + "104e0c71e792ced34e2811d7ec98f691d0740d260a8479c5e352e6d6185581ae", + "09d6c766aafeb3164a7a719920d7f9b871deaa9dc84691e8073f0db23975da39", + "40a86c0d81cb5654b51d4447a6e348a246decc7780581a9aa2d60c2f768e1de7", + "378243809750b9f1750d2d1f0f9204ca18d490e7458afff003f86c8cbb255dbc", + "90565ee1486201dcb600733c58934abb476fb873581c0e3dae8aff2ea1ebfe5b", + "f5dfb739730436eef0a9ed0f8c1c7b982469df5d6c042d321de52ace8d3a2c15", + "34c56c75a6772748996ada2bb9f2ed985d65a7c6de0087e220f45285846cbb73", + "42fad701f64b0f289a69aab6d432cf25ea365f4966a478216977ccbd5e25c19b", + "ebf4109ffcd719505b5871ad734ed07d7d1718a173977d31106050ae7bef2ff1", + "df543c94ec4b21c6fb74b805b76a1f3c855d222faa8599c060f8c85020e320f5", + "ce720073f337bb4893fa3a3b1e2f8e86696e5179617000f4f47cb343922ddd3f", + "786a19bb3612b1d1110134aefbe6968e75bb3340fe8d3994fcbd0e905bffc18c", + "256345974cd78d13520d2e43ca98d1ca0d650baf88aaa6b8db75c80e6505b101", + "2648c4f69b677c285297aca3107a6770c0a4bc1689dde13e6b5b59e8af91940b", + "752195dc0695f44531be939deb0f9940a9eb5273117c7705768c2b5edd6a70e5", + "1e4da8e8647caba2f3b358ddd5c25936b46d87b9e118935597be60fa58c6ca4a", + "5be16077f567b7bf0034e61bcfc0311887588c95ce57c0e2fb430dfeebb93736", + "ad205a52efc99c249042c9a2a85f6e39a89ca00a1bbbdac176bcbbd2f6ac6418", + "41414f5074402bc65ab7cede304c467ea56456ccc4d5a99f74dbf698ec80a014", + "f0a24dbc494b779606b3fae942042ebb6e42d77cf188d81f5e0895215f24d975", + "ed67e0034372067628553cac0f55d69935203f102d2eae5bccf3e9fd6f8bddee", + "1544c144771491cd8bb6c79ebb199070189032a209a17ae0f5df17d95e0a48e5", + "e2fdafc580819c643c0a89d3ee89d934d4131d06f288295e946b93824e098863", + "6b16af8419f1b67c3d8176c2e2b6adf5ad345d84c797d4621c883d12c5881eed", + "6101922fcf4599ad00260237e8b14904716156d58a25c638578de9775f6546c4", + "0211764bef038cb43a5c8b4e4e1c2189e29c63acc195a8f18f5f52abb6c2d896", + "9fdd3d266a5a068ee069bc4df1c9ad13f5dc11503fe9730fc069dce86d2d0cc5", + "501185fcc47f5bc79f11c17aeb48f6a069298e4538f48c2335f5a5cb18d3d4f7", + "9039f3d010b09f603ec640edceb7861a36dab4b82364c69a208040c3ede48f17", + "751f234599524ba682a48181293f9f24bbfded0b905db1400c4d66e287ae6470", + "c739f4bf1f227963dbdc0ba653351d9b1755ac4b30e4e1fc29a552d1763752c8", + "8e3b632fbec986c803e343ccfb4c8a13c03b04f6212cbe161efe5d5976eb71d1", + "1d20996dfd8ac9c5cd8de5ece58b61abc6e482999a720d8fc6cab8017adfde73", + "74468a7e1be2e9c78afffcbe10b6673e7522120d6679186fd21614fb8d3260fa", + "e47b686632ca64ef9e44b6da170481087bddae257940e54aeaf807b18edb4120", + "23f33513eef75806f25e55dfadf2e09727569c6c57dd020b686cef0c9a6e8324", + "8d59bb2bc1e8a2546b70e875ed5138dfab8f5209888877a7090294b3ba3e8adc", + "92bc28c793c6cf7200794bdbb5c3c821fa205ed1b4b06fcbda8d0124d28e3136", + "cc61018d326cd22a23b07c05db51cfb87618046132d4bedca206cdafa063a20a", + "b370ee273c4fcdb5bde8fb9ef6ddfd45406447ce19c748e418de854c2f0362e3", + "6152c270f83886cf3f5761812c6d8eece4cac8c348230c9b42dd271d1e3f1aba", + "2a9b0d00fb1eb5564fd96a8c1369f9f8e1d32b947cb59a334d47b32c6d963897", + "384c35175bd92ed2c097eebdfa72395a309acb7aa60c390ec3eb66773b661d6e", + "573e038e86e51ae46e5a7992fa652fb4b92632a7065260e12c46d1fd6effefb6", + "005be3a45b8fe905f0d1a63f1306ccc4eab8191d20f6f5a805f4754c20ef2daa", + "9a60982d54be5edfd5af1bd9f7d25dca0be74e77d5eeb6eaf37dcfe06cee188e", + "676257a1528797108e3a5fe031627338e9f09b44297e33aa1463cf46e5bf7db3", + "e7a241cb0337b1b02a56acabcd77baa1363feda4f01cda38d460822da991e3bf", + "7ac458257132ccc040a84b03c9fb7b9ca4fbe0579e7d3428f584da04b5b33527", + "cff2be050d602ec4623227bfe5d17c81c6b4da11e8c00ad7f7ca7d4c6acc878d", + "c07b292e4500a3ff9845bb55d6d69eae602d939e7681ae5d65effe80db4626b6", + "47136ecffbadd0a856d93adf53a2e2b675403386663bbe766bec37d313c87a10", + "eb1bacbee5fd2a2b50535a70ed300e93b90491d7d3d29d2f1f8bc5ecde0d7839", + "15e2db68968bb0000bda5bb3747451926355e9cd63db122bec12a53fb15da9e1", + "1ae6a3722ce9c193df69b1b8a37aa086ec323283628290f7298871676d3c4cba", + "65477882f5794c720233a98e1e383d91deb070f0c2bceb95a5efe7008f854cb5", + "2a630b24aeaeeef20baede1abed05cc9c45794561239f64c6bc291afb4b16120", + "70beda84b736a344f503b4e25e0e4a426f31d7041d283aab464026dfb9714457", + "591cd0ffc4b3b51cff8621ab1458a478c0a0f57305f0551e9e5396dbe8f7d349", + "53625b2b7fcffc9568152e6b6d95472fe850ed163ab341044a0754334cf22e34", + "5751606d1ed8891eae9bd10c5676a54ec196b36b00f9b7d3aa9ab0ab04b5cc25", + "f9f8ac5616f2d1864a6599bafb5f2e6bbc7fba72d6aa23d9ea1e0096de9d4164", + "56241bac3d18e635913ae9db5fac9cdde4e28d74795a1ca77227354d8d38fe1a", + "e01cbe3312394d636a19003923a0ff3eea7f8d2e1d6b42f94777655add3fe9ee", + "d08709244798a43e91f24367176899d90f8678813ec8b822163c67e1740f89c2", + "7571cf1e503d83dd0c915f69b8365e94a1b37aaf98a37d08d4b90e2a3675220f", + "f43f4e2cf5990ca47a833947b671586123e6e73a57d4305a9b813a8ed0d2fb8f", + "12bd6bd6659343e3dd9e6666572c55724a0a9e6990b890b556fe662db9d062e5", + "9ae85f24c4abea079e0223f9f05355dcaf5fbb396291c96d5c3b016099e84bbe", + "495097c042dc6319f9f6480ad049016f113b9c5cfc6d612e04aad56934b919eb", + "4eaa8cc1bf14b329db1097395c1a5ecd0f6fdf5a5de76db7f0339ab9b2c491e4", + "9d9f56a74cd94f45656c40e09823308aed0b4c9e745203cd5950138713026939", + "40797ecc115fee18a4608c9efa1ffeb81c2ee1c4842561ef61fcf7076f1ffedd", + "11cd767ae016d95635cbdfe08538b9347337d6b0847d12697075584b8d0619f1", + "71cb92eeba1ac9e0112a7cf621767729fb77eca209140f248c04f3ca1b0918f8", + "e44a0c43a95543503268b2378dfa0c9161c522c62bee65fa4f4a238875c64b7e", + "8715cacf99e5b7a106cda39fd2b6c96c2e5022974b0f66de7d6a15ed2aaf4eed", + "35bb68dde977abf2784e33d1bf3052893a358a43a8b258bea6a7318b1dd4a310", + "b5bb928fb28bf9699bfbabc626fc279a9ebd1ce6b63c993ddeda7b9eb2f8cf27", + "3fc619d1072c86c3df178b90349411bfed86c49dc777f030f2d27e3100394b00", + "05ede74d5dcb911b02053a895751f92ae86743298c8c6d8c5811de191cd4e5d0", + "18ad4372b90d74e60d68a00e4586b0767c060f9c522d2016c515cc5754eeb06b", + "595447850210071d76266dff3f9ceb530f5fbdf38c9940011abb9b96820f69d0", + "3c80c4cfbea01760facf853c328821cbfa9635adf55a650b92fc41bcfb19c8f5", + "e4feca4d382344176e8ac45592711e4472f76e0667867d469c65ccb5be2c7a19", + "7d0b37fb8ac67f6752e21869e57ed1d8b08be8517ca53ac2835cd2295df094ed", + "4af613e520506104185fc529b07037168b79165ec93e37331dd01f306307a9b7", + "103fa19cc7adb309027f4eafd56cee2c11875358bb4d8d8dd2bbc2f3fe698bb9", + "ede21fac9950f370f23f2a674f795bc7b2eea5c4609ee32fa64d4239218b3d98", + "5b6014bebeefd652030b6f79d14252c51a6f1159a2b37bccdcd3e515e0ae27b9", + "dda18f566e40a3b6e882b5f35ed04328ef8288094d8151bcad76a8c228454f6d", + "bb06814f937b8f4fd23622931286468bccb770a49112c94b23f06e97ffb7aa05", + "9c629de1ccf91a807ae4d7c296108a9ec7880c1cd278e0da344061d329755c14", + "6dbf2e32d098163480ab02a98344750fa5daafc7c66adf4fe90d0eaeeff4f86f", + "4e93b1d6b6d8ee75bf09aa1789933ef1248397e1e3df6ddf8af74eaa04d59c3c", + "6e8f38e9b80a674c58e2d85fb797e0357cd1414528a175f8e06a10b15455bc91", + "d397c5433f574c1a5f9d5c219c91131f3823694a50e04a6a2d896458b76f2e2d", + "f50cc41a1fbfe1a27916b010ce35aed4d7f2803e571225ea1382facd5a603139", + "f375dc182eb989bea2dfe5c2e26a351c3e2c2ea5c8f11447f34004c5c5ca2f27", + "7171793b9c6db5102f6088265373a7c57778f18f440380255a390d5745113652", + "494461bfc7dcc180d454bacd79e12b4a12598e3cf2594b4a96001188df71f27c", + "4ccf4da37de3d59a491675a6cddcc6323deb914a8f458fe6bbd20f4ab824fa69", + "74d21ad3cac9cec15832b98239679ab6360d84ae3d2a36a3f02307d647e7719c", + "b7b45314da2fe600d6377531a57acfd3f5d44c2f0e8641d67f0c9288bab8a3ea", + "7e9025449366165d1e1a7a84b15c89acdb7220595af59d776716b7caf76b517a" + ], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "timeout", + "cache_state": "cold", + "timings": { + "total": 30.577526545966975, + "build": 21.27, + "query": 0.0 + } + }, + "problem": "target unmatched, unanswered, or lacks exact witnessed answer", + "input_status": "ready", + "input_problem": null + }, + { + "id": "nodegoat-benign", + "base": "nodegoat-vulnerable", + "tip": "nodegoat-benign", + "label": "benign", + "role": "transfer", + "capability": "javascript/express/injection", + "provenance": "Authored comment-only change: no new defect; vulnerable backlog remains. This label does not mean repository-clean.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": { + "case_id": "nodegoat-benign", + "ranking_mode": "evidence", + "rank": null, + "rank_kind": "selected_question_position", + "selected": [], + "deferred": [ + "590ded4d9ba52b59e2934f3d461e45dfa5bd351f13c4fc17238297438fbf492f", + "33ab14574877d6a529a58df1926e358759fb4ee1ffbc68146aebf77a895c8eb9", + "489bf9f5f3a1e3771698cf111c0e7fa3e84f81848869c88a44cf3d19979d168c", + "ca3b943eb07fc11f6cc16228ae4e7813cfccac5dfe7ea9147deb0ce84677e486", + "a83d9fd2d4f399a40984cdc63e30003a73c98a6986f76fd5e22ed0ed7873c8b3", + "593c9114695f69035b4df9d566534e35fcfaa2d78a3e4362c2ff634580d6bee9", + "87ba1a35a429f850990db0eceda9996daf572b97b32b38e0f7ff4b80dec9a6b2", + "e9cf95baf8cef9a83d9da86e0bce276421ed404867ad948acc338fa759a3450a", + "431521d90fc22b7683173732598c39b94a25447f7403dcd4d9e17ca23e243a61", + "d331868f74b26a35872e8eeed4f66f3e34a29f8e9745fc14c1609cc3408aebeb", + "61b6ec72d6c0dddae427635aca3c97681a112cc4c5f8e4367d9f5864c6eb72b3", + "e831bbc3ab250e71270b1f5175756f39c2da662bffd68b2ed78b5389a4f23d0c", + "082910c464337b0041733c3c2733ad7947d71549180f9a0b8ad4172901469d02", + "14541cd08e0b036e4ab5caa442c01459fb03a6e3ef0388bcd0347b121effc6fc", + "da4abcaa22e13947dca90ac9156293bda9297423304d60d587569389742ce17a", + "29000feef9d494e003efdcbb6eab5410bc93ad2f4674df9db389ed98a9cfb242", + "4679cce5fa8da06bd1f9542b5a58321d2b090556cce83080b6e9ace36d352a59", + "df4a0610953efc25e4ddc4bc942688434be889411d073fab09015aba97ce2511", + "9b7910f9f96aa714b760481e46e543ea413d6e4763b858a3d0c186a560ad618c", + "298f3d69ca3e2b343c9cc5288680120b89e035bfae803dc6f6952358b6d0f1d3", + "7fbdc1e100a0b9078b6a2d6264bfaa596c64501b8c5ced1557b56a3d98e2b351", + "e4fe7eb3e5d57766a2c6adc79d46b9f57ac13ba11df7846cc4f7d62123a51bd4", + "0cc9059de118ef8da2ab45a3453bb2f64a679dfa33233f3b1b722b3858df789b", + "d561ce2e09d49013cacec011cf5dfa8c5f35c25c41085e856b3d5f28579ba6f4", + "7eb45f19bf15a2826d7aac45f36137de8824abfa9c0d5412da3c69c5d6da7a0d", + "ef130caaa2b3321cd12e2c8c39a27f9a868d2405e572fcafa5cab93900d9f97a", + "115b829e9b03431b06c12212efdcc2da02b5e22953e8a02243a8cd5a59cea0f4", + "db0e20f3ffa3b74105bddd565ba608daaea4cf9baba6b43a2539958e1a8be668", + "d2034c51a6d44b7b5cb553f2ad130441532b6be68cac0e829b74c4240aa642c4", + "1d7abc4a4a8c6023e1c5231f46167efdb6c476e4533ea4670a17ecc6c8d09c92", + "ba984e9deee4ab97a4211ce15915bc36e0e42907e21f40525be95c698c439653", + "ecc80bd3363347eac23b60a8ec50efe1a5defd3609aff7149022fac1e74524d4", + "7cead756038bdaf46936671d2311c93b391692337189bd9f3acb5711dcd1b594", + "d7044d436bcc3e7e313fb2baff364c8aecf980b28741afd4d020f858a47a3909", + "f0fb49041bdc02002b8aaf574a29a738aeb235ca0bc5cbbe9998dd9841e93a0d", + "f12e400682d1a222abca9d05f942a24394d7795eacc7ec322c585a0a6ffe69ec", + "5e24ba3194915f95a2452882fe928f834ed4740f8fa2087c7573b7c2f128a2ad", + "4d7554903c7ff3f7005fe4ed77f7e82af8cba218d3ac0b431acf14d18ffeb639", + "896720a23ec5b7da3163d53b517817cb01337cdad64d2104dbfdd3b3526f9c5f", + "e13de3ef10e25c529870483b67e47206b9cd32251e118f20f628eba95236d9c9", + "ac5ad3cda567527eb97dca35bb56d076292b88e20baa36d337967eb1f4f63dff", + "7c0bba65b77fc890e479add54e7fb0e9a7d145a4304d81f614536a8470d0a471", + "4ed8fe95db377770a47a2b3ad04a3a720ec21bdbd5222272ec5555130a627fbb", + "ece73e32fe91c87a001f1e41342e09378041ee876c8a8846a51347b8b607cc2f", + "8146eab0359ca0b822353b632ced69bf09fd449704cdf7c6f84440d7ca784cef", + "ec7c01083f1fcb35c35244172a005b3eabebff9c0fd1dcfb4372268f82fb3894", + "ca89f1fd26f88f845f394fce84527e83c6a4cc8252f30d6787e7c5ac13e119a9", + "c3b4d527dc5c4ed121a487d5e4e3aa868df773ef3b04200802f9a306bf67c730", + "9e5735029a42e23af56c2cc802655bf46c55bfebf19f19810ac16cfa15fc688c", + "a562474ca19fd4d4ec052396b656b092e82be7b1c002746f631cd9fb68b39ff3", + "22e26415a3768b1b12cfb9469b912d359d0804761ee7f1d02d281600373dc8a4", + "03548d772fd2a4030a9f595257333eb9b323f1057a2a0399ed15efea113e719d", + "0f5f635e19864fbd276fd3eb0b6460f86274e6bc52533594879fcc42c02e4df5", + "f95e55b8ae987f7c4b11837ddaa8dac8bed46541f6d8c12633b46fe915b41824", + "e77b04a213011bc3e9812f81c2d1266be1234ff91a72d347b71017e8ea09f4e4", + "f7ab6f0b570873d6b99c3fc33ab556f093d7f5e4991eac884d3e766a2c29b326", + "722bfc188cadc50c1485cf4ede13f2b62e93b08b16f42f2586c104b8bd3745e7", + "144c1db7c40aa0a420e02130a756c7793fc8fa5d33549a08c236ddb96bad2df3", + "6bb3ba6475ce8d11ff20924b69721387bb0d4bbce1b852e640403dbd750f0a8f", + "a08e3f98d65d0452a631a11de0ef53c9fb53492efcf3d8003b5512478b92b4bc", + "4e0e78390504d44716e20ff65cf5f16c1f1ddc2fa0441e503dcae1826c666529", + "0e143029eb9d5d5c30c3dc0fda147c852e68d4e8d407795a1047beb586723238", + "43e8934e37c9ecda6c36b4bee6af63f4269e59cefb5df30af45ae08bd93f5063", + "6ad6e59fa1a92132e095463bdbb461598c80b45af85ff453a6450b59b61d10cc", + "c2b3c06e92fa87731137f871b9dd0f867fc53156a80bbf00da955cf5bfe0fe7e", + "b7b9b9cb1194740a47fa214266a43fdb70019fa1308009589d38f2c7662aa4b3", + "4d3ed9000a9b5806a0ed641e2739166e3df18ffa1925ee396fbe25d29e332c71", + "bce9e3fb76d6276772f1f279260ddb2f673a4a45a08f13fbc75343d20c0ad4ad", + "f0aa35455461c8f75dd8ca533e03dd43ea339a7026f07407ef26b12c3fe6f44a", + "64c0f7e52fb34476d5e47478ff354845a776dd781a2044963cae3191bb18058b", + "9f9eb159649a2e07879e36c4f5eb5bbb38e337540c4b295adb4b59ca31e2a868", + "bfba8296d9252a696a7f8262a80b63019fd89fb866e3d3daab087101c9d7ebd2", + "6b6bc1f8b05dab47833d180de1fc7b40d8637a213c87af02f19bfac2f9439869", + "72261efc87c3f66bd420e106d6e04235b2d6a7b4c59ceb5a235dbfbf31d02f29", + "94e30a15524e236d04ae2f0238a72c0b446a48b7b4302471ad6703861948025a", + "fa59397c0eb909b5b269278b706ba8432004d786cc8431db1e27fdf9614211bf", + "a65d452c03e7a0e7bfc77d9337f0c3f6cc47449979963ca1173f45c619b7b812", + "135f8cdcca313308bc5456466706c561652768149ff61e93f241b383c07448e8", + "d029880ad27458bf1d443088b6afe399af206a9f412fd8406769198f304e64f5", + "2ae591e30078f1e045b446004067a4734acda37a9673dbac82bca972cb5f8c2b", + "b35cc9123b9c6316f72cdbfcd7945157215622625141e56543a4093c0c553013", + "c8d88ff3a98aaa4eba3756a5f0b89cdeeeda10e5180f5eee0d3ae2b7dd042cdb", + "f06f0c86aa4079e5d3ac48ffa9b50661a0bd2f4c315190b26f13664de494c9d9", + "627afe91ac03ff52d178f64eb23d372523f86fb34fcc0ca0dade6786c38f0dbc", + "ccab701536e7f9615e52f4b1a1c68a2416263ad8de279372ce248fed5d7868ed", + "bb71e211e99f3dbe040a15b22eb7e004da953ca61b700ca3d1c94764cb6bb80f", + "d799a15d3d810c39c4a519c59843bbb6c2617f559f8ebdefe801296e0819149a", + "d6a24a60b3cec846b01cb2c3a1535ee2ab834a09e935abe70ede278ecb1ef045", + "d1cae428bb382d9cc38acac1c7bb8a5e6142a46f5b0e6e2ddb1609b0acc66f68", + "c46c90f66921363f974dcf82aaf3b3410222ec081abe097417dd1a1accb372b4", + "5630ea72ee47272cdf5f9e3d1df3aeb499c357880ad49b26cff1cebcbbaaaeed", + "013a84070826e011c0b19953b3493276e98498b3837618303aff28475b38eb2c", + "c158a154e2b9394ee661d2f982e93af8d59543bb7da5c8d2c8e9c65905384d4a", + "a0423c87fb8581f1897c9a0c774c3881ba8775e05f6cd88408cee05d126ac52a", + "7e9c5dc7bc705ee6825fcebe23ba885a4be30b318195ec89e9a19b450bff86fb", + "c6c5a131a84fabe329dc50128240b463b18a4ea0af2d036bcc02d869ec57fa7b", + "ffe9fe5d19fd7233e88869bdd2f6fe00785a9b15d074a3f8b171a03121ba64b0", + "324cdf414ea58e6d9496c28b138b43bb18cd6e983fb7678aef960670a51dc93c", + "fb3bd242d8f9801589ca53c24a1b36b88ee1e6b8932ddb6a5d3bb7b3019556be", + "5784aa43502be5cfa00e65ed1800bc86cea1b83db7b99737a92e3059c0aedb51", + "e05d1e4da035294fb1b5185492276e323b43a33c173dd05390edee2726f82f60", + "480a6f9e635cdb839e9ed2fab13d22291dff3c92ae99e1bf514439b370480f24", + "acc5d491964faf3f4858dce3bfe338199f9b5469c1ad33e64c2f0bfad2f0263e", + "e14724d931f179f9298c723043307a99153207ec425d4fae28f78becba7c0a9f", + "756d4aea97736b83d6904a6d96d22e8026d24796d64d6806c2fcc478272c16bc", + "8fc292a32ac35211b4747151ed7797cdcc9cf7edca0ea697f9cd9ca9eb2bf906", + "0434560a038fb3a29aaeae6531b7190a9a993f75cebecbde4dbc5d9f248c16b9", + "5c7e3540a665e15247dc85c88bc06f2514da2cd85010ec820cc53548ac751009", + "074e2d12c8900202ecd6b02df395375ee6343d1c04c22982c214e74d38fdf51f", + "cf2f20c22b8acc270d75b060b45b3725d2a4a0bc4dc33adc9feeec336fa84f31", + "bb67a42d62cb5389aeb41a0e18d26046ab4f20feae70cba114ddffd5995ac3e8", + "ad9733cd531deb592afd4650ebd20d8c967ea49693d2954151a70f4a4edb68df", + "572f510d0485395c2ff610cd031d238c3745f79fe98a8f9fef5b042c24e57b69", + "0ae9ac017e10c4d6256d41b99b5e771d7e8acf05bc1087acb58148a8ea2e8c5b", + "691315c9798b266ce8aaff0a6368a80e40c685c1a8e3a54fe139131f4d6da7a7", + "aee4c8330dd8ef28010fdaf243964d48dec427871626422da8d915843534755b", + "57aa82c0185ff3d73d91dfcbc6bae9b5d438cf064ed0ea9489d6b5de7c3df531", + "79ed0c8a9f7d6b06e75ef023d6ca5a32416a9c8fbd5a75fd97ea1c0e8f7a5a30", + "23f9afb28b6b7349cbf502c2a6a1ffff117d2b3a974d8705b99fc8717108627b", + "a6f0fe4aec662565f32d93874690023ebe09aea9a887b330e0c64a18e41dc966", + "aa5a287a1749ab0ab4e4b56048c738b95df8f4b19a82378847a39ccb5eb42315", + "09dff44163511e71b0fbf539655ece1940bd80039bc8743cc922699a37340b71", + "567b6eaa4c3dabaccdfb44885a6a4cd345ce3ffc6a201265084c1818c0b84226", + "881e7f1a45e2d7ebf74842b131573da24478db0c44ddaea50ca20007994387c0", + "e9a98c513dc38db66988ce7ed9fe730df4ba5297f2495c77a54ad2aa9195b9e6", + "f7484f28717752c36583df6d2167f9861bbf8368ac7f18b8a7c41ed41f301f37", + "c0c4a04d19b7a5f1f33fff97f49a9d0245c4b14d24c3691cefbf46b76c064d7e", + "2b86fe6715dd628b59d2303d2939369a6ebff338e7c9a3f41a5e76371e70d56b", + "3663dbf64c23ffed29746c390953bb4c54f0f3154cc9fa65e7bf6acdf7249702", + "8beedef6ba5098ea3567e7e9dd3ff36fa7ccf418f7a8dabc5cd1c8df83ac946e", + "07ee5dd2f228e5d605f204a0e607fde140b169321c49486f64ef0ef3498defed", + "34ca592cc7c4769ab6ab180436ace3d801b26463a0915b253459fbe8aacc7ce3", + "2ee6a26bbed8f2554b909b310e8fbcafea825d9016c009fa785f34121053ae17", + "6dd70277e9e05c3828bec89c4cc94f2b256eef50554fe78b7bc7805ba0c77d7d", + "448a4023be7987eb4282a5534d6369f7e8ded7ddb3cc29c537a4e09ded04434a", + "338e654fb02855abf17360c328f02986bf949d898b489ea7b9b29ce090fd1eeb", + "bbd12c331fb019e0c84c5629c0b4945609328a196e3862f6f6dbadba31da81c9", + "06ea156efb68bae0ec77525ddbd4eb18c1c97512cf524cdd7661286b48a2684a", + "163b26e0bcc1ebc83d620624356e8a535ba4a3130af719e57a4dad9922d0ca1c", + "ef7c18370144ac600fa593af56a8a849f7070b91261415e8e3cad6bcdadc80da", + "f196cd68d51074be3989e323fc62287af695b781697b91b658003c825b426ce6", + "a763fb136aa3978b7f47acb90aae2c6bb5715e8ca5ef1088d7856608c8807071", + "5bdc9a08c76139479780eda09106fbec03bd5662c1817f14c0893abe4c22c798", + "4d34d526ba5ee10314a8f6a74f7fedddbcf0ca79986c20a5127dbb08acfd6c43", + "2c2899bd893f9611640844c56b404e5b91768151cb862ff497bb823c505d568a", + "be30cb63922297543ed6c72314d3b6ec3d849d3c5d28fc3590ad44ebd82c4f0e", + "28f1d0d25c8654cd762a439d6eb6f3a6896d37071f406d8edeeb4c20adee20ce", + "f6a81369acf1c84e3cd6bf3399289323cb47848984a8c96800c0682fc1055a04", + "94b9c4a91bfce96cbe773c203dfdf22d1b015231e91dd478399c2586be6a3e77", + "526ce466755c525287df1a2adbdbdf566c896d79150b9bc7dbe65936e83abb30", + "57dcaf9ddb9d8b054aa5dda6a0c9739439362e898cdf22aaf9f7338149f8cbd7", + "064ff0d84035d834f9382eb8b4ad901fbeb4aa9fe816d7c36a34d56af41817bd", + "d97343cdd389cd2ed9d0f1358d2bbddc2752053d95eab3e16e99423298a4371f", + "f9deb31f0f9b98cad69111389734d43ed4fa86f24b05c9f2d48a78ea7a8708a3", + "f962a89d04810a6c57abde4a8d3182d2a31c5d0f0ed3c37c053abea1fa223f31", + "b62ac1b4b282eadf241f508bd5769bdd440b274f967d6ca73cb685ca249bd287", + "57840b0da13c3f6f67e587689ab1eac913c17e91d493d1ce9ff089e8dccdfd29", + "e3d1ce3b9de0fc9b48f2432d5e64947b5b24c3acaf1166f746bff1c54a028b9b", + "d322db4b50c2c1bdbe0e22ef291070e20c93e0f7199c184f5ff8b4795b55cbe9", + "88371d1acc9bc3b69c1d1957b27c9aefa3835be37bba74a359c35b1beaddc2f7", + "3486da81fc55b7e285f23e85f44c481d780090285a384cfedaefa27265a236a8", + "c87588b38d18fe9a5c563e2ae8d79649ce699607a891bd41b68194ce4507137d", + "d6e3d356d491e5f3dbaca74cf11aef9bd751b36737feb34e466b707156b0d779", + "843197ad039bb4e840b949b0ed1e5cf2230829366646a92ffc53d63e26149867", + "b0766042c55d7c370799af987bed01fed8a417f83bc67e21d1366988aa1af10e", + "b788ba22bd4225c24f95821dbf1f467dc2b13c7615b0bd2b00c3b234b7519539", + "91430345496348280d29d11662aeb6048fd7596fc6304380b6154494df30d154", + "8c1be7b4e8fd13181be0c4e46350a2f972e24acd13427e71c15e60dade41c28d", + "f87a9ae1d7dc81f88c5891890b889aa7212e172ddec092182b7de6f01e787d7a", + "b6a42fb01b464f31f65ebc10fbc12fccb051d8b44cac51a6818d3aedabea07f9", + "4a820a780053b6f65492691e067e236adbd2a05b467e4e3f2ed37ba1260ce84f", + "b07131192ab22510055930477ced5a10698278b2e00e3f711ebc202db640bee4", + "5fbb00d9b2952ae4f0fed217bf2d8603872d8fc93073d99f31d8815539121987", + "0bd48e207e95be86ea4e459c090a75c0adac8ca31bd2b631043854551b2c4392", + "b11de5874aa62f939e383179c3ea1b34d3569ec6ade901964393b92f8325ad11", + "8cd692618bec00fbbf099d570561201a2d0fdb601050fd20e198ead478530675", + "19345b5fb5cecfc86e4db3cb8715cc7370e81796d70f11ba150a13c5ea8e4c37", + "3ad0b3549b82f93ad869a9341397d394c1acee5e18d94a699b118094dd7a9a70", + "32220b1bfe511b9dcec64d7ea8f4317e96b2d0cdc10bcfa55cfa3b63ce64aab6", + "0cca9d955282f37dd60e764c56b52cbad90b33ec2c2943a7e5d155d35b0417fa", + "40d00274aa5b28039b0d57d75a81f174c0a31e4be2d324ba79a64b79efd4e411", + "319d00690097314e26638e2f4a6d848f50d1ff2f9d6f755a618eb31398ed373a", + "dfa47fe83d195de69774c841747f6e7ea78d6d91297821dc9b8ee5fc625cfe2b", + "5a497ad4d83218c29d4f22781a54d9e1927dc414f7cba6f89d794ed047f8b245", + "1bd3f2289cc1bfa889496ca5074991941263703a2517281734f33d0ef1050f1a", + "587a689c0312ac0f6d98de7495f01f34428cb128e73875a71508f7d5874415b4", + "fc77f013f48b454d8703f25f76646f74b74c9e4f8e5d542bc5f48d98c6e51fae", + "a2a7af80da34233233ec619dc29366b40a9e55ead63626db185524f2415761f5", + "f180a77f032bfea9c7d152438ba830f19e1bfc88481a56b9e554c61d2cd64f6e", + "cb70e9a1b44fa1f13f3bcc5290e6db5c8d6eda83602c9513e91e779ac6cddd3f", + "74f543e29e519871aabcedb9d39c953d5397aac456c3c5e6eb0e10e517989eb3", + "c983c339bc6881a1e6a0b2c6a794de858613b91318205a623dc61d80c2238036", + "97c5314218bfb458e1fb6d1a33c9ac75c7de152774a736f6c5874657515ccfcb", + "0744dea5a54614d094a6eb711ff7df94a180bfdeacaf330e31d9466cd51aeda2", + "06dc1ba86d3fcb46096bed80d9c5c558f79a5a33f4fcdb379f1567b1271b64ab", + "aa48541c8cce586b7a8c5e8ebe3cb607d1c283ef8940b7d4c7fb584327dd177f", + "a9d086126128de76e0bafc06ca465176ed2884cb7ec963457fe106346b8094f9", + "637323a350346cee17c66cda9b8b1be49d58350b0a0904bd61e5af20ce611df5", + "aa25524f30b8e84ef80b52064a75ca56cf438e67e2696e360d683c03e85c4c6f", + "9b5371eadea2bf5707f730896b4766a8b56012269f1c02c5df9d0df1d1cbf696", + "d527de43dc2dfdb271c213a927ab31c08b1f063298b211b6b11831a4dff51922", + "5ee4f0b0ba2c39e7071bba12da912c1ae213b8a2cee0bb437afa500328a237d4", + "43d3388ae21433a62d37d4c92861c125683f03a0edd9d1afaa56a42a7b793dc1", + "cc8161804d4c84fe4c4f7210a16193637accc1f791b7fc7be026c07177b7da4c", + "4bc68b77bfd52e96e8db4fb7293a6d4f396d234eb4dafb625df76bc8f1ba1c7d", + "a66e57d86751f21d11652bc991ffe476eacb638f38f95947b723ac9448c5f668", + "278e2e9a97727da969f8d122576dd475c43141146f984e3af997600a013f19bf", + "3152613ac0763b809bc99a50b728391cfe19d2cfeb27ff47a1e3671ed7526a3f", + "06168cf4f7850405f47bd8cfe013dc077b51457b355698ea3407f998cb561c2b", + "44620fe943880d4498587b283cf31a67b85fdeef53f59223299018c3666ae32b", + "eaa4fc381ad8dd4a49b66bbe7ccb050b2ed8735ec0d5eaee4f555fce0ff39a8c", + "68a35789d8aa7b4f5293eb06988118bf39be4f0354e6dd89674da130c4ff7911", + "3c9cfda0c903ea8e97a9bdc2966dff555df6580479782ced9ea934837e3bdb5c", + "4367699c5a75ef7a22a52ca8d1b77e15ae6c8c18b2ec5fa929d688281ff34edb", + "f020689fd3ee8e3f51d12f177d80fb80aba8d3435a9f58e63cf4caadc02eca10", + "06f7107e12e2f2c7151d2c38ca31adcd8690e7dcab4537b37183561a9306208c", + "2f8516c90c01cfb4bd29a3b8ad1b61280436a37804b24929327cb41d8eac39aa", + "8f51fe6438299d6f935f48d1d0991270ad477174195aff8574ef587a45038efb", + "8d26ec62881cf7efa89509047c178e7b920a87cc4bfb9cb0d6d991e87ca22124", + "ec5cd96c01771e651d9e09445c5df8af453e475da75f47a583a1006e99686b09", + "2981a228c15eb8a02d051bad6ce39736dd5f4c3f63a979d997bc23086105cbaa", + "7055c8f3c6f41ee3593da37fd92332c561907e07a633b9ba7bf66347cdccb378", + "68b25a8b5bcd76f92ed9473318e67e752b5898eb6b34c4a1205b77a88dc0214b", + "435b8c03368213b50237bb6f7a4dbfad4e7ba8d4f3948b046a5e95ff38c739be", + "f553b646e7933b5f766d1187c3bb1aee241ea0734ec1c6addc08871c43bb7c64", + "5f7e12488b0d469ffbaa32d1fa766352c8672ccd9e81f503480cec626d1f88b3", + "86fed64323e502425165fd4b319a848da156ed4e1acbec6ac706b8f5afbdc1e9", + "3273da703327df23094325bf9a120c3bbbc9388b4bbbec32a24b768f4d02669a", + "cd57f10c8a3c69b40ea2832dc35837d8a7521f2a17b2936eccaab7d5bf482dd5", + "fe62a9ab0e66c65344f94de1006ed30505bca06dcc7619ca717078a09afafb91", + "f83f5339fbbb59939406f37a8053030f00333d809da78196e1dc177209fd0e70", + "9cfce61b0d63c05676d62a7dac8c1362d78e2e686d6a8b53c56094bb2014ab96", + "dd387d649e718c5d7cd9618fab6cf60bae452924f4e0b36b9b9ee9d4b9738ef8", + "b4e9704f8937686cd738c71fa7250b970fe64be89c75e36412cf4288e7911371", + "b2d3838be418d29c1ebf100d269591a89b6e74f81b822cff71d8a9d9548dea0c", + "e31733d8cd5174ecda373492fb9ed3f56fffdac8f869380c06ee9f185821918b", + "3c7b69a99d3765c95a713d27af4ac28d7808ca92543062610bdf24edd3643790", + "cd639186013fa4488043c42b05357e82425a3e889ac14679eef46b7388cecfd9", + "0ca04c8edcd2d8a247e575209a9e5c8a1cf86c39e6655d79d6f85ef41556ef71", + "d8cb785d9bcf0b1a8289362c5badd0db084f2efa3d831fdda8ffbc5cd423febb", + "c932a2fea0cf3a50a44090757e856ecaa4914e385b566787b60877f04c947002", + "1d3d7b3981fee634842a7dc05f5e4d1bac279c0ab8e9df78d768f43676186340", + "155e5683914f9d0fff0323548d9a531ed582e72414b934e57edb656579cb05e7", + "486352981492eeca9626588e8aa0a737dedf797d83a20148cf86aaca0e5cd660", + "692125735f88d08d8cec81e5564ed2f20d88422cb693407e8b569f2b1e07050c", + "b9195800d5bcce2e36a49a8f49f1674d9913dcb526cf50d1097ce4bea82407fe", + "92d25db73aef0c89d7f6d45a21f56bf7c0b3854a0c8d19db7bc7247ed2244f78", + "9eefbecbf32c98775e957013ff48c835781e52d91e576f81eec2c079bb61acd5", + "9a71eba84ef99ab18d46121f3d387888c2ebd4054b85f3cc2fe90f8e75cb6538", + "5fec8b431826e32ff8b6d3da66269f1e8561573bdbc8602f3fb20fd5e1bd8f44", + "117d803b171807fb6ea627fb8eadd75abcb20606fc3acfea76def5897a986f35", + "71a5b2e0b33d5bbb1ac73e6967b839cdfbea4de2fc828ec34ae8e40f8dfe96aa", + "3175ca255e0323924a203bf8aa949691546196277c5976052ff0678a934fbffa", + "7b355ea64f6dfd26a0ca7c433c31b1368e70d785f31c71caff4df6883245d409", + "3f00299f644f669c39db368d2a0df198f572ce9c8c08c85a94fd8c7db9cb5500", + "3e4b1620b66257264d51007170e6b0c49729b4731e3e1d236d188dc325ece52b", + "ef62a3e54636bc30ce5b75fb14e4753986000fed2eca3cb11aab716c88729f31", + "53635a42011bce8fec02af0d16ca0cf4b994332d1ce09551b99693a1ed59d247", + "0e4f65ec98ba41eedab3df06256eb227c558f31fee052a4266b3539f7af08275", + "23a5e489bbb5740c0c685591e6b73a7096bb238cad11e8d7e84fc9f4b7f55207", + "b92a8731fdc1bf7bd7bce4084892f87e4d9174acb204ee163cebebcfcae6a5d8", + "2e55a819e3b67123ec2edfc304418d7fee50dae9c9b922c3a5d250d6f7c9662e", + "3b6aa69186293835af4c700678ee9bb810de2ab8899c93cf245e01537742f5a1", + "2377ef08168881eba6f35e080a5fed4608aa733dc9670f59d45ceee5ce08fa47", + "2f26d70299414d84d00c95be2fd40758bce2e88a1fe89bedf898395894f501b9", + "5c2048320f765e1756e7a743afa544a602d648311f4bb8495f3d43de0f8cea49", + "e08780a749f547c02460053e2a258b64f89ad494c042171f2e8a426f3c9a0520", + "97ae7d3c4e6969d04821c5ed50c21a914379c1a1b3b5e5dfd38b26438e249f2f", + "6e181d25ef0f246585e55b5eb77c8e6191fb135af98e816b0abd841134bd5d57", + "271afe681be4d6c7c09cf9b4010888525eb1efb66cc2501215894c15e2898519", + "e8e670d05231f561f6a2ea1c1e08a560a96bb2674ac72851dc29da697ac169ca", + "8726ea1166fc378ce1bc6bc99ba52e93416fb5d1fefd812ea29de503077d548f", + "3cab3aa4cc41da609f367c1c57db872b8cfcb7b2f323516266bb3d8fa36642b4", + "c5a186e0f17d7af521efa20982916fc813e1b7d05295c3da7730ef6b5a48cab7", + "1738964f08db1fbe6b5965f7721be058d80a4e1ec976ac743059a5b31d6cd7a7", + "7f10a07aaba3a86425dce315a22df012363cd11065229f983530e2156fd77442", + "d97c168cb31e3390b66dc4f61020d70ef36ec9bdc679c2b64a79dfc648238207", + "0db0f54012e0427209e8a7b14f787419a4a6cf8cfbfd7e985e34898c1dcc3b5b", + "82d9cb547ff915752dd430f4b91c03970ed3cc9e376a93aafea77e196cd1998b", + "88f50df0343fa95532cb3b9d60cba5cee24c7e245bccc8ea06d8803d43f99f75", + "525d6f86a91046bc79ec5e19e21eeb42edb94aa9c1a3a6ff669455aebbefdea1", + "a8387bac47d88608c9a58ab2916857b9fc2fd8a1d52fc5d16f79bb4ab8be40e4", + "57ea90041e625ad5368caca533f024381987b1afd81d092b28eed73f0c8c5499", + "3eead9155ab4b5705fa08efb59ff16f1705d2eca4a8d707e4f633731bdccd8e5", + "e1d445eda8d84d9b3972b06b657c3be233a2c77a2cc146988c3d076b11b2f906", + "0e6a4376c4e70a27e5bd632511b761c70d8fe6776f93691d26262e169965152d", + "94df997fee522b612e12ed3596618cf27aa3a3109bb459f16eb6b6c136538295", + "6397f7955219931bf05a5b8407360c4b71ae62002aa273ed85db15276dcfb613", + "a3880c761ca9d0019b08cf255540fa495d5d69593e9bd73fa6eecb41dae42859", + "33e09133f59de09d87866389533ef005fc2c34de8a4cd68ea1d528d3c6df4165", + "58ca35a7300e2d7edd5acee6de464da5593d81380aff9e99fad2bd1d8c0dee68", + "2d8220d8b7f51f9f1082d903f592ff051faa4c37a46fc131c31da1dd2a233ed0", + "0148345468c538297511e912438b1ff6f0bcc70d8058f87ff70b5f944946395f", + "cebf3f7bf74150ce4fbddbc693fd6881a8d18aacbb54b8e33097580fb330e273", + "b8213e35bb6cffbddb211df8497d7c37f33a800f3a729846b041155c2f82c7d0", + "33c0d02c59cebf05005b834b6354b9d11184238c087a253b86e5479209a57d61", + "cfa8f4a6860419485b27245e5f66228003a0f4fce6797dc9e7fb5d938bb61100", + "633e780f4bf491dd0635d773334d7d2ca15a670d0d78681871dd88d77a2132e7", + "0b51f52c0d43beecb81fb62c82a17850a11aa6faab7527ea4833efffb0b4a8c4", + "c295b4b3d54eb3f602e5b7b6f302dd9c66cad44282af938a158887a4b64e6400", + "a9979735925dbdc75c01667c69443c96f645e530ca0fbb182c1d515093799d43", + "9fffb2f1348a76b735b269ce0961460b780c22882cf471ae5f1c1fafea3ae48f", + "d06f59868c9200c0d32396ee176a3260ba3940e0fef382b1edeb189030ab043a", + "44110d2cf36273a7c292ad5a9fc73bfa40d5de4b0188a8bd5d28f6439e078ef7", + "7fffb43180730947e0ce0f17899806d2998df9a70c9f9850a0bf0d5ab97da3f8", + "93b7d5e9121a06853fd8e0b65a846bf7497ec5c9e769db2f721ce40770a5ad8b", + "e3c15c181160b97750a748f9b1ef062574f0899d602333c7c543efe7be6687c6", + "483fc4310a9c5e101c6e1592299caba75d191c524516cf48094705cacaaffa1c", + "e24b115dc5e2bbaa03a956e316f036cd74f284a2170c98d0524b212839ded525", + "bc6e44c74a39e34b2763f04641908744dda340b8ee026c24e6ab18298230dd6f", + "646e8841bd52d5e6f441f08b068b8d3a1ef694e427bd418008dc08e55f9263d8", + "27010201141d9d2123b140bab4c05d1e60884510022f11e83aa5aefbb5fddc66", + "0a34d5ebaad9e855f386b3362d8dfc509d0ffca45877158261eee625e687aea6", + "ad133cc1b1af014f3acdb5852f7efde5750b39eaba1978bd391f0e620de02e54", + "210d474dcc58be7f5f81155c0b2135d26047b8bba3b413b2aa20485e4cce68fe", + "0158e2507ccb37e5302d3d188bb58ce6f7bfa56a8d84c1e2f085796719fc3b9b", + "2c4418eeb0fcf9317e8266ce1290919cf7785f09ec07efceee9c9eb31eb2c785", + "4b325afbc98d6f4510cc2e0bb3e957113ae4945b81d29caeee539c2da6f710e2", + "7d6fcd1860fa72512ef76e0187dc7af6fb467cfa2e96f9601e0e8989c38994c9", + "88260afe57f54f14752828d92501cd736bd27ff95389912283e88faa97a75269", + "529b7bf7e34de1f5689bba72a58407f3731bd2cee8af78a53dbd15497faf9d40", + "d5066d261ad12b1f8692fbfc1876a6d30837395cbb121351d9ba61cf1b20cea1", + "b0f968a432800d13c601c7520bb36cc9ba52b24e2a09109fecc34cbfecdbe9ea", + "f82bb8ca1a7fd8998886a8fe8f00084f108125394b9621c6cd19d92f23fd8c3d", + "53df3ed8b2dd7c46d8c42882a6096bccf1d6c966cbef8158b45f4390085a00c0", + "117aa85101fd69718713ffd12a7b4cbaa9bceb86cb52731e69ffb9ef83f80750", + "10662bded3a99140e896de3673635e5d946b0536db96643d0b4c621d7d68f56b", + "06b6066af41823461a0773a4018a93e9e7dcd71afd31331e5fa650b4fd1ac2ce", + "eca317877601cc31ae62fbd401aaae05a95ba092256beae0a69f90f42031dd40", + "040ab49439c03cee7663bd46349400cb389c480732f583aacabd8aa2281ac141", + "9d64998ae03ac69c2d6157548cf8f59eaf0ce08f10059bdf50ff8aae62dedfc8", + "104e0c71e792ced34e2811d7ec98f691d0740d260a8479c5e352e6d6185581ae", + "09d6c766aafeb3164a7a719920d7f9b871deaa9dc84691e8073f0db23975da39", + "40a86c0d81cb5654b51d4447a6e348a246decc7780581a9aa2d60c2f768e1de7", + "378243809750b9f1750d2d1f0f9204ca18d490e7458afff003f86c8cbb255dbc", + "90565ee1486201dcb600733c58934abb476fb873581c0e3dae8aff2ea1ebfe5b", + "f5dfb739730436eef0a9ed0f8c1c7b982469df5d6c042d321de52ace8d3a2c15", + "34c56c75a6772748996ada2bb9f2ed985d65a7c6de0087e220f45285846cbb73", + "42fad701f64b0f289a69aab6d432cf25ea365f4966a478216977ccbd5e25c19b", + "ebf4109ffcd719505b5871ad734ed07d7d1718a173977d31106050ae7bef2ff1", + "df543c94ec4b21c6fb74b805b76a1f3c855d222faa8599c060f8c85020e320f5", + "ce720073f337bb4893fa3a3b1e2f8e86696e5179617000f4f47cb343922ddd3f", + "786a19bb3612b1d1110134aefbe6968e75bb3340fe8d3994fcbd0e905bffc18c", + "256345974cd78d13520d2e43ca98d1ca0d650baf88aaa6b8db75c80e6505b101", + "2648c4f69b677c285297aca3107a6770c0a4bc1689dde13e6b5b59e8af91940b", + "752195dc0695f44531be939deb0f9940a9eb5273117c7705768c2b5edd6a70e5", + "1e4da8e8647caba2f3b358ddd5c25936b46d87b9e118935597be60fa58c6ca4a", + "5be16077f567b7bf0034e61bcfc0311887588c95ce57c0e2fb430dfeebb93736", + "ad205a52efc99c249042c9a2a85f6e39a89ca00a1bbbdac176bcbbd2f6ac6418", + "41414f5074402bc65ab7cede304c467ea56456ccc4d5a99f74dbf698ec80a014", + "f0a24dbc494b779606b3fae942042ebb6e42d77cf188d81f5e0895215f24d975", + "ed67e0034372067628553cac0f55d69935203f102d2eae5bccf3e9fd6f8bddee", + "1544c144771491cd8bb6c79ebb199070189032a209a17ae0f5df17d95e0a48e5", + "e2fdafc580819c643c0a89d3ee89d934d4131d06f288295e946b93824e098863", + "6b16af8419f1b67c3d8176c2e2b6adf5ad345d84c797d4621c883d12c5881eed", + "6101922fcf4599ad00260237e8b14904716156d58a25c638578de9775f6546c4", + "0211764bef038cb43a5c8b4e4e1c2189e29c63acc195a8f18f5f52abb6c2d896", + "9fdd3d266a5a068ee069bc4df1c9ad13f5dc11503fe9730fc069dce86d2d0cc5", + "501185fcc47f5bc79f11c17aeb48f6a069298e4538f48c2335f5a5cb18d3d4f7", + "9039f3d010b09f603ec640edceb7861a36dab4b82364c69a208040c3ede48f17", + "751f234599524ba682a48181293f9f24bbfded0b905db1400c4d66e287ae6470", + "c739f4bf1f227963dbdc0ba653351d9b1755ac4b30e4e1fc29a552d1763752c8", + "8e3b632fbec986c803e343ccfb4c8a13c03b04f6212cbe161efe5d5976eb71d1", + "1d20996dfd8ac9c5cd8de5ece58b61abc6e482999a720d8fc6cab8017adfde73", + "74468a7e1be2e9c78afffcbe10b6673e7522120d6679186fd21614fb8d3260fa", + "e47b686632ca64ef9e44b6da170481087bddae257940e54aeaf807b18edb4120", + "23f33513eef75806f25e55dfadf2e09727569c6c57dd020b686cef0c9a6e8324", + "8d59bb2bc1e8a2546b70e875ed5138dfab8f5209888877a7090294b3ba3e8adc", + "92bc28c793c6cf7200794bdbb5c3c821fa205ed1b4b06fcbda8d0124d28e3136", + "cc61018d326cd22a23b07c05db51cfb87618046132d4bedca206cdafa063a20a", + "b370ee273c4fcdb5bde8fb9ef6ddfd45406447ce19c748e418de854c2f0362e3", + "6152c270f83886cf3f5761812c6d8eece4cac8c348230c9b42dd271d1e3f1aba", + "2a9b0d00fb1eb5564fd96a8c1369f9f8e1d32b947cb59a334d47b32c6d963897", + "384c35175bd92ed2c097eebdfa72395a309acb7aa60c390ec3eb66773b661d6e", + "573e038e86e51ae46e5a7992fa652fb4b92632a7065260e12c46d1fd6effefb6", + "005be3a45b8fe905f0d1a63f1306ccc4eab8191d20f6f5a805f4754c20ef2daa", + "9a60982d54be5edfd5af1bd9f7d25dca0be74e77d5eeb6eaf37dcfe06cee188e", + "676257a1528797108e3a5fe031627338e9f09b44297e33aa1463cf46e5bf7db3", + "e7a241cb0337b1b02a56acabcd77baa1363feda4f01cda38d460822da991e3bf", + "7ac458257132ccc040a84b03c9fb7b9ca4fbe0579e7d3428f584da04b5b33527", + "cff2be050d602ec4623227bfe5d17c81c6b4da11e8c00ad7f7ca7d4c6acc878d", + "c07b292e4500a3ff9845bb55d6d69eae602d939e7681ae5d65effe80db4626b6", + "47136ecffbadd0a856d93adf53a2e2b675403386663bbe766bec37d313c87a10", + "eb1bacbee5fd2a2b50535a70ed300e93b90491d7d3d29d2f1f8bc5ecde0d7839", + "15e2db68968bb0000bda5bb3747451926355e9cd63db122bec12a53fb15da9e1", + "1ae6a3722ce9c193df69b1b8a37aa086ec323283628290f7298871676d3c4cba", + "65477882f5794c720233a98e1e383d91deb070f0c2bceb95a5efe7008f854cb5", + "2a630b24aeaeeef20baede1abed05cc9c45794561239f64c6bc291afb4b16120", + "70beda84b736a344f503b4e25e0e4a426f31d7041d283aab464026dfb9714457", + "591cd0ffc4b3b51cff8621ab1458a478c0a0f57305f0551e9e5396dbe8f7d349", + "53625b2b7fcffc9568152e6b6d95472fe850ed163ab341044a0754334cf22e34", + "5751606d1ed8891eae9bd10c5676a54ec196b36b00f9b7d3aa9ab0ab04b5cc25", + "f9f8ac5616f2d1864a6599bafb5f2e6bbc7fba72d6aa23d9ea1e0096de9d4164", + "56241bac3d18e635913ae9db5fac9cdde4e28d74795a1ca77227354d8d38fe1a", + "e01cbe3312394d636a19003923a0ff3eea7f8d2e1d6b42f94777655add3fe9ee", + "d08709244798a43e91f24367176899d90f8678813ec8b822163c67e1740f89c2", + "7571cf1e503d83dd0c915f69b8365e94a1b37aaf98a37d08d4b90e2a3675220f", + "f43f4e2cf5990ca47a833947b671586123e6e73a57d4305a9b813a8ed0d2fb8f", + "12bd6bd6659343e3dd9e6666572c55724a0a9e6990b890b556fe662db9d062e5", + "9ae85f24c4abea079e0223f9f05355dcaf5fbb396291c96d5c3b016099e84bbe", + "495097c042dc6319f9f6480ad049016f113b9c5cfc6d612e04aad56934b919eb", + "4eaa8cc1bf14b329db1097395c1a5ecd0f6fdf5a5de76db7f0339ab9b2c491e4", + "9d9f56a74cd94f45656c40e09823308aed0b4c9e745203cd5950138713026939", + "40797ecc115fee18a4608c9efa1ffeb81c2ee1c4842561ef61fcf7076f1ffedd", + "11cd767ae016d95635cbdfe08538b9347337d6b0847d12697075584b8d0619f1", + "71cb92eeba1ac9e0112a7cf621767729fb77eca209140f248c04f3ca1b0918f8", + "e44a0c43a95543503268b2378dfa0c9161c522c62bee65fa4f4a238875c64b7e", + "8715cacf99e5b7a106cda39fd2b6c96c2e5022974b0f66de7d6a15ed2aaf4eed", + "35bb68dde977abf2784e33d1bf3052893a358a43a8b258bea6a7318b1dd4a310", + "b5bb928fb28bf9699bfbabc626fc279a9ebd1ce6b63c993ddeda7b9eb2f8cf27", + "3fc619d1072c86c3df178b90349411bfed86c49dc777f030f2d27e3100394b00", + "05ede74d5dcb911b02053a895751f92ae86743298c8c6d8c5811de191cd4e5d0", + "18ad4372b90d74e60d68a00e4586b0767c060f9c522d2016c515cc5754eeb06b", + "595447850210071d76266dff3f9ceb530f5fbdf38c9940011abb9b96820f69d0", + "3c80c4cfbea01760facf853c328821cbfa9635adf55a650b92fc41bcfb19c8f5", + "e4feca4d382344176e8ac45592711e4472f76e0667867d469c65ccb5be2c7a19", + "7d0b37fb8ac67f6752e21869e57ed1d8b08be8517ca53ac2835cd2295df094ed", + "4af613e520506104185fc529b07037168b79165ec93e37331dd01f306307a9b7", + "103fa19cc7adb309027f4eafd56cee2c11875358bb4d8d8dd2bbc2f3fe698bb9", + "ede21fac9950f370f23f2a674f795bc7b2eea5c4609ee32fa64d4239218b3d98", + "5b6014bebeefd652030b6f79d14252c51a6f1159a2b37bccdcd3e515e0ae27b9", + "dda18f566e40a3b6e882b5f35ed04328ef8288094d8151bcad76a8c228454f6d", + "bb06814f937b8f4fd23622931286468bccb770a49112c94b23f06e97ffb7aa05", + "9c629de1ccf91a807ae4d7c296108a9ec7880c1cd278e0da344061d329755c14", + "6dbf2e32d098163480ab02a98344750fa5daafc7c66adf4fe90d0eaeeff4f86f", + "4e93b1d6b6d8ee75bf09aa1789933ef1248397e1e3df6ddf8af74eaa04d59c3c", + "6e8f38e9b80a674c58e2d85fb797e0357cd1414528a175f8e06a10b15455bc91", + "d397c5433f574c1a5f9d5c219c91131f3823694a50e04a6a2d896458b76f2e2d", + "f50cc41a1fbfe1a27916b010ce35aed4d7f2803e571225ea1382facd5a603139", + "f375dc182eb989bea2dfe5c2e26a351c3e2c2ea5c8f11447f34004c5c5ca2f27", + "7171793b9c6db5102f6088265373a7c57778f18f440380255a390d5745113652", + "494461bfc7dcc180d454bacd79e12b4a12598e3cf2594b4a96001188df71f27c", + "4ccf4da37de3d59a491675a6cddcc6323deb914a8f458fe6bbd20f4ab824fa69", + "74d21ad3cac9cec15832b98239679ab6360d84ae3d2a36a3f02307d647e7719c", + "b7b45314da2fe600d6377531a57acfd3f5d44c2f0e8641d67f0c9288bab8a3ea", + "7e9025449366165d1e1a7a84b15c89acdb7220595af59d776716b7caf76b517a" + ], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "timeout", + "cache_state": "cold", + "timings": { + "total": 30.564777759020217, + "build": 21.42, + "query": 0.0 + } + }, + "problem": "target unmatched, unanswered, or lacks exact witnessed answer", + "input_status": "ready", + "input_problem": null + }, + { + "id": "VAmPI-SQLI", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/injection", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": null, + "problem": "no recorded execution", + "input_status": "missing_prerequisite", + "input_problem": "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + }, + { + "id": "VAmPI-BOLA", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/access_control", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": null, + "problem": "no recorded execution", + "input_status": "missing_prerequisite", + "input_problem": "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + }, + { + "id": "VAmPI-BOLA-BOOKS", + "base": "vampi-regression", + "tip": "vampi-regression", + "label": "regression", + "role": "regression", + "capability": "python/flask/access_control", + "provenance": "Existing recipe known target, full target population retained; environment vulnerable=1. Snapshot regression, not an introducing push.", + "prerequisites": [ + "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + ], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": null, + "problem": "no recorded execution", + "input_status": "missing_prerequisite", + "input_problem": "Reviewed independent vulnerable/fixed/benign push pair required before hook admission." + }, + { + "id": "libpng-CVE-2025-66293", + "base": "libpng-envelope", + "tip": "libpng-envelope", + "label": "unsupported", + "role": "envelope", + "capability": "c/libpng/memory_safety", + "provenance": "Arithmetic/bounds is outside the current abstract domain; measures graph/cost envelope only.", + "prerequisites": [], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": null, + "problem": "no recorded execution", + "input_status": "ready", + "input_problem": null + }, + { + "id": "ghost-reserved-population", + "base": "ghost-reserved", + "tip": "ghost-reserved", + "label": "unreviewed", + "role": "reserved_holdout", + "capability": "javascript/express/unreviewed", + "provenance": "Reserved from production API/module/async shape and public security-fix history before scanner results. Manifest6.64.0-rc.0, Express4.22.2. Not an ESM or Express5 coverage claim.", + "prerequisites": [ + "Review and freeze supported positive/fixed/benign changes from independent history; select family before scanning.", + "Freeze core and existing facts after development; preserve reservation and record any contamination." + ], + "outcome": "unresolved", + "reached_transitively": false, + "witnesses": [], + "complete": false, + "recorded": null, + "problem": "no recorded execution", + "input_status": "missing_prerequisite", + "input_problem": "ghost-reserved: pinned checkout 07671c072c5a5e0538cbe44d9d4ca66111751535 unavailable; rerun this validator with --fetch to fetch it; ghost-reserved: pinned checkout 07671c072c5a5e0538cbe44d9d4ca66111751535 unavailable; rerun this validator with --fetch to fetch it; Review and freeze supported positive/fixed/benign changes from independent history; select family before scanning.; Freeze core and existing facts after development; preserve reservation and record any contamination." + } + ], + "metrics": { + "recall": { + "numerator": 0, + "denominator": 2, + "value": 0.0, + "wilson95": [ + 0.0, + 0.6576197724933469 + ] + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 2, + "value": 0.0, + "wilson95": [ + 0.0, + 0.6576197724933469 + ] + }, + "benign_interruption": { + "numerator": 0, + "denominator": 2, + "value": 0.0, + "wilson95": [ + 0.0, + 0.6576197724933469 + ], + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 9, + "value": 0.0, + "wilson95": [ + 0.0, + 0.2991450484195441 + ] + }, + "regression_detection": { + "numerator": 0, + "denominator": 3, + "value": 0.0, + "wilson95": [ + 5.551115123125783e-17, + 0.5614970317550454 + ] + }, + "actionable_recall": { + "numerator": 0, + "denominator": 2, + "value": 0.0, + "wilson95": [ + 0.0, + 0.6576197724933469 + ] + }, + "query_completion": { + "numerator": 0, + "denominator": 1308, + "value": null, + "wilson95": null, + "unmeasured_cases": 3 + }, + "latency": { + "cold": { + "samples": 6, + "p50": 30.577526545966975, + "p95": 30.63820442801807 + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 11, + "timeouts": 6 + }, + "by_capability": { + "c/libpng/memory_safety": { + "recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "benign_interruption": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "regression_detection": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "actionable_recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "query_completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unmeasured_cases": 0 + }, + "latency": { + "cold": { + "samples": 0, + "p50": null, + "p95": null + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 1, + "timeouts": 0 + }, + "javascript/express/injection": { + "recall": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "benign_interruption": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ], + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 3, + "value": 0.0, + "wilson95": [ + 5.551115123125783e-17, + 0.5614970317550454 + ] + }, + "regression_detection": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "actionable_recall": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "query_completion": { + "numerator": 0, + "denominator": 1308, + "value": 0.0, + "wilson95": [ + 0.0, + 0.002928295027470378 + ], + "unmeasured_cases": 0 + }, + "latency": { + "cold": { + "samples": 3, + "p50": 30.564777759020217, + "p95": 30.577526545966975 + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 3, + "timeouts": 3 + }, + "javascript/express/unreviewed": { + "recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "benign_interruption": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "regression_detection": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "actionable_recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "query_completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unmeasured_cases": 0 + }, + "latency": { + "cold": { + "samples": 0, + "p50": null, + "p95": null + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 1, + "timeouts": 0 + }, + "php/wordpress/injection": { + "recall": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "benign_interruption": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ], + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 3, + "value": 0.0, + "wilson95": [ + 5.551115123125783e-17, + 0.5614970317550454 + ] + }, + "regression_detection": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "actionable_recall": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "query_completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unmeasured_cases": 0 + }, + "latency": { + "cold": { + "samples": 3, + "p50": 30.634440443944186, + "p95": 30.63820442801807 + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 3, + "timeouts": 3 + }, + "python/flask/access_control": { + "recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "benign_interruption": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 2, + "value": 0.0, + "wilson95": [ + 0.0, + 0.6576197724933469 + ] + }, + "regression_detection": { + "numerator": 0, + "denominator": 2, + "value": 0.0, + "wilson95": [ + 0.0, + 0.6576197724933469 + ] + }, + "actionable_recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "query_completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unmeasured_cases": 2 + }, + "latency": { + "cold": { + "samples": 0, + "p50": null, + "p95": null + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 2, + "timeouts": 0 + }, + "python/flask/injection": { + "recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "precision": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "fixed_side_silence": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "benign_interruption": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unobserved": 0 + }, + "completion": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "regression_detection": { + "numerator": 0, + "denominator": 1, + "value": 0.0, + "wilson95": [ + 0.0, + 0.7934506856227626 + ] + }, + "actionable_recall": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null + }, + "query_completion": { + "numerator": 0, + "denominator": 0, + "value": null, + "wilson95": null, + "unmeasured_cases": 1 + }, + "latency": { + "cold": { + "samples": 0, + "p50": null, + "p95": null + }, + "warm_changed": { + "samples": 0, + "p50": null, + "p95": null + }, + "identical_tip": { + "samples": 0, + "p50": null, + "p95": null + } + }, + "unresolved": 1, + "timeouts": 0 + } + }, + "admission": "experimental", + "gates_passed": false, + "note": "Diagnostic instrument only. No admission without independent capability evaluation. Missing runs contribute only conservative full-population bounds, not observed detector performance. Witness association is checked; semantic/actionability review is supplied evidence, not inferred from rank." + }, + "execution_evidence": { + "cases": [ + { + "case_id": "pmpro-introduce", + "command": [ + "ousast", + "pre-push", + "/tmp/ousast-experiment-v3csmvla/objects.git", + "--base", + "2f65530f9442b4d7ccfb56821836b056217358c1", + "--head", + "1a900be3f09f243876150fc3c04a97bcb24ef84b", + "--artifact", + "/results/run-final/pmpro-introduce.json", + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500" + ], + "process_exit_code": 0, + "elapsed_seconds": 30.63820442801807, + "artifact": "pmpro-introduce.json", + "terminal": "No analysis result is available.\nNotice: Analysis did not finish. Rerun with a longer analysis deadline.\nDetails: /results/run-final/pmpro-introduce.json\n", + "core_unchanged": true, + "input_pins": { + "base": "2f65530f9442b4d7ccfb56821836b056217358c1", + "head": "1a900be3f09f243876150fc3c04a97bcb24ef84b" + }, + "runtime_provenance_available": true, + "coverage_reasons": [ + "preparation_failed:TimeoutError", + "deadline_exhausted", + "analysis_incomplete", + "base_comparison_unavailable" + ], + "stage_timings": { + "deadline_seconds": 30.0, + "cancellation_allowance_seconds": 2.0, + "resolution_seconds": 0.022752744960598648, + "provenance_seconds": 0.02271701896097511, + "preparation_seconds": 30.04739280801732, + "total_seconds": 30.09374353091698 + }, + "snapshot_bytes_read": 58067472, + "classification": "scope/deadline" + }, + { + "case_id": "pmpro-repair", + "command": [ + "ousast", + "pre-push", + "/tmp/ousast-experiment-v3csmvla/objects.git", + "--base", + "1a900be3f09f243876150fc3c04a97bcb24ef84b", + "--head", + "2f65530f9442b4d7ccfb56821836b056217358c1", + "--artifact", + "/results/run-final/pmpro-repair.json", + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500" + ], + "process_exit_code": 0, + "elapsed_seconds": 30.613278800970875, + "artifact": "pmpro-repair.json", + "terminal": "No analysis result is available.\nNotice: Analysis did not finish. Rerun with a longer analysis deadline.\nDetails: /results/run-final/pmpro-repair.json\n", + "core_unchanged": true, + "input_pins": { + "base": "1a900be3f09f243876150fc3c04a97bcb24ef84b", + "head": "2f65530f9442b4d7ccfb56821836b056217358c1" + }, + "runtime_provenance_available": true, + "coverage_reasons": [ + "preparation_failed:TimeoutError", + "deadline_exhausted", + "analysis_incomplete", + "base_comparison_unavailable" + ], + "stage_timings": { + "deadline_seconds": 30.0, + "cancellation_allowance_seconds": 2.0, + "resolution_seconds": 0.021512062987312675, + "provenance_seconds": 0.023345368914306164, + "preparation_seconds": 30.049702457967214, + "total_seconds": 30.095476432004943 + }, + "snapshot_bytes_read": 58067472, + "classification": "scope/deadline" + }, + { + "case_id": "pmpro-benign", + "command": [ + "ousast", + "pre-push", + "/tmp/ousast-experiment-v3csmvla/objects.git", + "--base", + "1a900be3f09f243876150fc3c04a97bcb24ef84b", + "--head", + "f6b615ed11733e8975bdff087d2028b5a5bac9f7", + "--artifact", + "/results/run-final/pmpro-benign.json", + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500" + ], + "process_exit_code": 0, + "elapsed_seconds": 30.634440443944186, + "artifact": "pmpro-benign.json", + "terminal": "No analysis result is available.\nNotice: Analysis did not finish. Rerun with a longer analysis deadline.\nDetails: /results/run-final/pmpro-benign.json\n", + "core_unchanged": true, + "input_pins": { + "base": "1a900be3f09f243876150fc3c04a97bcb24ef84b", + "head": "f6b615ed11733e8975bdff087d2028b5a5bac9f7" + }, + "runtime_provenance_available": true, + "coverage_reasons": [ + "preparation_failed:TimeoutError", + "deadline_exhausted", + "analysis_incomplete", + "base_comparison_unavailable" + ], + "stage_timings": { + "deadline_seconds": 30.0, + "cancellation_allowance_seconds": 2.0, + "resolution_seconds": 0.023287108982913196, + "provenance_seconds": 0.024864537990652025, + "preparation_seconds": 30.05171159794554, + "total_seconds": 30.10096428403631 + }, + "snapshot_bytes_read": 57924614, + "classification": "scope/deadline" + }, + { + "case_id": "nodegoat-introduce", + "command": [ + "ousast", + "pre-push", + "/tmp/ousast-experiment-v3csmvla/objects.git", + "--base", + "0b453d5abc38f1a970d4771ebe6c5413f8c3b0a4", + "--head", + "c5cb68a7084e4ae7dcc60e6a98768720a81841e8", + "--artifact", + "/results/run-final/nodegoat-introduce.json", + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500" + ], + "process_exit_code": 0, + "elapsed_seconds": 30.549125120043755, + "artifact": "nodegoat-introduce.json", + "terminal": "No actionable defects reported; analysis is incomplete.\nNotice: Analysis did not finish. Rerun with a longer analysis deadline.\nDetails: /results/run-final/nodegoat-introduce.json\n", + "core_unchanged": true, + "input_pins": { + "base": "0b453d5abc38f1a970d4771ebe6c5413f8c3b0a4", + "head": "c5cb68a7084e4ae7dcc60e6a98768720a81841e8" + }, + "runtime_provenance_available": true, + "coverage_reasons": [ + "6170702f726f757465732f636f6e747269627574696f6e732e6a73:ambiguous_line_correspondence", + "deadline_exhausted", + "admission_failed:TimeoutError", + "change_context_deadline_exhausted", + "vendor_semantics_unresolved", + "analysis_incomplete", + "base_comparison_unavailable" + ], + "stage_timings": { + "deadline_seconds": 30.0, + "cancellation_allowance_seconds": 2.0, + "resolution_seconds": 0.01855088595766574, + "provenance_seconds": 0.022037802962586284, + "preparation_seconds": 7.882494847057387, + "head_seconds": 22.11923380906228, + "base_seconds": 0.0002880139509215951, + "admission_seconds": 0.00788802991155535, + "total_seconds": 30.051342625985853 + }, + "snapshot_bytes_read": 5952014, + "classification": "scope/deadline" + }, + { + "case_id": "nodegoat-repair", + "command": [ + "ousast", + "pre-push", + "/tmp/ousast-experiment-v3csmvla/objects.git", + "--base", + "c5cb68a7084e4ae7dcc60e6a98768720a81841e8", + "--head", + "0b453d5abc38f1a970d4771ebe6c5413f8c3b0a4", + "--artifact", + "/results/run-final/nodegoat-repair.json", + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500" + ], + "process_exit_code": 0, + "elapsed_seconds": 30.577526545966975, + "artifact": "nodegoat-repair.json", + "terminal": "No actionable defects reported; analysis is incomplete.\nNotice: Analysis did not finish. Rerun with a longer analysis deadline.\nDetails: /results/run-final/nodegoat-repair.json\n", + "core_unchanged": true, + "input_pins": { + "base": "c5cb68a7084e4ae7dcc60e6a98768720a81841e8", + "head": "0b453d5abc38f1a970d4771ebe6c5413f8c3b0a4" + }, + "runtime_provenance_available": true, + "coverage_reasons": [ + "6170702f726f757465732f636f6e747269627574696f6e732e6a73:ambiguous_line_correspondence", + "deadline_exhausted", + "admission_failed:TimeoutError", + "change_context_deadline_exhausted", + "vendor_semantics_unresolved", + "analysis_incomplete", + "base_comparison_unavailable" + ], + "stage_timings": { + "deadline_seconds": 30.0, + "cancellation_allowance_seconds": 2.0, + "resolution_seconds": 0.020809702924452722, + "provenance_seconds": 0.02100267296191305, + "preparation_seconds": 7.9633544880198315, + "head_seconds": 22.045122185954824, + "base_seconds": 0.0002916220109909773, + "admission_seconds": 0.008168225991539657, + "total_seconds": 30.059601992950775 + }, + "snapshot_bytes_read": 5952014, + "classification": "scope/deadline" + }, + { + "case_id": "nodegoat-benign", + "command": [ + "ousast", + "pre-push", + "/tmp/ousast-experiment-v3csmvla/objects.git", + "--base", + "c5cb68a7084e4ae7dcc60e6a98768720a81841e8", + "--head", + "f772c59e5964c77812a6a89737eb54ed5371d30c", + "--artifact", + "/results/run-final/nodegoat-benign.json", + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500" + ], + "process_exit_code": 0, + "elapsed_seconds": 30.564777759020217, + "artifact": "nodegoat-benign.json", + "terminal": "No actionable defects reported; analysis is incomplete.\nNotice: Analysis did not finish. Rerun with a longer analysis deadline.\nDetails: /results/run-final/nodegoat-benign.json\n", + "core_unchanged": true, + "input_pins": { + "base": "c5cb68a7084e4ae7dcc60e6a98768720a81841e8", + "head": "f772c59e5964c77812a6a89737eb54ed5371d30c" + }, + "runtime_provenance_available": true, + "coverage_reasons": [ + "6170702f726f757465732f636f6e747269627574696f6e732e6a73:ambiguous_line_correspondence", + "deadline_exhausted", + "admission_failed:TimeoutError", + "change_context_deadline_exhausted", + "vendor_semantics_unresolved", + "analysis_incomplete", + "base_comparison_unavailable" + ], + "stage_timings": { + "deadline_seconds": 30.0, + "cancellation_allowance_seconds": 2.0, + "resolution_seconds": 0.017098043113946915, + "provenance_seconds": 0.022972348961047828, + "preparation_seconds": 7.7835187909659, + "head_seconds": 22.22174767998513, + "base_seconds": 0.00028482999186962843, + "admission_seconds": 0.008836713968776166, + "total_seconds": 30.055937712080777 + }, + "snapshot_bytes_read": 5952021, + "classification": "scope/deadline" + } + ], + "core_changes": [], + "adapter_changes": [], + "freeze_after_pmpro": { + "ranking_mode": "evidence", + "engine": "joern-4.0.625", + "facts": "32edb6e1a78f1afb08ac4248cd436be16663e0d90dc1b3aaf948f2ce49a5a8f0", + "queries": "cdd625fc9013f43452a76ec727282cbf82374f3604be36648b6dbbd6aebf1535", + "policy": "aab46d801c7e775d220b90672e8eae38f1f66e80d25ac28338ca4ef4f8869bfc", + "core": "fd93ec1a320dd81c824b3ebe489065d302174cbd354928ae152e8b0b98da3b0a" + } + }, + "bundles": [ + { + "role": "initial-instrument-trial", + "path": "benchmarks/measurements/2026-09-13-first-replay-initial-instrument-trial.json.gz", + "format": "gzip-compressed JSON mapping original filename to exact UTF-8 file contents", + "sha256": "7cfe2de2a5df1058ec6df06ed6fcad75d8f8e624dc08869b3429cf08712c7aef", + "uncompressed_sha256": "1233585c4247e2f50bb58fa6804e74276e8e68e4104dd046f45000ec915aaff5", + "compressed_bytes": 582386, + "uncompressed_bytes": 2872914, + "files": [ + "decision.json", + "execution-evidence.json", + "freeze-after-pmpro.json", + "input-validation.json", + "nodegoat-benign.stderr", + "nodegoat-benign.stdout", + "nodegoat-introduce.stderr", + "nodegoat-introduce.stdout", + "nodegoat-repair.stderr", + "nodegoat-repair.stdout", + "pmpro-benign.json", + "pmpro-benign.stderr", + "pmpro-benign.stdout", + "pmpro-introduce.json", + "pmpro-introduce.stderr", + "pmpro-introduce.stdout", + "pmpro-repair.json", + "pmpro-repair.stderr", + "pmpro-repair.stdout", + "profile.json", + "replay-pins.json", + "run.json", + "scorecard.json" + ] + }, + { + "role": "final-frozen-run", + "path": "benchmarks/measurements/2026-09-13-first-replay-final-frozen-run.json.gz", + "format": "gzip-compressed JSON mapping original filename to exact UTF-8 file contents", + "sha256": "dc4238bfb31910aeed68bc92ce268c5de3dcda03ef9f15cbe0f49c1c1271bac2", + "uncompressed_sha256": "97f3d490ebb82568dc6ebfa79f08522141f4abc451d8c021e722c4ee681ad54a", + "compressed_bytes": 785037, + "uncompressed_bytes": 5900578, + "files": [ + "decision.json", + "execution-evidence.json", + "freeze-after-pmpro.json", + "input-validation.json", + "nodegoat-benign.json", + "nodegoat-benign.stderr", + "nodegoat-benign.stdout", + "nodegoat-introduce.json", + "nodegoat-introduce.stderr", + "nodegoat-introduce.stdout", + "nodegoat-repair.json", + "nodegoat-repair.stderr", + "nodegoat-repair.stdout", + "pmpro-benign.json", + "pmpro-benign.stderr", + "pmpro-benign.stdout", + "pmpro-introduce.json", + "pmpro-introduce.stderr", + "pmpro-introduce.stdout", + "pmpro-repair.json", + "pmpro-repair.stderr", + "pmpro-repair.stdout", + "profile.json", + "replay-pins.json", + "run.json", + "scorecard.json" + ] + } + ], + "process_exit_code": 1, + "exit_meaning": "Completed diagnostic experiment with an explicit NO-GO, not an instrument crash.", + "validation": { + "tests_passed": 1242, + "tests_skipped": 9, + "test_exit_code": 0, + "style_types_regression_gates": "PASS", + "all_six_artifacts_saved": true, + "frozen_core_matches_workspace": true + }, + "findings": [ + "All six cases hit the 30-second deadline; no case completed its supported target checks.", + "PMPro materialized both immutable trees but timed out during discovery/preparation before change context or graph analysis.", + "Node reached the driver; all questions remain deferred/unanswered when the deadline expires. The repaired instrument returns and saves evidence within allowance.", + "Zero normal alerts is the expected empty-registry policy, not precision or useful recall evidence.", + "The earlier instrument-failure trial and its original core profile are preserved separately; runtime repair preceded this newly frozen PMPro-to-Node trial." + ], + "next_design_implication": "Before treating graph reuse as the sole optimization, measure and reuse compatible snapshot/discovery work. Group6 may establish valid reuse, but representative changed-code warm coverage/latency remains an unpassed later gate." +} diff --git a/benchmarks/measurements/2026-09-13-first-replay-final-frozen-run.json.gz b/benchmarks/measurements/2026-09-13-first-replay-final-frozen-run.json.gz new file mode 100644 index 0000000..a06334f Binary files /dev/null and b/benchmarks/measurements/2026-09-13-first-replay-final-frozen-run.json.gz differ diff --git a/benchmarks/measurements/2026-09-13-first-replay-initial-instrument-trial.json.gz b/benchmarks/measurements/2026-09-13-first-replay-initial-instrument-trial.json.gz new file mode 100644 index 0000000..db26639 Binary files /dev/null and b/benchmarks/measurements/2026-09-13-first-replay-initial-instrument-trial.json.gz differ diff --git a/benchmarks/push/README.md b/benchmarks/push/README.md index 2e546e2..e21c3f4 100644 --- a/benchmarks/push/README.md +++ b/benchmarks/push/README.md @@ -89,3 +89,51 @@ results, per-capability metrics, coverage and cold/warm latency. Missing benign have unknown interruption rate. VAmPI's readable regression may be measured while independent admission prerequisites remain missing. Unsupported/unreviewed populations stay visible. All results remain experimental pending the later joint admission gate. + +## First full replay experiment (task 5.2) + +`measure.py` runs the six prepared PMPro/NodeGoat security, fixed and benign cases +through the production `ousast pre-push` CLI. It does not supply a hand-selected +source slice or regions. The complete 11-case population remains in the scorer; +Ghost is not scanned, and the separate VAmPI/libpng populations are retained as +unexecuted regression/envelope evidence rather than being silently dropped. + +Build the local image first, then run with a writable output parent and the existing +repository-object cache mounted read-only: + +```sh +docker run --rm --network none --memory 3g --entrypoint python \ + -v "$PWD:/context:ro" \ + -v "$HOME/.cache/openultrasast/repos:/cache:ro" \ + -v /path/to/output-parent:/results \ + openultrasast:dev /context/benchmarks/push/measure.py \ + --manifest /context/benchmarks/push/inputs.json --cache /cache --out /results/new-run +``` + +The output directory must not already exist. Input validation opens and verifies +pinned source/license blobs before any measurement. A private bare Git repository +reads the existing objects and creates reproducible authored commits using only the +specified edits. Every other tracked blob remains in the tree; the cache's files, +index and refs are unchanged. No project code, package installation or network is used. + +`profile.json` is written before the first replay. PMPro runs first, followed by an +explicit `freeze-after-pmpro.json` checkpoint and Node with identical installed core, +facts, queries and policy. Both analysis and cancellation allowances stay 30 and 2 +seconds. Whole CLI elapsed time, separate available stage costs, exact input pins, +source byte counts, selected/deferred identities, raw artifacts, process exits and +terminal output remain available. `rank` denotes an observed selected-question position; +an unlocated/unselected target retains null. A completed empty query cannot earn a +witnessed negative or fixed-side silence. No transitive path is fabricated from rank. + +`scorecard.json` uses the existing frozen-population scorer. `decision.json` explicitly +returns NO-GO because this initial cold diagnostic does not qualify independent +capabilities or prove joint quality and warm latency. Exit **1** with a completed +`decision.json` means measured NO-GO; a traceback without that completion record is a +failed instrument. Zero CLI exit means advisory allow, never complete analysis. +Missing artifacts and unanswered questions remain errors/unresolved, not clean results. + +Cold here means no persisted graph/query/comparison reuse; filesystem caches are not +flushed. Six one-shot runs are diagnostic samples, not representative warm p95 evidence. +Normal capabilities remain disabled, so zero alerts do not establish precision or useful +recall. A separately named longer lab run may obtain witnesses, but cannot replace the +30-second measurements or satisfy the hook's latency gate. diff --git a/benchmarks/push/measure.py b/benchmarks/push/measure.py new file mode 100644 index 0000000..2f8bb1f --- /dev/null +++ b/benchmarks/push/measure.py @@ -0,0 +1,313 @@ +"""First frozen-core PMPro/Node diagnostic experiment, using local Git objects only.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import os +import platform +import subprocess +import tempfile +import time +from dataclasses import replace +from pathlib import Path + +from openultrasast.model.contracts import QuestionIdentity +from openultrasast.model.scan import ScanBudget +from openultrasast.push.runner import _provenance +from openultrasast.push_inputs import validate_manifest +from openultrasast.push_scoring import freeze_profile, score +from openultrasast.repos import checkout_path, load_repo_recipe + + +def git(root: Path, *args: str, data: bytes | None = None) -> bytes: + env = {key: value for key, value in os.environ.items() if not key.startswith("GIT_")} + env.update( + GIT_CONFIG_GLOBAL=os.devnull, + GIT_CONFIG_NOSYSTEM="1", + GIT_NO_REPLACE_OBJECTS="1", + GIT_NO_LAZY_FETCH="1", + GIT_ALLOW_PROTOCOL="", + GIT_GRAFT_FILE=os.devnull, + GIT_AUTHOR_NAME="Authored evaluation", + GIT_AUTHOR_EMAIL="evaluation@example.invalid", + GIT_COMMITTER_NAME="Authored evaluation", + GIT_COMMITTER_EMAIL="evaluation@example.invalid", + GIT_AUTHOR_DATE="2026-09-12T00:00:00+00:00", + GIT_COMMITTER_DATE="2026-09-12T00:00:00+00:00", + ) + return subprocess.run( + ["git", "-c", "core.hooksPath=" + os.devnull, "-C", str(root), *args], + input=data, + capture_output=True, + check=True, + timeout=30, + env=env, + ).stdout + + +def pin_snapshot(bare: Path, commit: str, snapshot: dict) -> str: + """Apply declared edits to a private Git index; retain every other tracked blob.""" + git(bare, "read-tree", commit) + edited = False + for entry in snapshot["files"]: + content = git(bare, "cat-file", "blob", commit + ":" + entry["path"]) + if not content: + raise ValueError("empty input bytes") + if edit := entry.get("edit"): + before, after = edit["before"].encode(), edit["after"].encode() + if not edit["provenance"].startswith("authored") or not before or content.count(before) != 1: + raise ValueError("authored edit must match exactly once") + if hashlib.sha256(content).hexdigest() != entry["original_sha256"]: + raise ValueError("original hash mismatch") + content = content.replace(before, after, 1) + edited = True + if len(content) != entry["size"] or hashlib.sha256(content).hexdigest() != entry["sha256"]: + raise ValueError("resulting input identity mismatch") + if entry.get("edit"): + blob = git(bare, "hash-object", "-w", "--stdin", data=content).decode().strip() + mode = git(bare, "ls-tree", commit, "--", entry["path"]).split(b" ", 1)[0].decode() + git(bare, "update-index", "--add", "--cacheinfo", mode, blob, entry["path"]) + if not edited: + return commit + tree = git(bare, "write-tree").decode().strip() + return ( + git(bare, "commit-tree", tree, "-p", commit, data=("Authored evaluation snapshot: " + snapshot["id"] + "\n").encode()) + .decode() + .strip() + ) + + +def execution_record(case_id: str, artifact: dict, *, elapsed: float, target: dict | None = None) -> dict: + """Associate existing answers; empty rows cannot manufacture a witnessed negative.""" + selected, deferred, queries = [], [], [] + rank = None + modes = set() + for record in artifact["scans"]: + if record["side"] != "head": + continue + scan = record["scan"] + if scope := scan.get("scope"): + modes.add(scope["ranking_mode"]) + if target is not None: + rank = next( + ( + index + for index, q in enumerate(scope["selected"], 1) + if all(q["identity"][key] == target[key] for key in ("path", "function", "family")) + ), + None, + ) + selected.extend(QuestionIdentity.from_payload(q["identity"]).question_id for q in scope["selected"]) + deferred.extend(QuestionIdentity.from_payload(q["identity"]).question_id for q in scope["deferred"]) + for outcome in scan["question_outcomes"]: + identity = QuestionIdentity.from_payload(outcome["identity"]) + query = { + "id": identity.question_id, + "status": "answered" if outcome["status"] == "completed" else "unanswered", + "outcome": "unknown", + } + # Keep the exact question/answer association. A raw finding reached from + # another function is not a proved transitive path for this scorer. + findings = [ + f + for f in scan["findings"] + if f["family"] == identity.family + and f["site"].startswith(identity.path + ":") + and f["site"].rsplit(":", 1)[-1] == identity.function + ] + if outcome["status"] == "completed" and findings: + target_sites = {f"{target['path']}:{line}:{target['function']}" for line in target["lines"]} if target else set() + finding = next((f for f in findings if f["site"] in target_sites), findings[0]) + query.update(outcome="positive", finding={**finding, "site": finding["site"].rsplit(":", 1)[0]}) + queries.append(query) + if modes and modes != {"evidence"}: + raise ValueError("runtime ranker differs from frozen evidence mode") + deltas = [d["candidate"]["delta"]["novelty"] for d in artifact["admission"]["dispositions"]] + novelty = next((d for d in ("new", "worsened", "unknown", "unchanged") if d in deltas), "unknown") + reasons = artifact["admission"]["coverage_reasons"] + coverage = ( + "timeout" + if any("deadline" in reason for reason in reasons) + else ("complete" if artifact["result"]["coverage_status"] == "complete_within_scope" else "incomplete") + ) + if artifact["admission"]["defects"]: + raise ValueError("unqualified experiment unexpectedly emitted an admitted alert") + return { + "case_id": case_id, + "ranking_mode": "evidence", + "rank": rank, + "rank_kind": "selected_question_position", + "selected": selected, + "deferred": deferred, + "queries": queries, + "alerts": [], + "delta": novelty, + "coverage": coverage, + "cache_state": "cold", + "timings": { + "total": elapsed, + "build": sum(r["scan"].get("build_seconds", 0) for r in artifact["scans"]), + "query": sum(r["scan"].get("query_seconds", 0) for r in artifact["scans"]), + }, + } + + +def write(path: Path, data: dict) -> None: + path.write_text(json.dumps(data, indent=2, allow_nan=False) + "\n") + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--manifest", type=Path, required=True) + parser.add_argument("--cache", type=Path, required=True) + parser.add_argument("--out", type=Path, required=True) + args = parser.parse_args() + args.out.mkdir(parents=True, exist_ok=False) + manifest = json.loads(args.manifest.read_bytes()) + validation = validate_manifest(args.manifest, cache_root=args.cache, fetch=False) + write(args.out / "input-validation.json", validation) + settings = ScanBudget(max_model_calls=0, max_regions=500, order_by_evidence=True) + initial = _provenance(args.manifest.parent, settings) + keys = ("ranking_mode", "engine", "facts", "queries", "policy", "core") + config = {key: initial[key] for key in keys} + config.update( + version="first-replay-v2-2026-09-13", + scope="full tracked tree; declared first-party graph/target exclusions; evidence ranker", + hardware=platform.platform(), + budget_seconds=30, + targets=json.loads((args.manifest.parent / "diagnostic-config-v1.json").read_text())["targets"], + ) + profile = freeze_profile(args.manifest.read_bytes(), config) + write(args.out / "profile.json", profile) # Freeze on disk BEFORE any measurement. + run = {"profile_sha256": profile["profile_sha256"], "context": dict(config), "records": []} + evidence = {"cases": [], "core_changes": [], "adapter_changes": [], "freeze_after_pmpro": None} + ready = {c["id"]: c["status"] == "ready" for c in validation["cases"]} + snapshots = {s["id"]: s for s in manifest["snapshots"]} + # Fixed declared order; reserved, regression and unsupported populations stay + # in the joint scorer without scanning or tuning on the holdout. + cases = [c for prefix in ("pmpro-", "nodegoat-") for c in manifest["cases"] if c["id"].startswith(prefix)] + with tempfile.TemporaryDirectory(prefix="ousast-experiment-") as temporary: + bare = Path(temporary) / "objects.git" + bare.mkdir() + git(bare, "init", "--bare") + sources = {} + for case in cases: + for sid in (case["base"], case["tip"]): + if sid in sources or not ready[case["id"]]: + continue + snapshot = snapshots[sid] + recipe = load_repo_recipe(args.manifest.parent / snapshot["recipe"]) + recipe = replace(recipe, commit=snapshot.get("commit", recipe.commit)) + source = checkout_path(recipe, args.cache) + objects = git(source, "rev-parse", "--path-format=absolute", "--git-path", "objects").decode().strip() + sources[sid] = (recipe.commit, objects) + (bare / "objects/info/alternates").write_text("\n".join(sorted({value[1] for value in sources.values()})) + "\n") + pins = {sid: pin_snapshot(bare, commit, snapshots[sid]) for sid, (commit, _) in sources.items()} + write( + args.out / "replay-pins.json", + {"snapshots": pins, "provenance": "Full upstream trees; declared authored edits in a private bare Git repository."}, + ) + for case in cases: + if not ready[case["id"]]: + evidence["cases"].append({"case_id": case["id"], "status": "missing_input_prerequisite"}) + continue + current = _provenance(args.manifest.parent, settings) + if any(current[key] != initial[key] for key in keys): + raise ValueError("core/facts/query/policy changed after freezing") + if case["id"].startswith("nodegoat-") and evidence["freeze_after_pmpro"] is None: + evidence["freeze_after_pmpro"] = {key: current[key] for key in keys} + write(args.out / "freeze-after-pmpro.json", evidence["freeze_after_pmpro"]) + artifact_path = args.out / (case["id"] + ".json") + command = [ + "ousast", + "pre-push", + str(bare), + "--base", + pins[case["base"]], + "--head", + pins[case["tip"]], + "--artifact", + str(artifact_path), + "--deadline", + "30", + "--cancellation-allowance", + "2", + "--max-regions", + "500", + ] + start = time.monotonic() + process = subprocess.run(command, capture_output=True, text=True, timeout=62) + elapsed = time.monotonic() - start + (args.out / (case["id"] + ".stdout")).write_text(process.stdout) + (args.out / (case["id"] + ".stderr")).write_text(process.stderr) + entry = { + "case_id": case["id"], + "command": command, + "process_exit_code": process.returncode, + "elapsed_seconds": elapsed, + "artifact": artifact_path.name if artifact_path.exists() else None, + "terminal": process.stdout, + "core_unchanged": True, + "input_pins": {"base": pins[case["base"]], "head": pins[case["tip"]]}, + } + if artifact_path.exists(): + artifact = json.loads(artifact_path.read_text()) + # Unmeasured provenance caused by preparation timeout is explicit; + # never replace it with a fictitious runtime measurement. + entry["runtime_provenance_available"] = all(artifact["provenance"].get(key) == initial[key] for key in keys) + record = execution_record(case["id"], artifact, elapsed=elapsed, target=config["targets"][case["id"]]) + entry["coverage_reasons"] = artifact["admission"]["coverage_reasons"] + entry["stage_timings"] = artifact["timings"] + entry["snapshot_bytes_read"] = sum(s["bytes_read"] for s in artifact["snapshots"]) + entry["classification"] = "scope/deadline" if record["coverage"] == "timeout" else "recorded context/capability limits" + else: + record = { + "case_id": case["id"], + "ranking_mode": "evidence", + "rank": None, + "selected": [], + "deferred": [], + "queries": [], + "alerts": [], + "delta": "unknown", + "coverage": "error", + "cache_state": "cold", + "timings": {"total": elapsed, "build": 0, "query": 0}, + } + entry["classification"] = "instrument/artifact unavailable; zero stage costs mean unmeasured" + if process.returncode != 0: + entry["classification"] = "instrument/CLI failure" + record["coverage"] = "error" + run["records"].append(record) + evidence["cases"].append(entry) + write(args.out / "run.json", run) + write(args.out / "execution-evidence.json", evidence) + print(json.dumps({"case": case["id"], "coverage": record["coverage"], "elapsed_seconds": elapsed}), flush=True) + scored = score(profile, validation, run) + write(args.out / "scorecard.json", scored) + decision = { + "decision": "NO-GO", + "capabilities_enabled": False, + "scorecard": "scorecard.json", + "reason": "First cold diagnostic experiment; independent eligibility and joint quality/warm-latency gates remain unmet.", + "recorded_cases": len(run["records"]), + "declared_population": len(manifest["cases"]), + "core_unchanged": True, + "adapter_changes": [], + "limits": [ + "No warm-cache measurements", + "Untouched Ghost population not scanned", + "PHP/Python admission populations missing", + "libpng retained as unsupported envelope; no C/C++ detection claim", + "Zero normal alerts from an empty registry cannot establish precision or useful recall", + ], + } + write(args.out / "decision.json", decision) + print(json.dumps(decision), flush=True) + return 1 # Measurement completed; the feasibility/admission decision is explicitly NO-GO. + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_push_experiment.py b/tests/test_push_experiment.py new file mode 100644 index 0000000..1b61c03 --- /dev/null +++ b/tests/test_push_experiment.py @@ -0,0 +1,91 @@ +from __future__ import annotations + +import hashlib +import importlib.util +import subprocess +from pathlib import Path + +import pytest + +spec = importlib.util.spec_from_file_location("push_measure", Path("benchmarks/push/measure.py")) +measure = importlib.util.module_from_spec(spec) +spec.loader.exec_module(measure) + + +def test_authored_snapshot_keeps_whole_tree_and_original_repository(tmp_path): + from test_push_runner import history + + root, base, head, git = history(tmp_path) + (root / "unchanged.txt").write_text("first-party context remains in the whole tree") + git("add", "unchanged.txt") + git("commit", "-m", "unchanged context") + head = git("rev-parse", "HEAD") + # The helper consumes objects, never the deliberately dirty live source. + before = git("show", head + ":api.js") + "\n" + after = before.replace("req.body.value", '"fixed"') + entry = { + "id": "authored", + "files": [ + { + "path": "api.js", + "size": len(after.encode()), + "sha256": hashlib.sha256(after.encode()).hexdigest(), + "original_sha256": hashlib.sha256(before.encode()).hexdigest(), + "edit": {"before": "req.body.value", "after": '"fixed"', "provenance": "authored repair"}, + } + ], + } + bare = tmp_path / "objects.git" + subprocess.run(["git", "init", "--bare", str(bare)], check=True, capture_output=True) + (bare / "objects/info/alternates").write_text(str(root / ".git/objects") + "\n") + original = (root / ".git/index").read_bytes(), (root / "api.js").read_bytes() + oid = measure.pin_snapshot(bare, head, entry) + result = subprocess.run(["git", "-C", str(bare), "show", oid + ":api.js"], check=True, capture_output=True) + assert result.stdout.decode() == after + retained = subprocess.run(["git", "-C", str(bare), "show", oid + ":unchanged.txt"], check=True, capture_output=True) + assert retained.stdout == b"first-party context remains in the whole tree" + + assert original == ((root / ".git/index").read_bytes(), (root / "api.js").read_bytes()) + assert oid == measure.pin_snapshot(bare, head, entry), "authored object identities must be reproducible" + entry["files"][0]["sha256"] = "0" * 64 + with pytest.raises(ValueError, match="hash|identity"): + measure.pin_snapshot(bare, head, entry) + + +def payload(): + return { + "result": {"coverage_status": "incomplete"}, + "admission": {"coverage_reasons": ["deadline_exhausted"], "dispositions": [], "defects": []}, + "scans": [], + "timings": {"total_seconds": 30}, + } + + +def test_timeout_stays_unresolved_and_uses_whole_cli_elapsed_time(): + record = measure.execution_record("case", payload(), elapsed=30.8) + assert record["coverage"] == "timeout" and record["delta"] == "unknown" + assert record["rank"] is None and record["queries"] == [] and record["alerts"] == [] + assert record["timings"]["total"] == 30.8 and record["cache_state"] == "cold" + + +def test_zero_cli_exit_cannot_earn_negative_without_witness(): + data = payload() + data["result"]["coverage_status"] = "complete_within_scope" + data["admission"]["coverage_reasons"] = [] + identity = {"unit": "repository", "language": "php", "path": "api.php", "function": "handler", "family": "injection"} + data["scans"] = [ + { + "side": "head", + "scan": { + "scope": {"ranking_mode": "evidence", "selected": [{"identity": identity}], "deferred": []}, + "question_outcomes": [{"identity": identity, "status": "completed", "raw_rows_json": "[]"}], + "findings": [], + "build_seconds": 1, + "query_seconds": 2, + }, + } + ] + record = measure.execution_record("case", data, elapsed=4) + assert record["queries"][0]["outcome"] == "unknown" + assert "witness" not in record["queries"][0] + assert record["alerts"] == []