From be42dd3b1f8ae2660aab2baf87abe1e54b32f5f5 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Tue, 27 Oct 2026 15:22:20 -0400 Subject: [PATCH 1/5] wai.delivery.fleet: an organisation's nodes enrolled by their keys, their records verified, and a report signed for a period extensions/fleet.md: the enrolment (WFE1), the records a node contributes as it signs them (a relay's session summaries, per-hop records with their ledgers, the room descriptors that place them), placement in time and one thing once, the fleet report (WFR1) with node and room lines, energy per scope and class with unmetered figures counted as unmetered, citations, the bundle and its verification, and the reasons. wai-rs: the fleet module (feature fleet), its corpus generator (wai_fleet_vectors), tests/fleet.rs; live-conformance/fleet/ (63 vectors) and fleet_verify.py, the second implementation. Co-Authored-By: Claude Opus 5.5 --- wai/extensions/fleet.md | 577 +++ wai/live-conformance/fleet/README.md | 67 + wai/live-conformance/fleet/vectors.json | 4336 +++++++++++++++++++++++ wai/live-conformance/fleet_verify.py | 850 +++++ wai/wai-rs/Cargo.toml | 20 + wai/wai-rs/src/bin/wai_fleet_vectors.rs | 67 + wai/wai-rs/src/fleet.rs | 1609 +++++++++ wai/wai-rs/src/fleet/corpus.rs | 652 ++++ wai/wai-rs/src/lib.rs | 13 +- wai/wai-rs/src/strict_json.rs | 2 + wai/wai-rs/tests/fleet.rs | 168 + 11 files changed, 8359 insertions(+), 2 deletions(-) create mode 100644 wai/extensions/fleet.md create mode 100644 wai/live-conformance/fleet/README.md create mode 100644 wai/live-conformance/fleet/vectors.json create mode 100644 wai/live-conformance/fleet_verify.py create mode 100644 wai/wai-rs/src/bin/wai_fleet_vectors.rs create mode 100644 wai/wai-rs/src/fleet.rs create mode 100644 wai/wai-rs/src/fleet/corpus.rs create mode 100644 wai/wai-rs/tests/fleet.rs diff --git a/wai/extensions/fleet.md b/wai/extensions/fleet.md new file mode 100644 index 000000000..8eb799c39 --- /dev/null +++ b/wai/extensions/fleet.md @@ -0,0 +1,577 @@ +# WAI Extension: Fleet + +> Status: Draft. Registers the record `wai.delivery.fleet`: the nodes an organisation runs, +> enrolled by their signing keys, and a report of what they did that anyone holding their +> records recomputes. The organisation signs an **enrolment**, `WFE1`, for each node: the +> node's Ed25519 key, its role (a relay, a compositor, an ingest gateway, a room service, a +> ledger or an audit collector), a label and the span the enrolment holds. A node contributes +> the records it already signs, as it signs them: a relay's session summaries, and every hop's +> per-hop session records ([live-metering](live-metering.md) §3) with the room descriptors that +> place them in time. For a period, the organisation signs a **fleet report**, `WFR1`: one line +> per node and one per room, with the sessions, bytes and energy their records state, each line +> citing the records it came from, and the fleet's totals. Energy keeps its acquisition class +> and its declared uncertainty, one row per class and per scope, never summed across either. +> Every unmetered figure is counted as unmetered, never as zero joules, and a total over +> measured and unmetered figures states that it is partial. A verifier given a report with its +> enrolments and records, a **bundle**, recomputes every line and refuses a report that does not +> recompute. No accounts, no billing and no new transport. The reference implementation is the +> `fleet` module of `wai-rs` (feature `fleet`) and the service `wai/wai-fleet`; the corpus is +> [`live-conformance/fleet/`](../live-conformance/fleet/), and its second implementation is +> `live-conformance/fleet_verify.py`. +> Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119/8174. +> +> Texts read for this revision: the WAI texts this one cites; RFC 3629; RFC 8032; RFC 8259; +> FIPS 180-4. + +## 1. Scope + +In scope: the organisation key and the enrolment of a node (§3); the records a node contributes, +how each is read, verified and placed in time, and how one thing is counted once (§4); the +figures a report states for each node, each room and the fleet, with their energy and citations +(§5); the report, its signature and its rules (§6); the bundle and its verification (§7); how the +fleet composes with the [receipt ledger](receipt-ledger.md) (§8); and the reference service and +its operations (§9). + +Out of scope: accounts, members, single sign-on, quotas, billing and any control plane shared by +several organisations; a transport; how a node measures its energy, which +[energy-measurement](energy-measurement.md) governs; the records a node signs, which their own +texts and implementations define and this one reads unchanged; and prices, which the receipt +ledger states. + +Relationship to the core spec: `wai.delivery.fleet` is a **record** ([SPEC](../SPEC.md) §5): a +signed record a WAI tool emits and verifies. It names no payload format and is not dispatchable. + +## 2. Terms + +- **Organisation**: the party that runs a set of nodes. Its **organisation key**, an Ed25519 key + (RFC 8032), signs its enrolments and its reports. +- **Node**: a process the organisation runs that signs records, named by its Ed25519 key, the + **node key**. A relay's node key is the key it signs its session summaries with, which is also + the key its per-hop records name as `hop` (live-metering §3.1) and its relay id among relays + (live-rooms §10.7); a compositor's or an ingest gateway's is the key its per-hop records name. +- **Role**: what a node is, by code: 1 relay, 2 compositor, 3 ingest gateway (live-metering §2's + roles, with the codes a per-hop record gives them), 4 room service, 5 ledger, 6 audit collector. +- **Time**: microseconds since 1970-01-01T00:00:00Z. A **period** is a span of time from its + `start` (included) to its `end` (excluded). +- **Record**: one signed thing a bundle holds (§4.1), with its **kind** (a u8) and its + **identity** (32 bytes). Its **signer** is the key that signed it. +- *u64*, *u32*, *u16*, *u8*: little-endian unsigned integers of that many bits. A **digest** is + SHA-256 (FIPS 180-4), 32 bytes. Hexadecimal is lowercase. +- **Class**, **tag**, **unmetered marker**: an acquisition class of energy-measurement §2.7, its + tag byte (2 `ModelBased`, 3 `Estimator`, 4 `OnChipCounter`, 5 `CalibratedInstrument`), and a + figure of 0 with no class (energy-measurement §2), which is never a figure of zero joules. +- **Scope** of an energy figure: 1 `sessions`, the figure a session summary states (§4.2); 2 + `hops`, the figure a per-hop record states (§4.3). + +## 3. Enrolment + +### 3.1 Layout + +| field | size | meaning | +|---|---|---| +| `magic` | 4 | `WFE1` (ASCII) | +| `version` | 1 | 1 in this revision | +| `organisation` | 32 | the organisation key, which signs the enrolment | +| `node` | 32 | the node key | +| `role` | 1 | the node's role (§2) | +| `from`, `until` | 8 each | u64: the span the enrolment holds, [`from`, `until`); `until` is 2^64 − 1 for a span with no end | +| `label` | 1 + *n* | a u8 *n*, then *n* bytes of UTF-8 (RFC 3629): the node's name in reports, empty for none | +| `sig` | 64 | §3.2 | + +### 3.2 Digest and signature + +The **digest** of an enrolment is SHA-256 over its bytes before `sig`. Its signature is Ed25519 +by `organisation` over the 16 bytes `wai:fleet-enrol` (ASCII) and 0x01, followed by the bytes the +digest covers, verified strictly, as [SPEC](../SPEC.md) §7 *Signatures* requires: a key that +fails step 1 or 2 is `bad_key`, and a signature that fails a later step is `bad_signature`. + +### 3.3 Reading and rules + +A reader reads exactly the bytes it is given as one enrolment, as live-events §3.3 reads a +record, with `WFE1` for `WEV1` (`truncated`, `malformed`, `unknown_version`). It then refuses as +`enrolment_invalid` an enrolment that breaks any of these: + +- `role` is 1 to 6; +- `from` is below `until`; +- `label` is at most 64 bytes of UTF-8 and holds no control character (U+0000 to U+001F and + U+007F); +- `node` is not `organisation`. + +Then the signature (§3.2). + +### 3.4 What each role contributes + +| role | contributes in this revision | +|---|---| +| 1 relay | its session summaries (§4.2) and its per-hop records of role 1 (§4.3) | +| 2 compositor | its per-hop records of role 2 | +| 3 ingest gateway | its per-hop records of role 3 | +| 4 room service, 5 ledger, 6 audit collector | none: the node is enrolled and listed, and reported silent | + +A record of a kind its signer's role does not contribute, and a per-hop record whose `role` is not +its signer's, is refused `role_mismatch`. A node holds one enrolment in a fleet: a second enrolment +of the same node key is refused `enrolment_duplicate`. + +## 4. Records + +### 4.1 Kinds and their carriage + +A record is carried as a JSON object (RFC 8259) whose `kind` names its kind, with exactly the +members of its kind: + +| `kind` | members | record kind | identity | signer | +|---|---|---|---|---| +| `hop` | `record` and `ledger`, hexadecimal: a per-hop record and its ledger (live-metering §3) | 2 | its digest (live-metering §3.5) | its `hop` | +| `summary` | `line`, a string: one line of a relay's summary file, without its line end (§4.2) | 10 | SHA-256 over the summary's text, *S* | its `relay_key` | +| `descriptor` | `descriptor`, hexadecimal: a room descriptor (live-rooms §3) | 11 | its digest, which is the room id (live-rooms §3.2) | none: its digest binds it (§4.4) | + +Kind 2 is the kind and identity [receipt-ledger](receipt-ledger.md) §5.2 gives a per-hop record, +so a fleet report and an invoice name such a record alike (§8); kinds 10 and 11 are kinds that +table does not use. A carriage that is not such an object, whose `kind` is none of these, or +whose members are not exactly its kind's, each of its type, is refused `malformed`. + +### 4.2 The session summary + +The reference relay keeps a summary of every MOQT session it serves, signs it when the session +ends, and appends it to its summary file, one line each (live-metering §8). Its format is named +`joule-moq-relay/session-summary/2`. + +**The line.** A line is exactly the 11 bytes `{"summary":`, the summary's text *S*, the 14 bytes +`,"signature":"`, 128 hexadecimal digits (the signature, 64 bytes), and the 2 bytes `"}`. That is +the form the reference relay writes; a line of any other form is `malformed`. + +**The text.** *S* is read as JSON text (RFC 8259) of one object: valid UTF-8, no member named twice +in one object, no value inside more than 63 objects and arrays, no escaped surrogate that is not +one of a pair, and nothing after the value; otherwise it is `malformed`. An **integer** here is a +number spelled as a plain decimal integer, with no sign, fraction or exponent and no leading zero, +below 2^64. These members are read, in the order of the table, and the first that is missing or of +another type is `malformed`: + +| member | type | meaning | +|---|---|---| +| `format` | string | `joule-moq-relay/session-summary/2`; any other string is `unknown_version` | +| `relay_key` | string of 64 hexadecimal digits | the relay's node key, the signer | +| `session` | integer | the relay's number for the session | +| `opened_unix_ms`, `closed_unix_ms` | integer | when the session opened and closed, in milliseconds since 1970-01-01T00:00:00Z | +| `relay_energy` | object | the session's own energy figure: `acquisition` (string) and `joules_micro` (integer) | +| `tally` | object | what the session carried | +| `tally.peer` | string of 64 hexadecimal digits, or absent | the relay at the other end, when the session is a hop link (live-metering §3.10) | +| `tally.publisher` | object | holding `object_bytes_received` (integer): the payload bytes the session published | +| `tally.subscriber` | object | holding `object_bytes_forwarded` (integer), the payload bytes forwarded to the session live, and `tracks`, an object whose every member is an object holding, or not, `fetch_bytes` (integer; 0 when absent): the payload bytes it was served by fetch and fill on that track | + +Every other member is signed and is not read: the reference relay adds members as it counts more, +and the signature covers them. Of those, `tally.publisher_signed` states the figures publishers +signed for producing the objects the session received, which are the publishers' energy and not +the relay's: a report states none of them. + +A summary that reads is then checked in this order: its energy, its rules, its signature. + +**Energy.** `relay_energy` holds exactly its two members. With `acquisition` `unmetered` and +`joules_micro` 0, the figure is the unmetered marker; with `ModelBased` or `Estimator` and +`joules_micro` above 0, it is a figure of tag 2 or 3. Anything else is refused `energy_invalid`: +another label, a figure beside `unmetered`, a class beside zero, and the classes whose evidence +(energy-measurement §2.7) a summary has no member to carry. The reference relay states the marker +always: sessions run together in one process, and its counter cannot tell their shares apart +(live-metering §8). + +**Rules.** A summary is refused `record_invalid` when `opened_unix_ms` is above `closed_unix_ms`, +when `closed_unix_ms` × 1000 is 2^64 or more, or when the bytes out it states, its +`object_bytes_forwarded` and the sum of its tracks' `fetch_bytes`, add to 2^64 or more. + +**Signature and identity.** The signature is Ed25519 by `relay_key` over the 32 bytes +`joule-moq-relay:session-summary` (ASCII) and 0x01, followed by *S*, verified strictly (SPEC §7 +*Signatures*: `bad_key`, `bad_signature`). The identity is SHA-256 over *S*. + +### 4.3 The per-hop record + +A per-hop record is read as live-metering §3.6 reads one, of the room its own `room` field names, +with that section's codes (`truncated`, `malformed`, `unknown_version`, `energy_invalid`, +`record_invalid`), and its signature is verified as §3.5 there requires (`bad_key`, +`bad_signature`). Its ledger is read as §3.6 there reads a ledger (`ledger_invalid`), and has +`grants` entries and the root `ledger`: otherwise `ledger_mismatch`. The size bound of +live-metering §3.7 is not applied: it depends on the media tracks the room published, which a fleet +does not hold, and the reference service bounds what one request may carry instead (§9). + +Its figure is its `joules` with its class, in scope 2: the hop's own energy over its span, which +the reference relay states as `OnChipCounter` with its evidence where its counter was live across +the span and it served that room alone, and as the unmetered marker otherwise (live-metering §8). + +### 4.4 The room descriptor + +A per-hop record states its span on its room's clock. The fleet reads, of the room's descriptor +(live-rooms §3.1), only what places that span in time: `magic`, which is `WRD1` (fewer than 4 +bytes: `truncated`; another: `malformed`); `version`, which is 1 (`unknown_version`); a length of +at least 141 bytes (`truncated`); `authority`, the 32 bytes after the version; and `t0`, the u64 at +byte 69. Its signature is verified as live-rooms §3.2 requires: Ed25519 by `authority` over the 14 +bytes `wai:live-room` (ASCII) and 0x01, followed by every byte but the last 64, strictly (`bad_key`, +`bad_signature`). Its digest is SHA-256 over every byte but the last 64, and is the room id. + +A descriptor needs no enrolment. Its digest binds it to the room id a per-hop record names, and the +record's own signature binds the room id to its hop, so the `t0` that places a record is the `t0` +of the room its hop signed for. The descriptor's other fields are the room verifier's to read +(live-rooms §9). + +### 4.5 Placement in time + +Each summary and each per-hop record has an **instant**: + +- a summary's is `closed_unix_ms` × 1000: a session is reported in the period in which it ended; +- a per-hop record's is `t0` + `end` − 1, the last microsecond its span covers, with the `t0` of + the descriptor among the records whose digest is its `room`. A per-hop record whose room has no + such descriptor is refused `descriptor_missing`, and one whose `t0` + `end` − 1 is 2^64 or more + is in no period. + +A record is **in** a period when its instant is at or after the period's `start` and before its +`end`; otherwise it is refused `outside_period`. It is **within its enrolment** when its instant +is in its signer's [`from`, `until`): otherwise `outside_enrolment`. So of consecutive periods, +each record is in exactly one. + +### 4.6 One thing once + +Of two records, the later is refused: + +- `record_duplicate` when both have one kind and one identity; +- `record_overlap` when both are summaries of one relay with one `session` and one + `opened_unix_ms` (one session summarised twice), or both are per-hop records of one hop and one + room whose spans share an instant, [*s*₁, *e*₁) and [*s*₂, *e*₂) with *s*₁ < *e*₂ and + *s*₂ < *e*₁ (live-metering §3.8: a hop's parts of one room session do not overlap). + +## 5. The figures + +A report's figures are computed from its records: every summary and every per-hop record, each +in its period and within its enrolment, and the descriptors that place them. + +### 5.1 Node lines + +There is one **node line** for each node that signed at least one summary or per-hop record, in +ascending order of node key: + +| figure | what it is | +|---|---| +| `node`, `role` | the node key, and its enrolment's role | +| `sessions` | its summaries with no `tally.peer`: the sessions it served for clients | +| `links` | its summaries with a `tally.peer`: its hop links to other relays | +| `bytes_in`, `bytes_out` | over its summaries with no `tally.peer`: the sum of `object_bytes_received`; the sum of `object_bytes_forwarded` and the tracks' `fetch_bytes` | +| `link_bytes_in`, `link_bytes_out` | the same, over its summaries with a `tally.peer` | +| `hops` | its per-hop records (u32) | +| `hop_bytes_in`, `hop_bytes_out` | over its per-hop records, the sum of `bytes` of their track entries in (`dir` 1) and out (`dir` 2) | +| energy | its summaries' figures in scope 1, its per-hop records' in scope 2 (§5.4) | +| citations | its summaries and per-hop records (§5.5) | + +The bytes of the summaries and the bytes of the per-hop records are two accounts of a relay's +traffic and are never added: a relay's summaries count every object of every session, and its +per-hop records count the objects of each room's tracks, a hop link's at both of its ends +(live-metering §3.10). A compositor or an ingest gateway signs no summaries, and its traffic is in +its per-hop records alone. + +### 5.2 Room lines + +There is one **room line** for each room a per-hop record names, in ascending order of room id: + +| figure | what it is | +|---|---| +| `room`, `t0` | the room id, and its descriptor's `t0` | +| `hops` | its per-hop records (u32) | +| `sessions` | the sum of their `sessions`: subscriber sessions, each counted at the hop that served it (live-metering §3.3) | +| `subscriber_us` | the sum of their `subscriber_us` over the nine layer classes | +| `bytes_in`, `bytes_out` | the sum of `bytes` of their track entries in and out | +| energy | their figures, in scope 2 | +| citations | its per-hop records and its descriptor | + +A room's bytes are the bytes its hops handled: an object carried over a hop link is counted out at +one relay and in at the next. + +### 5.3 Totals + +The **totals** are the sums over the node lines of `sessions`, `links`, `bytes_in`, `bytes_out`, +`link_bytes_in`, `link_bytes_out`, `hops`, `hop_bytes_in` and `hop_bytes_out`; and their energy is +every summary's figure in scope 1 and every per-hop record's in scope 2. + +### 5.4 Energy + +Each summary states one figure, in scope 1, and each per-hop record one, in scope 2. Over the +records of a line, or of the totals, for each scope: + +- **`unmetered`** counts the figures that are the unmetered marker. They are in no row, and a + reader **MUST NOT** present them as zero joules. +- There is one **row** for each tag among the metered figures: `figures`, their number; `joules`, + their sum in microjoules; and `max_ppm`, the largest `relative_ppm` among them for tags 4 and 5, + which carry a declared uncertainty, and 0 for tags 2 and 3, which do not. When each figure's + error is within its declared relative uncertainty, the sum's is within `max_ppm` of the sum. + +A row never sums figures of two classes, and no row sums two scopes, as receipt-ledger §6.6 +requires of an invoice: a counter reading and a model's output added are neither. A scope's +**coverage** is `whole` when it has a row and no unmetered figure, **`partial`** when it has both, +`unmetered` when it has unmetered figures alone, and `none` when it has no figure. The rows of a +partial scope are the energy of its metered records alone, beside a count of records whose energy +nobody measured, and **MUST NOT** be presented as the energy of the line or of the fleet. A report +whose `unmetered` for a scope is below the unmetered markers of its records has counted a figure +nobody measured as something else, and is refused `unmetered_summed`. + +A sum that a u64 cannot hold cannot be stated, and an organisation does not sign a report that +would state one. + +### 5.5 Citations + +Each line cites the records it came from (§5.1, §5.2): `cited` is their number, and `cites` is +SHA-256 over the 16 bytes `wai:fleet-cites` (ASCII) and 0x01, followed by each cited record's kind +(u8) and identity (32 bytes), in ascending order of (kind, identity). Every cited record is in the +report's `records`, and a line that cites none is refused `line_unsourced`. A reader shows one line +to an auditor with the records it cites and nothing else, and the auditor recomputes it. + +## 6. The report + +### 6.1 Layout + +| field | size | meaning | +|---|---|---| +| `magic` | 4 | `WFR1` (ASCII) | +| `version` | 1 | 1 in this revision | +| `organisation` | 32 | the organisation key, which signs the report | +| `start`, `end` | 8 each | u64: the period it reports | +| `records` | 4 + 33 × *r* | a u32 count, then each record: `kind` (u8) and `identity` (32), in strictly ascending order of (`kind`, `identity`) | +| `enrolments` | 2 + 64 × *k* | a u16 count, then each enrolment: `node` (32) and its digest (32), in strictly ascending order of `node` | +| `nodes` | 2 + … | a u16 count, then each node line (§6.2), in strictly ascending order of `node` | +| `rooms` | 2 + … | a u16 count, then each room line (§6.2), in strictly ascending order of `room` | +| `totals` | 68 + … | §6.2 | +| `sig` | 64 | §6.3 | + +### 6.2 Lines, totals and the energy block + +A **node line** is `node` (32), `role` (u8), `sessions`, `links`, `bytes_in`, `bytes_out`, +`link_bytes_in` and `link_bytes_out` (u64 each), `hops` (u32), `hop_bytes_in` and `hop_bytes_out` +(u64 each), an energy block, `cited` (u32) and `cites` (32). + +A **room line** is `room` (32), `t0` (u64), `hops` (u32), `sessions`, `subscriber_us`, `bytes_in` +and `bytes_out` (u64 each), an energy block, `cited` (u32) and `cites` (32). + +The **totals** are `sessions`, `links`, `bytes_in`, `bytes_out`, `link_bytes_in` and +`link_bytes_out` (u64 each), `hops` (u32), `hop_bytes_in` and `hop_bytes_out` (u64 each), and an +energy block. + +An **energy block** is a u8 count *e*, then *e* rows, each `scope` (u8), `tag` (u8), `figures` +(u32), `joules` (u64, µJ) and `max_ppm` (u32), in strictly ascending order of (`scope`, `tag`); +then `unmetered`, two u32: the unmetered figures of scope 1 and of scope 2. + +### 6.3 Digest and signature + +The **digest** of a report is SHA-256 over its bytes before `sig`. Its signature is Ed25519 by +`organisation` over the 17 bytes `wai:fleet-report` (ASCII) and 0x01, followed by the bytes the +digest covers, verified strictly (SPEC §7 *Signatures*: `bad_key`, `bad_signature`). + +### 6.4 Reading and rules + +A reader reads exactly the bytes it is given as one report, as §3.3 reads an enrolment with `WFR1` +for `WFE1` (`truncated`, `malformed`, `unknown_version`), and refuses as `classes_summed` a report +with a row of tag 0: a sum over figures of no one class. It refuses as `report_invalid` one that +breaks any of these: + +- `start` is below `end`; +- each list is in the strictly ascending order §6.1 gives it, and each record's `kind` is 2, 10 + or 11; +- each node line's `role` is 1 to 6; +- each row's `scope` is 1 or 2, its `tag` 2 to 5, its `figures` above 0, and its `max_ppm` 0 when + its tag is 2 or 3; +- a room line's energy block has no row of scope 1, and 0 unmetered figures of scope 1. + +Then the signature (§6.3). + +## 7. The bundle and its verification + +### 7.1 The bundle + +A **bundle** is one JSON object with exactly these members: `kind`, the string +`wai-fleet-bundle`; `report`, the report in hexadecimal; `enrolments`, an array of enrolments in +hexadecimal; and `records`, an array of records in their carriage (§4.1). A bundle that is not such +an object is refused `malformed`, at `bundle`. A file that holds one is named with the suffix +`.wai-fleet.json`. + +The report's records are every record of the bundle, and its enrolments are every enrolment of the +bundle: a bundle is a report with exactly what it rests on. + +### 7.2 Steps + +A verifier given a bundle runs these steps and stops at the first refusal, which it reports with +the reason and where: + +1. **The report** (§6.4), at `report`: `truncated`, `malformed`, `unknown_version`, + `classes_summed`, `report_invalid`, `bad_key`, `bad_signature`. +2. **Each enrolment**, in order, at `enrolment` and its index: it reads and its signature verifies + (§3.3: `truncated`, `malformed`, `unknown_version`, `enrolment_invalid`, `bad_key`, + `bad_signature`); its `organisation` is the report's (`wrong_organisation`); its `node` is no + earlier enrolment's (`enrolment_duplicate`); and its span meets the report's period, `from` + below the period's `end` and the period's `start` below `until` (`outside_period`). +3. **Each record**, in order, at `record` and its index: it reads and its signature verifies, by its + kind (§4.1 to §4.4, with their codes). +4. **Each summary and per-hop record**, in order, at `record` and its index: its signer is the + `node` of an enrolment (`signer_not_enrolled`); its kind and its `role` are its signer's role's + (§3.4, `role_mismatch`); it is placed (§4.5, `descriptor_missing`); it is in the report's period + (`outside_period`); and it is within its enrolment (`outside_enrolment`). +5. **Across records**, at `record` and the index of the later (§4.6): `record_duplicate`, + `record_overlap`. +6. **The figures**, recomputed from the bundle as §5 computes them, with the report's `records` + and `enrolments` (§7.1), and compared in this order: + 1. a node line whose node signed no summary or per-hop record of the bundle, a room line whose + room no per-hop record of the bundle names, or a line whose `cited` is 0: + `line_unsourced`, at `report`, `nodes` or `rooms`, and the line's index; + 2. a row of a line or of the totals whose `joules` is not the sum of the figures of its scope + and class, and is the sum of the figures of its scope over its class and at least one other + class of that scope: `classes_summed`, at the line's place, or at `report` and `totals`; + 3. a line or the totals whose `unmetered` for a scope is below the unmetered markers of its + records (§5.4): `unmetered_summed`, at the same places; + 4. a line whose `cited` or `cites` is not the records it came from: `citation_mismatch`, at the + line's place; + 5. any other difference: the records, the enrolments, a line missing or of another subject or + role, a figure, a row, `unmetered`, or the totals: `report_mismatch`, at `report`. + + Steps 6.2 to 6.4 compare each line of the report with the recomputed line of the same node or + room where there is one. A figure that cannot be held in its field is a difference. + +### 7.3 Outcome + +- **refuse**: the reason and where. +- **accept**: the report's digest; the organisation; the period; the number of records; each + enrolment with its node, role, label, span and digest, the number of records it signed, and + whether it is **silent** (it signed none in the period); each node line with its label and + figures; each room line with its figures; the totals; for each line and for the totals, each + scope's rows by class label with their figures, joules and `max_ppm`, its unmetered figures and + its coverage; and each line's cited records, by kind and identity. + +A silent node is not an unmetered one. An unmetered node signed records whose energy nobody +measured; a silent node signed no record in the period, and the report states nothing of what it +did. + +## 8. With the receipt ledger + +The fleet and the receipt ledger read the same records and compute different things from them, +and neither recomputes the other's: + +- A per-hop record is named in a report as receipt-ledger §5.2 names it, kind 2 and its digest, so + a room line's citations and an invoice's `records` name the same records alike. +- A per-hop record is carried with its ledger, in the members a ledger's `room` source holds in + `hops` (receipt-ledger §5.1: each `record` and `ledger`). The records a room line cites are given + to a ledger as they are, and the reference service serves them by room (§9). +- A report states no price, tariff or amount, and an invoice no fleet figure. + +## 9. The reference service and its operations + +`wai/wai-fleet` runs a fleet as an HTTP service over a directory it owns, under the organisation +key: + +| request | does | +|---|---| +| `GET /v1/fleet` | the service, its organisation key, its limits | +| `GET /v1/fleet/health` | `ok` | +| `POST /v1/fleet/enrolments` | `{"enrolment": hex}`: an enrolment the organisation key signed, read and verified (§3), refused for a node already enrolled (`enrolment_duplicate`), kept | +| `GET /v1/fleet/enrolments` | every enrolment held, with its node, role, label, span, digest and the records held of it | +| `POST /v1/fleet/records` | `{"records": [...]}`: each record (§4.1), in order, verified as §7.2 steps 3 to 5 verify it against the enrolments and the records held, with no period, a descriptor held before it or earlier in the request; each held record is kept, and the answer gives each record's kind and identity or its refusal | +| `GET /v1/fleet/rooms/{room}/hops` | the per-hop records held of a room, each `record` and `ledger` (§8) | +| `POST /v1/fleet/reports` | `{"start", "end"}`: the report of the period over the enrolments whose span meets it and the records held in it, with the descriptors those name, signed, verified as §7 verifies it, and kept with its bundle | +| `GET /v1/fleet/reports/{digest}` | the report's bundle and its outcome | +| `POST /v1/fleet/verify` | a bundle: its outcome (§7.3) | + +Each refusal names its reason and place. The service writes every file whole, appends records and +never rewrites one, holds a lock on its directory so that one process writes it, and on start reads +every enrolment, record and report back and verifies each again. It has no accounts: an enrolment +is accepted only when the organisation key signed it, and a record only when it verifies under an +enrolled node's key, whoever submits either. The service listens on a loopback address unless it +is told otherwise; who may reach it is decided in front of it. + +`wai-fleet collect` reads a node's published summary file, a local file or an `http` or `https` +address answering with its lines, and submits each line to a running service as a `summary` +record. + +The operations, named by the toolchain's rule (an operation `noun.verb`, its command line the words +in order): + +| operation | command line | route | effect | +|---|---|---|---| +| `enrolment.create` | `wai enrolment create --role --key [--label L] [--from µs] [--until µs] [--out F] [--target URL]` | `POST /v1/fleet/enrolments` with `--target` | writes a file; with `--target`, the service | +| `enrolment.list` | `wai enrolment list --target URL` | `GET /v1/fleet/enrolments` | reads | +| `report.create` | `wai report create --target URL --start µs --end µs` | `POST /v1/fleet/reports` | the service | +| `report.export` | `wai report export --target URL [--out F]` | `GET /v1/fleet/reports/{digest}` | writes a file | +| `receipt.verify` | `wai verify ` | `POST /v1/fleet/verify` | reads | + +Each takes `--json`, and writes its JSON envelope when standard output is not a terminal; each that +writes takes `--dry-run`, which writes nothing and says what it would write; one that changes the +service waits for `--confirm`, and without it exits with the command that confirms. + +## 10. Reasons + +The codes this extension adds, each with where it is raised: + +| reason | raised at | +|---|---| +| `enrolment_invalid` | §3.3, §7.2 step 2 | +| `enrolment_duplicate` | §3.4, §7.2 step 2 | +| `wrong_organisation` | §7.2 step 2 | +| `report_invalid` | §6.4, §7.2 step 1 | +| `signer_not_enrolled` | §7.2 step 4 | +| `role_mismatch` | §3.4, §7.2 step 4 | +| `descriptor_missing` | §4.5, §7.2 step 4 | +| `outside_enrolment` | §4.5, §7.2 step 4 | +| `line_unsourced` | §5.5, §7.2 step 6 | +| `unmetered_summed` | §5.4, §7.2 step 6 | +| `report_mismatch` | §7.2 step 6 | + +A verifier of this extension also raises, with the meaning this text gives them: `outside_period` +(§4.5, §7.2 steps 2 and 4), `record_duplicate` and `record_overlap` (§4.6, §7.2 step 5) and +`citation_mismatch` (§5.5, §7.2 step 6), which receipt-ledger §10 adds; `classes_summed` (§5.4, +§6.4, §7.2 steps 1 and 6), `energy_invalid` and `record_invalid` (§4.2, §4.3), `ledger_invalid` +and `ledger_mismatch` (§4.3), which live-metering §9 adds; and `truncated`, `malformed` and +`unknown_version` for what does not read, and `bad_key` and `bad_signature` for its signature. + +## 11. Conformance + +[`live-conformance/fleet/`](../live-conformance/fleet/) holds the corpus, in one file, +`vectors.json`, written by `wai_fleet_vectors gen` from fixed seeds and from records taken from +[`live-conformance/metering/`](../live-conformance/metering/): the lesson room's descriptor and its +per-hop records, of three classes, with their ledgers; and the relay room's descriptor with the +per-hop record the reference relay signed, which states the unmetered marker. The summaries are +written by the generator in the reference relay's form, and `wai-fleet`'s tests read each one with +the relay's own types and require its bytes, re-serialised, to be the line's. Each vector is a +bundle with the outcome §7.3 gives it: + +- **Accepted**: a week of a fleet of two relays cascading, a compositor and an ingest gateway, with + a room service enrolled and silent, whose report states an unmetered scope of sessions, a room + whose hops are of three classes, one row each, and a room whose relay's figure is the unmetered + marker, so that the fleet's hops are partial; a fleet whose every figure is metered, whole; a + fleet of two relays whose every figure is the unmetered marker; and a fleet enrolled and silent, + with no line. +- **Refused**: each reason of §10 at least once, each vector a control of one defect, among them a + report that drops an unmetered figure and one that counts it as a metered figure of zero joules; + and each reason it reuses. + +`wai_fleet_vectors verify` and the test `tests/fleet.rs` check that the file regenerates byte for +byte, that `wai-rs` gives every vector its outcome, that every reason of §10 and every reused code +refuses a vector, and that §10 lists exactly the reference's codes. `live-conformance/fleet_verify.py` +is the second implementation, written from this text: it shares no code with `wai-rs`, verifies +signatures with WAI's strict rule written from RFC 8032 (`claim-conformance/_ed25519.py`), reads +per-hop records and their ledgers with the second implementation of live metering +(`live_metering_verify.py`), recomputes every line, row and citation itself, gives every vector the +same outcome, requires every mutated copy of the corpus to fail, and drops each of its own checks +in turn and requires the corpus to catch the weakened verifier. + +## 12. Security and privacy considerations + +- **Who signs what.** Each node signs its own records, and the organisation signs only who its + nodes are and what their records add up to. An organisation cannot report a session no relay + summarised, a byte no record states, or a figure in a class its node did not sign: a verifier + recomputes every line from the records. +- **What a report rests on.** A report covers the records its bundle holds, and nothing proves a + bundle holds every record a node signed: a node that does not contribute, or an organisation + that leaves a record out, makes a report that is smaller and still verifies. The enrolments the + report lists show which nodes said nothing in the period (silent, §7.3), and a buyer or an + auditor who holds a node's own summary file checks it against the report's citations. +- **Energy.** A row states figures as their nodes signed them, with their class: attributable, and + its sum recomputable, not true (energy-measurement §5). `max_ppm` bounds the declared part of a + sum's uncertainty and says nothing of a class's undeclared systematic error. An unmetered figure + is counted, never summed as zero, so a fleet that meters some of its nodes reports that it does. +- **Keys.** The service holds the organisation key, since it signs reports. An enrolment signed with + that key elsewhere can be held by any copy of the service; one who holds the key can enrol any + node, so it is kept as the ledger's seller key is, readable by its owner alone. +- **What a bundle reveals.** A summary records its session's remote address and every track it + carried, and a bundle holds summaries whole, since their signatures cover every byte. A bundle + therefore reveals the network addresses of the fleet's clients as its relays recorded them, and it + travels only to those the organisation would show its relays' records to. The report itself names + nodes, rooms and record identities, and no client. diff --git a/wai/live-conformance/fleet/README.md b/wai/live-conformance/fleet/README.md new file mode 100644 index 000000000..df71d2cb4 --- /dev/null +++ b/wai/live-conformance/fleet/README.md @@ -0,0 +1,67 @@ +# live-conformance/fleet — the fleet + +The corpus of [`extensions/fleet.md`](../../extensions/fleet.md) §11, in one file, +`vectors.json`: + +- `vectors`: bundles (§7.1), each a `report`, its `enrolments` and its `records` in their + carriage (§4.1), with the `outcome` §7.3 gives it; +- `keys`: the organisation's and the nodes' public keys, and those of another organisation and + of a relay of no fleet, which the controls use. + +**Fleet equivalence.** For each vector, a conforming verifier given its bundle reaches the outcome +the vector states: + +- `refuse`: the `reason` and where, `at`: `["bundle"]`, `["report"]`, `["enrolment", i]`, + `["record", i]`, `["report", "nodes", j]` or `["report", "rooms", j]` for a line of the report, + or `["report", "totals"]`; +- `accept`: the report's `digest`, its `organisation`, `start` and `end`, the number of + `records`; each enrolment (its `node`, `role`, `label`, `from`, `until`, `digest`, the + `records` it signed and whether it is `silent`); each node line (its `node`, `label`, `role`, + `sessions`, `links`, `bytes_in`, `bytes_out`, `link_bytes_in`, `link_bytes_out`, `hops`, + `hop_bytes_in`, `hop_bytes_out`); each room line (its `room`, `t0`, `hops`, `sessions`, + `subscriber_us`, `bytes_in`, `bytes_out`); the `totals`; for each line and the totals, the + `energy` of each scope, `sessions` and `hops`: its rows (`class`, `figures`, `joules_micro`, + `max_ppm`), its `unmetered` figures and its `coverage`; and each line's `cites`, each + `[kind, identity]`. + +The accepted vectors: + +- `a_week`: a week of a fleet of two relays cascading (the edge relay's upstream link to the home + relay is one session at each end), a compositor and an ingest gateway, with a room service + enrolled and silent. Every session's figure is the unmetered marker, so the sessions are + `unmetered`; the lesson room's hops are of three classes, one row each, `whole`; the relay + room's only hop is the reference relay's recorded record, the unmetered marker; and the fleet's + hops are `partial`. +- `measured_only`: a day of a relay and a compositor, both OnChipCounter readings: one row of two + figures with the larger declared uncertainty, `whole`. +- `unmetered_only`: a day of two relays with summaries alone: sessions `unmetered`, hops `none`. +- `enrolled_and_silent`: two relays enrolled, no record: no line, both nodes silent. + +Every other vector is refused, a control of one defect: each reason of §10 and each code it reuses, +among them a report that drops an unmetered figure, one that states it as a metered figure of zero +joules, and totals that would state partial hops whole. + +**Provenance.** Generated here: `wai_fleet_vectors gen` writes `vectors.json`. The per-hop records, +their ledgers and the room descriptors are taken unchanged from [`metering/`](../metering/): the +lesson room's descriptor and the per-hop records of its relay (OnChipCounter), its compositor +(OnChipCounter in `lesson`, ModelBased in `mixed_classes`) and its ingest gateway (Estimator), and +the relay room's descriptor with `relay-record.wmh`, which the reference relay signed in its own +test and which states the unmetered marker. Their joule figures are those that corpus states. The +home relay here is the relay that signed those records, under the same key. The session summaries +are written by the generator in the reference relay's form, `joule-moq-relay/session-summary/2`, +from sessions authored in code: their counts were measured by nothing, their remote addresses are +documentation addresses (RFC 5737), and every relay states the unmetered marker for a session, as +the reference relay does. `wai-fleet`'s tests read every summary of the accepted vectors with the +reference relay's own types, require its text re-serialised by them to be the line's byte for +byte, and verify its signature with the relay's own check. The organisation's and the other keys +are SHA-256 of a fixed label; every time is a constant; Ed25519 signing is deterministic (RFC 8032); +so the file is the same bytes on every machine. When the metering corpus is regenerated, so is +this one. + +Regenerate and check: + + cd wai/wai-rs + cargo run --no-default-features --features fleet --bin wai_fleet_vectors -- gen ../live-conformance/fleet + cargo run --no-default-features --features fleet --bin wai_fleet_vectors -- verify ../live-conformance/fleet + cargo test --no-default-features --features fleet --test fleet + python3 -I ../live-conformance/fleet_verify.py ../live-conformance/fleet diff --git a/wai/live-conformance/fleet/vectors.json b/wai/live-conformance/fleet/vectors.json new file mode 100644 index 000000000..16091e13c --- /dev/null +++ b/wai/live-conformance/fleet/vectors.json @@ -0,0 +1,4336 @@ +{ + "corpus": "live-conformance/fleet", + "extension": "extensions/fleet.md", + "keys": { + "organisation": "ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d", + "another_organisation": "b8c12b6bd2f85be2ad825a045b6ed2b1370fc91cdafd6f51e00ef0cdb93b3a3e", + "home": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "edge": "2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e", + "compositor": "a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1", + "ingest": "3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9", + "room_service": "d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd", + "outsider": "63edaeacb28ed2848e1864f3e268f2f51d2439d3e2f6d946925c1bbd984cfe0b" + }, + "vectors": [ + { + "name": "a_week", + "about": "a week of two relays cascading (the edge's upstream link is one session at each end), a compositor and an ingest gateway, with a room service enrolled and silent: every session's figure is the unmetered marker; the lesson room's hops are of three classes, one row each; the relay room's only hop states the unmetered marker, so the fleet's hops are partial", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00c00e61995d06000060f231265e06000d000000028a5ce3302cb410fe4344c89094a21edd5c2d2958c41da3bf09525e8e7cc051d7029f2e96e3cf68df9d2fce5457c50c8469006e663b04a03ec8d389b77a51a646b702c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d02d969cc740d80efd2c77bb615616ea1325471a58c89a1740db6d40fa8c85be6a80a3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650a98a1e1fcc710d160db0cff4bd265d65534803b2a3698cc439cbe6bca1f8bb09c0aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0b89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f05000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b713549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9afd1061564750f9eb98938b40fae4fb59149830e43a69ef4777351a04ec0a84ea693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6cad6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd076c552e8f3f2a1b531c30c5212437382bd066b91200387c7d9e055214f4093604000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720103000000000000000100000000000000008e8f000000000080439100000000000000000000000000c08d8e000000000002000000cea54d00000000001ed27500000000000102040100000000c3180100000000204e00000400000001000000060000006641776d928cdc0f9233891d4088500fe807ba0dbbe181df7a07c379faeb28202749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010200000000000000010000000000000000000000000000004072840000000000c08d8e0000000000000000000000000000000000000000000000000000000000000000000003000000000000000300000097c1148c08826926eaabdc8f60af9a34975f15eba585a9157330ba62e47b6b463549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc90300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c051020000000000c0510200000000000102030100000080841e000000000000000000000000000000000001000000f5ece3aaaa8740669462bffe3d6a317da488554514a08b2164b2d0d103af4769a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e00407000000000001020201000000c00e160200000000000000000000000000000000010000007eba3431a2e084fb6bd5a2d36701d8ca6550d2bbde17912fdb34648cbf66696302002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600030000000700000000000000d882550900000000c8a5550000000000148863000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e0000000000000000000004000000099dbe110692b0e3caf6ff8153bfcd6047db6ed6b1c6f64a2bf7b64510a458aa89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f00001b14125e060001000000030000000000000048c98f00000000008e950c0000000000aaa01b00000000000000000000010000000200000008fabb44053429fd88bd9c35725986b5ca32c4a8883847ae40c3cf3a93fe2cbd05000000000000000200000000000000008e8f0000000000c0b5150100000000c08d8e0000000000c08d8e000000000004000000563b620000000000be287f000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e000007000000010000008cd2c2d5b6899393a223d017a8f4f5316742857b5a26bfe1594bbbe166fae430452738b1b791f4a682c6a9cfb3851d1c106c7ffc1a58190b701e808bb6bb140a", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9030080d1e13d5b0600ffffffffffffffff06696e67657374570321197861e5cd90728dfe81f7ef666973bb1379ce088b62b47fe067d1cdffc40699d8a24264b96c7abae91193b285f3333702b56b0a912d4adb76c7c6b202", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41dd6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd040080d1e13d5b0600ffffffffffffffff0c726f6f6d20736572766963650d2de08a9d17a9defce8513675d5d748b9ee31543a2756abad35b02d925a43ae213634a96b205e831eaa4b13a3b604107eeee08e8d2a700d8252a053cbc7cb03" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200001b14125e060040420f00000000000000080000000200000000005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000002097075626c69736865720301020018000000000000000000000000000000000000000000000000000000000000000861756469656e636500010100180000000000000000000000000000000000000000000000000000000000000000010a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfeaee6e1ec8d49668f0a9b74e6bf0884d494488654d2aabf011125ef453336b6e4c34a26c478a88eaa9a1f1e5b036fcde785f13f07bacf4f3dace2608f7560b" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b680100000000c00e16020000000002050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c08649cfaf1251a47c0ca5568184a7fc6692ded2f5c7766d773c94369cc9bf95312edcc0e170119c7d837178dee0323371a710ba56d8abe79240b1818340f7cf3b07", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc903c027090000000000406f40010000000080841e000000000003020001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000062c738ccb6c04434ead674b64b2980a37ced79bea5943c2e19d328e1c1e4eb82d04ef892d090700d3366190d4673b6f5fa4ec917302b92fb4d4db28f75016bf40ba2a0258a6b512b72fe74fb568741811595efff6194b4bd579594f7bfa480a", + "ledger": "cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff00000001000000c051020000000000c051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d48310189a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720130936bdb0900000090579cdb0900000000000000000000000008000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38011e000000000000007869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38025a00000000000000683c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82011e0000000000000000400b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82023f0000000000000000a01700000000001b000000000000000000000000000000000000000000000000000000000000001b00000000000000020000000000000000000000000000000000000000000000000000000000000000011200000000000000a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000023600000000000000f80100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000013c000000000000006eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002b4000000000000004ac2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000048c98f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000050000005f9c7c612cb249d862dff12795c3a5558f377084218e9e1a5799dbabeb177a85684771242e95715f8ca352396003f3aef431b9bf96c8f31fbc68b9d24fd3adb9bf6526097699d988641486d379f3cde1b8ffd4a188177c0cd56f0e89bd13480d", + "ledger": "4fc2bb567c1e950b92bb2dd6796df52eb67f3e5c2e5753b3ee9bae483600f17effffffffffffffffffffffffffffffff0000000100000098b50b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000510124baa39d99a07d9d6575698f70183759e3da8b458f8edb09f09215e14318ffffffffffffffffffffffffffffffff00000001000000f6df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052786b7331441935c2143544988bccb4a4db6f5c76d734292a843a0b5e20e83d404b4c0000000000f4010000000000004555520100000000000000000000008e950c00000000009bfd2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b4272b140a49c75d1dbedfca74343ad6c13a8a9d3a20429e7d457f30d2afd82ffffffffffffffffffffffffffffffff0000000100000000000000000000008e7502000000000006dd2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fec5bc703c31e2600d5a51cceb45eb2e5011ec2c1890f8dc5b96fd683ef85362ffffffffffffffffffffffffffffffff0000000100000000000000000000008e950c0000000000a7ee2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":7,\"transport\":\"quic\",\"remote\":\"198.51.100.99:52000\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792323935000,\"closed_unix_ms\":1792323939000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"wire_bytes_sent\":512360,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"live-a--cam\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"3ed2670db9c2187fe7d03b757076bf01de4dac2af2c476144590b6502faa9fcd0e01c239de9954c45b761c60d967e64b2c617f2d6dfa46baa64313633b45b206\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.150:40022\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108805000,\"closed_unix_ms\":1792108812000,\"close_code\":null,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"wire_bytes_sent\":59150,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":8,\"from_unix_us\":1792108805000000,\"to_unix_us\":1792108812000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"8b2c37b1cf569af76d96b45b3f689287a7bc88ebcaff5a25abf24c9421976a0e88433118b69ca8ff4f8e787467c44e9b8969601cd7b8acc29849533ec9ef8c05\"}" + } + ] + }, + "outcome": { + "outcome": "accept", + "digest": "a4a930470ca6a7126c8a04cd59f966f884d3b0aeff55d033c2fb1453a2cf8130", + "organisation": "ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d", + "start": 1791763200000000, + "end": 1792368000000000, + "records": 13, + "enrolments": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "role": "relay", + "label": "home", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c", + "records": 6, + "silent": false + }, + { + "node": "2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e", + "role": "relay", + "label": "edge", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71", + "records": 3, + "silent": false + }, + { + "node": "3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9", + "role": "ingest", + "label": "ingest", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "afd1061564750f9eb98938b40fae4fb59149830e43a69ef4777351a04ec0a84e", + "records": 1, + "silent": false + }, + { + "node": "a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1", + "role": "compositor", + "label": "compositor", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "21b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca", + "records": 1, + "silent": false + }, + { + "node": "d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd", + "role": "room", + "label": "room service", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "076c552e8f3f2a1b531c30c5212437382bd066b91200387c7d9e055214f40936", + "records": 0, + "silent": true + } + ], + "nodes": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "label": "home", + "role": "relay", + "sessions": 3, + "links": 1, + "bytes_in": 9408000, + "bytes_out": 9520000, + "link_bytes_in": 0, + "link_bytes_out": 9342400, + "hops": 2, + "hop_bytes_in": 5088718, + "hop_bytes_out": 7721502, + "energy": { + "sessions": { + "rows": [], + "unmetered": 4, + "coverage": "unmetered" + }, + "hops": { + "rows": [ + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 18400000, + "max_ppm": 20000 + } + ], + "unmetered": 1, + "coverage": "partial" + } + }, + "cites": [ + [ + 2, + "8a5ce3302cb410fe4344c89094a21edd5c2d2958c41da3bf09525e8e7cc051d7" + ], + [ + 2, + "c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d" + ], + [ + 10, + "7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe236" + ], + [ + 10, + "89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b0765" + ], + [ + 10, + "98a1e1fcc710d160db0cff4bd265d65534803b2a3698cc439cbe6bca1f8bb09c" + ], + [ + 10, + "d84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd29" + ] + ] + }, + { + "node": "2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e", + "label": "edge", + "role": "relay", + "sessions": 2, + "links": 1, + "bytes_in": 0, + "bytes_out": 8680000, + "link_bytes_in": 9342400, + "link_bytes_out": 0, + "hops": 0, + "hop_bytes_in": 0, + "hop_bytes_out": 0, + "energy": { + "sessions": { + "rows": [], + "unmetered": 3, + "coverage": "unmetered" + }, + "hops": { + "rows": [], + "unmetered": 0, + "coverage": "none" + } + }, + "cites": [ + [ + 10, + "3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce" + ], + [ + 10, + "a5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde9269" + ], + [ + 10, + "aff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff" + ] + ] + }, + { + "node": "3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9", + "label": "ingest", + "role": "ingest", + "sessions": 0, + "links": 0, + "bytes_in": 0, + "bytes_out": 0, + "link_bytes_in": 0, + "link_bytes_out": 0, + "hops": 1, + "hop_bytes_in": 152000, + "hop_bytes_out": 152000, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "Estimator", + "figures": 1, + "joules_micro": 2000000, + "max_ppm": 0 + } + ], + "unmetered": 0, + "coverage": "whole" + } + }, + "cites": [ + [ + 2, + "d969cc740d80efd2c77bb615616ea1325471a58c89a1740db6d40fa8c85be6a8" + ] + ] + }, + { + "node": "a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1", + "label": "compositor", + "role": "compositor", + "sessions": 0, + "links": 0, + "bytes_in": 0, + "bytes_out": 0, + "link_bytes_in": 0, + "link_bytes_out": 0, + "hops": 1, + "hop_bytes_in": 1197000, + "hop_bytes_out": 460000, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 35000000, + "max_ppm": 0 + } + ], + "unmetered": 0, + "coverage": "whole" + } + }, + "cites": [ + [ + 2, + "9f2e96e3cf68df9d2fce5457c50c8469006e663b04a03ec8d389b77a51a646b7" + ] + ] + } + ], + "rooms": [ + { + "room": "2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa", + "t0": 1792108800000000, + "hops": 3, + "sessions": 7, + "subscriber_us": 156599000, + "bytes_in": 5613000, + "bytes_out": 6522900, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 35000000, + "max_ppm": 0 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 2000000, + "max_ppm": 0 + }, + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 18400000, + "max_ppm": 20000 + } + ], + "unmetered": 0, + "coverage": "whole" + } + }, + "cites": [ + [ + 2, + "9f2e96e3cf68df9d2fce5457c50c8469006e663b04a03ec8d389b77a51a646b7" + ], + [ + 2, + "c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d" + ], + [ + 2, + "d969cc740d80efd2c77bb615616ea1325471a58c89a1740db6d40fa8c85be6a8" + ], + [ + 11, + "2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa" + ] + ] + }, + { + "room": "89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f", + "t0": 1792281600000000, + "hops": 1, + "sessions": 3, + "subscriber_us": 9423176, + "bytes_in": 824718, + "bytes_out": 1810602, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [], + "unmetered": 1, + "coverage": "unmetered" + } + }, + "cites": [ + [ + 2, + "8a5ce3302cb410fe4344c89094a21edd5c2d2958c41da3bf09525e8e7cc051d7" + ], + [ + 11, + "89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f" + ] + ] + } + ], + "totals": { + "sessions": 5, + "links": 2, + "bytes_in": 9408000, + "bytes_out": 18200000, + "link_bytes_in": 9342400, + "link_bytes_out": 9342400, + "hops": 4, + "hop_bytes_in": 6437718, + "hop_bytes_out": 8333502, + "energy": { + "sessions": { + "rows": [], + "unmetered": 7, + "coverage": "unmetered" + }, + "hops": { + "rows": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 35000000, + "max_ppm": 0 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 2000000, + "max_ppm": 0 + }, + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 18400000, + "max_ppm": 20000 + } + ], + "unmetered": 1, + "coverage": "partial" + } + } + } + } + }, + { + "name": "measured_only", + "about": "a day of a relay and a compositor whose every figure is an OnChipCounter reading with its declared uncertainty: one row, whole", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060003000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189ca693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000000000000000000001000000f694fbf8d2beb411a046663f760ccab7044171e7897434304a7d4c52985a9f3da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000000000000000000a246122897190b29fc90c8fa2ec7bf09f0d17599b7f50f59cf0ad12498b8536faab9d627bdefe4a0e6db997ab8d29202a6464a4417959062d31b2bea8043130a", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + }, + "outcome": { + "outcome": "accept", + "digest": "9a858d90a6ffec7d826c03973d74d1f1981b75f0b1150afae5893a9e0ebfb823", + "organisation": "ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d", + "start": 1792108800000000, + "end": 1792195200000000, + "records": 3, + "enrolments": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "role": "relay", + "label": "home", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c", + "records": 1, + "silent": false + }, + { + "node": "a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1", + "role": "compositor", + "label": "compositor", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "21b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca", + "records": 1, + "silent": false + } + ], + "nodes": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "label": "home", + "role": "relay", + "sessions": 0, + "links": 0, + "bytes_in": 0, + "bytes_out": 0, + "link_bytes_in": 0, + "link_bytes_out": 0, + "hops": 1, + "hop_bytes_in": 4264000, + "hop_bytes_out": 5910900, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 18400000, + "max_ppm": 20000 + } + ], + "unmetered": 0, + "coverage": "whole" + } + }, + "cites": [ + [ + 2, + "c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d" + ] + ] + }, + { + "node": "a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1", + "label": "compositor", + "role": "compositor", + "sessions": 0, + "links": 0, + "bytes_in": 0, + "bytes_out": 0, + "link_bytes_in": 0, + "link_bytes_out": 0, + "hops": 1, + "hop_bytes_in": 1197000, + "hop_bytes_out": 460000, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 42000000, + "max_ppm": 15000 + } + ], + "unmetered": 0, + "coverage": "whole" + } + }, + "cites": [ + [ + 2, + "8070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a21" + ] + ] + } + ], + "rooms": [ + { + "room": "2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa", + "t0": 1792108800000000, + "hops": 2, + "sessions": 7, + "subscriber_us": 156599000, + "bytes_in": 5461000, + "bytes_out": 6370900, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 60400000, + "max_ppm": 20000 + } + ], + "unmetered": 0, + "coverage": "whole" + } + }, + "cites": [ + [ + 2, + "8070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a21" + ], + [ + 2, + "c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d" + ], + [ + 11, + "2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa" + ] + ] + } + ], + "totals": { + "sessions": 0, + "links": 0, + "bytes_in": 0, + "bytes_out": 0, + "link_bytes_in": 0, + "link_bytes_out": 0, + "hops": 2, + "hop_bytes_in": 5461000, + "hop_bytes_out": 6370900, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [ + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 60400000, + "max_ppm": 20000 + } + ], + "unmetered": 0, + "coverage": "whole" + } + } + } + } + }, + { + "name": "unmetered_only", + "about": "a day of two relays whose every figure is the unmetered marker, and no per-hop record: the sessions are unmetered and the hops have no figure", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d0600060000000a3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd2902000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b7102000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010200000000000000010000000000000000000000000000004072840000000000c08d8e0000000000000000000000000000000000000000000000000000000000000000000003000000000000000300000097c1148c08826926eaabdc8f60af9a34975f15eba585a9157330ba62e47b6b46000004000000000000000200000000000000008e8f0000000000c0e50d0100000000c08d8e0000000000c08d8e00000000000000000000000000000000000000000000000000000600000000000000bb086139df4640c4fa7799aabb0c1caf3920e50471e6085b27d233676ab35ffd676d101adbf527ad93bb5e2a774c25bf9398743ba3fd811b44c77ed257c1f207", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c" + ], + "records": [ + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.150:40022\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108805000,\"closed_unix_ms\":1792108812000,\"close_code\":null,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"wire_bytes_sent\":59150,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":8,\"from_unix_us\":1792108805000000,\"to_unix_us\":1792108812000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"8b2c37b1cf569af76d96b45b3f689287a7bc88ebcaff5a25abf24c9421976a0e88433118b69ca8ff4f8e787467c44e9b8969601cd7b8acc29849533ec9ef8c05\"}" + } + ] + }, + "outcome": { + "outcome": "accept", + "digest": "b9f1051a048c24265f012f7edda24309b819e00923cc84c581354e43d427096c", + "organisation": "ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d", + "start": 1792108800000000, + "end": 1792195200000000, + "records": 6, + "enrolments": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "role": "relay", + "label": "home", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c", + "records": 3, + "silent": false + }, + { + "node": "2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e", + "role": "relay", + "label": "edge", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71", + "records": 3, + "silent": false + } + ], + "nodes": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "label": "home", + "role": "relay", + "sessions": 2, + "links": 1, + "bytes_in": 9408000, + "bytes_out": 9008000, + "link_bytes_in": 0, + "link_bytes_out": 9342400, + "hops": 0, + "hop_bytes_in": 0, + "hop_bytes_out": 0, + "energy": { + "sessions": { + "rows": [], + "unmetered": 3, + "coverage": "unmetered" + }, + "hops": { + "rows": [], + "unmetered": 0, + "coverage": "none" + } + }, + "cites": [ + [ + 10, + "7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe236" + ], + [ + 10, + "89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b0765" + ], + [ + 10, + "d84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd29" + ] + ] + }, + { + "node": "2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e", + "label": "edge", + "role": "relay", + "sessions": 2, + "links": 1, + "bytes_in": 0, + "bytes_out": 8680000, + "link_bytes_in": 9342400, + "link_bytes_out": 0, + "hops": 0, + "hop_bytes_in": 0, + "hop_bytes_out": 0, + "energy": { + "sessions": { + "rows": [], + "unmetered": 3, + "coverage": "unmetered" + }, + "hops": { + "rows": [], + "unmetered": 0, + "coverage": "none" + } + }, + "cites": [ + [ + 10, + "3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce" + ], + [ + 10, + "a5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde9269" + ], + [ + 10, + "aff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff" + ] + ] + } + ], + "rooms": [], + "totals": { + "sessions": 4, + "links": 2, + "bytes_in": 9408000, + "bytes_out": 17688000, + "link_bytes_in": 9342400, + "link_bytes_out": 9342400, + "hops": 0, + "hop_bytes_in": 0, + "hop_bytes_out": 0, + "energy": { + "sessions": { + "rows": [], + "unmetered": 6, + "coverage": "unmetered" + }, + "hops": { + "rows": [], + "unmetered": 0, + "coverage": "none" + } + } + } + } + }, + { + "name": "enrolled_and_silent", + "about": "two relays enrolled and silent: no line, every scope none", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d06000000000002000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d38c00ad9bd0f40188337ce0830e294351813ee96943efb1073fe730076fbac9ccbbd7669c1343f7811e5ca89fdf044d571ae6403be68c3dfc903919c4a6710c", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c" + ], + "records": [] + }, + "outcome": { + "outcome": "accept", + "digest": "c0b44da2c01c913396a27415ac996078a23fa485557380bd23af3e17f3bf2906", + "organisation": "ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d", + "start": 1792108800000000, + "end": 1792195200000000, + "records": 0, + "enrolments": [ + { + "node": "0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72", + "role": "relay", + "label": "home", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c", + "records": 0, + "silent": true + }, + { + "node": "2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e", + "role": "relay", + "label": "edge", + "from": 1789171200000000, + "until": 18446744073709551615, + "digest": "99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71", + "records": 0, + "silent": true + } + ], + "nodes": [], + "rooms": [], + "totals": { + "sessions": 0, + "links": 0, + "bytes_in": 0, + "bytes_out": 0, + "link_bytes_in": 0, + "link_bytes_out": 0, + "hops": 0, + "hop_bytes_in": 0, + "hop_bytes_out": 0, + "energy": { + "sessions": { + "rows": [], + "unmetered": 0, + "coverage": "none" + }, + "hops": { + "rows": [], + "unmetered": 0, + "coverage": "none" + } + } + } + } + }, + { + "name": "bundle_malformed", + "about": "a bundle with no kind", + "bundle": { + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ], + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "malformed", + "at": [ + "bundle" + ] + } + }, + { + "name": "report_truncated", + "about": "a report one byte short", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f6", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "truncated", + "at": [ + "report" + ] + } + }, + { + "name": "report_malformed", + "about": "a report whose magic is not WFR1", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523201ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "malformed", + "at": [ + "report" + ] + } + }, + { + "name": "report_unknown_version", + "about": "a report of version 2", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523102ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "unknown_version", + "at": [ + "report" + ] + } + }, + { + "name": "report_invalid", + "about": "a report whose period ends where it starts", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000406cd8e95d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003954117a431b91c1736c4482bc3ac9a274fdb74a1ae339d4621f56227424223e4caa7dc3a767f06df793d2e8bbc8c52dd4b2fbdd1bdc810731eaf5f4b8bb8800", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_invalid", + "at": [ + "report" + ] + } + }, + { + "name": "report_row_of_no_class", + "about": "a report with a row of tag 0, a sum over no one class", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102000200000080a1990300000000204e000005000000000000000940f9ae4e78af8189281889367af762ad1e8819b85f7721333b590250ebcfec641d695803f55fb1040ceb6c9b7afa12dc4686374249168a9524283ce5bbe40a", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "classes_summed", + "at": [ + "report" + ] + } + }, + { + "name": "report_bad_signature", + "about": "a report whose signature does not verify", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f601", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_signature", + "at": [ + "report" + ] + } + }, + { + "name": "report_bad_key", + "about": "a report naming as its organisation a key of small order", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101010000000000000000000000000000000000000000000000000000000000000000406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e0000050000000000000074f7175ec6fe426d5de0b5b040561ab9ca359fcacde4ded263721765b6cf59f4495af98a7151a137a40c7edeed43bd0f113ff6e82e74c74e23f2792f2346fa09", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_key", + "at": [ + "report" + ] + } + }, + { + "name": "enrolment_truncated", + "about": "an enrolment one byte short", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a2283", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "truncated", + "at": [ + "enrolment", + 1 + ] + } + }, + { + "name": "enrolment_invalid", + "about": "an enrolment of role 7", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e070080d1e13d5b0600ffffffffffffffff04656467659687f22373783d46da7240f522391b7dd66373d7826cb07d4807f5a9ab39fb220b0e42c78a0014a9c9ca70058db4a663bec32f4d523f3e1a9a05827de39dc80b", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "enrolment_invalid", + "at": [ + "enrolment", + 1 + ] + } + }, + { + "name": "enrolment_bad_signature", + "about": "an enrolment whose signature does not verify", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77406" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_signature", + "at": [ + "enrolment", + 2 + ] + } + }, + { + "name": "wrong_organisation", + "about": "an enrolment another organisation signed", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101b8c12b6bd2f85be2ad825a045b6ed2b1370fc91cdafd6f51e00ef0cdb93b3a3e2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467655934b1f1d8188bd33343291fab59934adbfd8c48b03729f32cf881a5bb33135890546520b0a78429d927e20d88455f49ed0183182bcd064f29e73d4739192401", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "wrong_organisation", + "at": [ + "enrolment", + 1 + ] + } + }, + { + "name": "enrolment_duplicate", + "about": "a node enrolled twice", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff0a686f6d6520616761696ece38bc0b102df627ea8c4f6245b8e3d777af11140ac8f98537a1d686262a76f260ac692a798b49f93bc52d028060de222816ad75050eba2b04bd17ba94b8f30a" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "enrolment_duplicate", + "at": [ + "enrolment", + 3 + ] + } + }, + { + "name": "enrolment_outside_period", + "about": "an enrolment whose span ended before the period", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc90300c00e61995d060000406cd8e95d06000f696e676573742c2072657469726564df1c14c39d2f9e7bcd9a250c3ef0160fd72b5b5a508115e59610f7c7522ad8af2dc58e6f51d61d1747bebe8126cef956e1801cde6465982560cf3818570b0706" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "outside_period", + "at": [ + "enrolment", + 3 + ] + } + }, + { + "name": "carriage_malformed", + "about": "a carriage with a member its kind does not have", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501", + "room": "lesson" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "malformed", + "at": [ + "record", + 0 + ] + } + }, + { + "name": "summary_line_malformed", + "about": "a summary line given with its line end, which is not the relay's form", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}\n" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "malformed", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_text_malformed", + "about": "a summary's text naming a member twice", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"766dac697d6c01ffe09e0001429e4b998c758e8ede88052ee6a9d648b900bf7a19a6ba48ef6d89e23775faf7f872db5cf2777e08877dd5b2632b3551a3d91a02\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "malformed", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_member_missing", + "about": "a summary with no relay_key", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"67c48440a0cb15af06721b4931fc997908c69fbbbbdc00627a72c46a36df230319d033344579de1dc8ebfb9df14815a7a94bb7618ca769c5076a7a5a13639600\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "malformed", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_unknown_version", + "about": "a summary of format session-summary/3", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/3\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"72985b8c39f8d3bc0165709e261166729e10750422083015ee51409b2796e2742185543cb76c8aa2b54b4010e08073c7bc0511d33b5a5cd8d93e49d853a88004\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "unknown_version", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_class_without_evidence", + "about": "a summary stating its session's energy as OnChipCounter, with no member to carry the class's evidence", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"OnChipCounter\",\"joules_micro\":5000},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"53a6a2cf1871c52599ddaa59171f6a3956f571081b8dcaeed16888771af9faef6e16fd028d65ec6eda87ce4ea98ba32fea41fd4afdfc4120d9dc1a142f59be07\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "energy_invalid", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_figure_beside_unmetered", + "about": "a summary stating a figure beside the unmetered label", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":7},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"233c8167b411661ec1bc2a62e76add6178b7a8cb73beb9bba0176beac78b5e25d46e7fb3e74822f2d8dbd0b7b4319efc922f1358963bbe36436692649bd1340b\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "energy_invalid", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_record_invalid", + "about": "a summary of a session that closed before it opened", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108800999,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"e1228ac78ed2dd590e72ee1171de9f8acd878ca3fa6563f9c03a4a8acf5b81e9e1cd16b5439fdc1d5e84ecabebfcd0fab1b04721e9fa7c2034fb69de7fa5f205\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "record_invalid", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_bad_signature", + "about": "a summary whose bytes out were raised after it was signed", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624001,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_signature", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "summary_bad_key", + "about": "a summary naming as its relay a key of small order", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720101000000000000000100000000000000008e8f000000000000000000000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000020000000000000003000000fbf01135027cb55864dbead56bf740278cf47d42fd9108558c40a2052b69ddeb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000200000000000000008e8f00000000008097830000000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000400000000000000023aca39ba922fd2df32986299bae03098093ce60be9f7f323276c23ef7457c203db75698d83ba6a1203b2b449bd42065fe1b6036c9c197180d477ebd0823a0f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0100000000000000000000000000000000000000000000000000000000000000\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"bc6955c27abfe3caffca6a311bf674f66660302a5289add09392784bf51e5690b325148105bda47c253c8bfbada8fb51331ad60ee91b3ed5fbab5bc679c3340e\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_key", + "at": [ + "record", + 4 + ] + } + }, + { + "name": "hop_truncated", + "about": "a per-hop record one byte short", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a210a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d06000100000000000000000000000000000000000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000002000000b9ab50cc0427edb88c2baeb6e489bead1b9a28b4d5ffb1d402ebeaa37585436e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000050000000000000089eea88c948bfb6e69b8a91dc375fce2aa2cba8c94ac267807cd798d045cef6e4df64db3c83e71ade4249f17f855ee82b532da49cc1b745a085960e7f7ea7807", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a83", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "truncated", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "hop_energy_invalid", + "about": "a per-hop record whose OnChipCounter class declares no uncertainty", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a210a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d06000100000000000000000000000000000000000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000002000000b9ab50cc0427edb88c2baeb6e489bead1b9a28b4d5ffb1d402ebeaa37585436e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000050000000000000089eea88c948bfb6e69b8a91dc375fce2aa2cba8c94ac267807cd798d045cef6e4df64db3c83e71ade4249f17f855ee82b532da49cc1b745a085960e7f7ea7807", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c3180100000000040000000000000000016e360000110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa3aba86804706cb3235e78693292f79b0d046076f65c7a4ceaddb2586ff912c82a31d746c2fab3d771448e80f83d4c89fd1623733d4521f6804f6b16c4a88de505", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "energy_invalid", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "hop_record_invalid", + "about": "a per-hop record whose span ends where it starts", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a210a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d06000100000000000000000000000000000000000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000002000000b9ab50cc0427edb88c2baeb6e489bead1b9a28b4d5ffb1d402ebeaa37585436e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000050000000000000089eea88c948bfb6e69b8a91dc375fce2aa2cba8c94ac267807cd798d045cef6e4df64db3c83e71ade4249f17f855ee82b532da49cc1b745a085960e7f7ea7807", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010000000000000000000000000000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa3f3c75df5a90ee67ab970132a1ba4f7355736e4b947dd451f8e262f6f2c8c4029a2faae9015ce55571a2c6a478ce9a79ccc84ec319e4b2f759d5eb50e53084f08", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "record_invalid", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "hop_bad_signature", + "about": "a per-hop record whose signature does not verify", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a210a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d06000100000000000000000000000000000000000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000002000000b9ab50cc0427edb88c2baeb6e489bead1b9a28b4d5ffb1d402ebeaa37585436e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000050000000000000089eea88c948bfb6e69b8a91dc375fce2aa2cba8c94ac267807cd798d045cef6e4df64db3c83e71ade4249f17f855ee82b532da49cc1b745a085960e7f7ea7807", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8303", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_signature", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "hop_ledger_invalid", + "about": "a per-hop record whose ledger is not a whole number of entries", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a210a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d06000100000000000000000000000000000000000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000002000000b9ab50cc0427edb88c2baeb6e489bead1b9a28b4d5ffb1d402ebeaa37585436e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000050000000000000089eea88c948bfb6e69b8a91dc375fce2aa2cba8c94ac267807cd798d045cef6e4df64db3c83e71ade4249f17f855ee82b532da49cc1b745a085960e7f7ea7807", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "ledger_invalid", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "hop_ledger_mismatch", + "about": "a per-hop record beside another record's ledger", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060007000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a210a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d06000100000000000000000000000000000000000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000002000000b9ab50cc0427edb88c2baeb6e489bead1b9a28b4d5ffb1d402ebeaa37585436e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000050000000000000089eea88c948bfb6e69b8a91dc375fce2aa2cba8c94ac267807cd798d045cef6e4df64db3c83e71ade4249f17f855ee82b532da49cc1b745a085960e7f7ea7807", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "ledger_mismatch", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "descriptor_truncated", + "about": "a room descriptor cut short of its t0", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d0600050000000a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd2903000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8000003000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000000000000000000000000000000000000000000000005000000000000005396d83698f6eddc5a269aee1c06b09e51f9e8b50572e991530e9406c56ef51a5dac0f2b5d2b077f2e91b618981524b0213aaabc9a095444572da030d51b2303", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c010000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "truncated", + "at": [ + "record", + 0 + ] + } + }, + { + "name": "descriptor_bad_signature", + "about": "a room descriptor whose signature does not verify", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d0600050000000a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd2903000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8000003000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000000000000000000000000000000000000000000000005000000000000005396d83698f6eddc5a269aee1c06b09e51f9e8b50572e991530e9406c56ef51a5dac0f2b5d2b077f2e91b618981524b0213aaabc9a095444572da030d51b2303", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534500" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "bad_signature", + "at": [ + "record", + 0 + ] + } + }, + { + "name": "signer_not_enrolled", + "about": "a summary signed by a relay no enrolment names", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"63edaeacb28ed2848e1864f3e268f2f51d2439d3e2f6d946925c1bbd984cfe0b\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"e980e385806e8fb7c8a3d1079c73913d7408fee08a72d4177bd4c295063d88b57b6f260c95000695f0065064c0dc7c56dfebdfec81c8199e17b4612248346e09\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "signer_not_enrolled", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "hop_signer_not_enrolled", + "about": "a per-hop record of an ingest gateway no enrolment names", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc903c027090000000000406f40010000000080841e000000000003020001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000062c738ccb6c04434ead674b64b2980a37ced79bea5943c2e19d328e1c1e4eb82d04ef892d090700d3366190d4673b6f5fa4ec917302b92fb4d4db28f75016bf40ba2a0258a6b512b72fe74fb568741811595efff6194b4bd579594f7bfa480a", + "ledger": "cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff00000001000000c051020000000000c051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "signer_not_enrolled", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "summary_role_mismatch", + "about": "a summary signed by a node enrolled as an ingest gateway", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060006000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270ecf66d6dc61cb43b563f951a2fa3080c209bf73245a9257c49b7c72eda7683770a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbba693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a02000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000003000000000000008918cbfabb7e3e518c7229f4b7251aada748498d3a3af43980554b4a97db2957b5e38a5c7063b49cd71ba08d427ba26976aca815d333783983ccfc9711433108", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e030080d1e13d5b0600ffffffffffffffff046564676508b1b944acf65438745d832094f91d23ae9fa4ad93470432d9ae52fe7207270c8bbeec12f6878cb0d963c411fc6f462add1eabb1088ce54b11a23cb08f149c01", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "role_mismatch", + "at": [ + "record", + 6 + ] + } + }, + { + "name": "hop_role_mismatch", + "about": "a compositor's per-hop record, its node enrolled as a relay", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d06000700000002c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1f6447d92aa0550f955c53e52651c904af7b8b3afc070fb461cb119b05388263702000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d801002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600010000000700000000000000d882550900000000401041000000000074315a00000000000102040100000000c3180100000000204e00000000000000000000020000006c279238e64237c1d15f8991bf477cfa7329bc50a84e8698e6fee933cde9a56e03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e000005000000000000002deb352bccc0035caad5915d3183c6096be0cbbf30bea1157061c60d147419a81d490112e2a3b4cb242505cedb818ef7b1bfbda5ba087d5c1e26fb47f315ad06", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1010080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72fd9eb9b733b73fda0a2d35e6ac3ad920baca4fe662b0ee51acb6dadeedd12ee42d8252feabf83d8122595efa6e9adeb704ffd643073a2e215a5295b9ceb50f03" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "role_mismatch", + "at": [ + "record", + 2 + ] + } + }, + { + "name": "descriptor_missing", + "about": "a per-hop record whose room's descriptor the bundle does not hold", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d0600050000000a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd2903000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e0000000000000000000000000000000000000000000000000000030000000000000003000000d8e82dfee6f7ae659d6101a096c31ec0bb79cd3095ef5d5c676f16161e520f5f2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8000003000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000000000000000000000000000000000000000000000005000000000000005396d83698f6eddc5a269aee1c06b09e51f9e8b50572e991530e9406c56ef51a5dac0f2b5d2b077f2e91b618981524b0213aaabc9a095444572da030d51b2303", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "descriptor_missing", + "at": [ + "record", + 0 + ] + } + }, + { + "name": "summary_outside_period", + "about": "a summary of a session that ended after the period", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":7,\"transport\":\"quic\",\"remote\":\"198.51.100.99:52000\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792323935000,\"closed_unix_ms\":1792323939000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"wire_bytes_sent\":512360,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"live-a--cam\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"3ed2670db9c2187fe7d03b757076bf01de4dac2af2c476144590b6502faa9fcd0e01c239de9954c45b761c60d967e64b2c617f2d6dfa46baa64313633b45b206\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "outside_period", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "hop_outside_period", + "about": "the relay room's record, two days after the period, with its descriptor", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060009000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0b89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000500000000000000f779acc261764821629fd4d7a72145671ade63a0393616125989ecdb9d937e134da429c70efa3f3bec4dd8b6e5c7f22588ecd5a2e80c9c48f0fc0d43b3d27408", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200001b14125e060040420f00000000000000080000000200000000005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000002097075626c69736865720301020018000000000000000000000000000000000000000000000000000000000000000861756469656e636500010100180000000000000000000000000000000000000000000000000000000000000000010a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfeaee6e1ec8d49668f0a9b74e6bf0884d494488654d2aabf011125ef453336b6e4c34a26c478a88eaa9a1f1e5b036fcde785f13f07bacf4f3dace2608f7560b" + }, + { + "kind": "hop", + "record": "574d48310189a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720130936bdb0900000090579cdb0900000000000000000000000008000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38011e000000000000007869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38025a00000000000000683c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82011e0000000000000000400b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82023f0000000000000000a01700000000001b000000000000000000000000000000000000000000000000000000000000001b00000000000000020000000000000000000000000000000000000000000000000000000000000000011200000000000000a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000023600000000000000f80100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000013c000000000000006eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002b4000000000000004ac2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000048c98f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000050000005f9c7c612cb249d862dff12795c3a5558f377084218e9e1a5799dbabeb177a85684771242e95715f8ca352396003f3aef431b9bf96c8f31fbc68b9d24fd3adb9bf6526097699d988641486d379f3cde1b8ffd4a188177c0cd56f0e89bd13480d", + "ledger": "4fc2bb567c1e950b92bb2dd6796df52eb67f3e5c2e5753b3ee9bae483600f17effffffffffffffffffffffffffffffff0000000100000098b50b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000510124baa39d99a07d9d6575698f70183759e3da8b458f8edb09f09215e14318ffffffffffffffffffffffffffffffff00000001000000f6df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052786b7331441935c2143544988bccb4a4db6f5c76d734292a843a0b5e20e83d404b4c0000000000f4010000000000004555520100000000000000000000008e950c00000000009bfd2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b4272b140a49c75d1dbedfca74343ad6c13a8a9d3a20429e7d457f30d2afd82ffffffffffffffffffffffffffffffff0000000100000000000000000000008e7502000000000006dd2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fec5bc703c31e2600d5a51cceb45eb2e5011ec2c1890f8dc5b96fd683ef85362ffffffffffffffffffffffffffffffff0000000100000000000000000000008e950c0000000000a7ee2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "outside_period", + "at": [ + "record", + 9 + ] + } + }, + { + "name": "outside_enrolment", + "about": "a per-hop record of a relay enrolled from after the record's span", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d0600010000000b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa01000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72d8bd335b4e577793bf0f603334c8881a81fddb87b99ecce1c04e94d3a4c3c31e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dd85b272f3218c300c99ac70312d3634d93a8f83ccdaf9865f9db4bac223789b8e1572cb3260d2222f14a1f80df8cc17a1a024e24cc2435cceab1d0041ca210e", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201800336dae95d0600ffffffffffffffff04686f6d65859f0c1bc9d5a255ee87dd2e9cd4948fc36a9253c3a22d5e6d848e5ab151290e9c2eded09a84cf9eff0426e12f26781c9ff888e318d94d3968eb1ab6eca98c0d" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "outside_enrolment", + "at": [ + "record", + 1 + ] + } + }, + { + "name": "record_duplicate", + "about": "a summary given twice", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "record_duplicate", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "descriptor_duplicate", + "about": "a room descriptor given twice", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "record_duplicate", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "session_summarised_twice", + "about": "two summaries of one session of one relay, which differ in when it closed", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823001,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"81151cf10d9f37788a1d2fbc78997704ab0959790c13fd9cf05005987eede5b181fd1c0ae1b2e3e96a01e95eaf11d09e129100f180a587defcce16b4d122930c\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "record_overlap", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "hop_records_overlap", + "about": "two per-hop records of one compositor and one room whose spans overlap: one OnChipCounter, one ModelBased", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b680100000000c00e16020000000002050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c08649cfaf1251a47c0ca5568184a7fc6692ded2f5c7766d773c94369cc9bf95312edcc0e170119c7d837178dee0323371a710ba56d8abe79240b1818340f7cf3b07", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "record_overlap", + "at": [ + "record", + 8 + ] + } + }, + { + "name": "line_unsourced", + "about": "a node line for an enrolled node that signed nothing in the period", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa04000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b713549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9afd1061564750f9eb98938b40fae4fb59149830e43a69ef4777351a04ec0a84ea693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca04000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d83549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000816c5bbc8b078dc9d2305e2fc44586e91e5eabcd13cd9137d9b289a9e4f3407a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000500000000000000656a46ebcc81425de51171d79f7006be172459c2bdfa1a49139b3757707cd507da1fa6e1d3482b73318ba587b3488f45094f6f1aeade0c1a17b89522cb8eb206", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9030080d1e13d5b0600ffffffffffffffff06696e67657374570321197861e5cd90728dfe81f7ef666973bb1379ce088b62b47fe067d1cdffc40699d8a24264b96c7abae91193b285f3333702b56b0a912d4adb76c7c6b202" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "line_unsourced", + "at": [ + "report", + "nodes", + 2 + ] + } + }, + { + "name": "room_line_unsourced", + "about": "a room line for a room no per-hop record names, citing the record of another room", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83302002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42aeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000001720556a79da0e4e74e50f37cd863b82903c39df56f076435a7307ade1740f6ffe314c7160dacc4d6477bc25d9973c13c4b2d7bc8e69d69bfe53e8d5071c2003", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "line_unsourced", + "at": [ + "report", + "rooms", + 1 + ] + } + }, + { + "name": "classes_summed", + "about": "the lesson room's OnChipCounter row stated as the sum of its own figure and the ModelBased figure", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00c00e61995d06000060f231265e06000d000000028a5ce3302cb410fe4344c89094a21edd5c2d2958c41da3bf09525e8e7cc051d7029f2e96e3cf68df9d2fce5457c50c8469006e663b04a03ec8d389b77a51a646b702c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d02d969cc740d80efd2c77bb615616ea1325471a58c89a1740db6d40fa8c85be6a80a3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650a98a1e1fcc710d160db0cff4bd265d65534803b2a3698cc439cbe6bca1f8bb09c0aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0b89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f05000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b713549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9afd1061564750f9eb98938b40fae4fb59149830e43a69ef4777351a04ec0a84ea693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6cad6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd076c552e8f3f2a1b531c30c5212437382bd066b91200387c7d9e055214f4093604000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720103000000000000000100000000000000008e8f000000000080439100000000000000000000000000c08d8e000000000002000000cea54d00000000001ed27500000000000102040100000000c3180100000000204e00000400000001000000060000006641776d928cdc0f9233891d4088500fe807ba0dbbe181df7a07c379faeb28202749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010200000000000000010000000000000000000000000000004072840000000000c08d8e0000000000000000000000000000000000000000000000000000000000000000000003000000000000000300000097c1148c08826926eaabdc8f60af9a34975f15eba585a9157330ba62e47b6b463549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc90300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c051020000000000c0510200000000000102030100000080841e000000000000000000000000000000000001000000f5ece3aaaa8740669462bffe3d6a317da488554514a08b2164b2d0d103af4769a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e00407000000000001020201000000c00e160200000000000000000000000000000000010000007eba3431a2e084fb6bd5a2d36701d8ca6550d2bbde17912fdb34648cbf66696302002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600030000000700000000000000d882550900000000c8a5550000000000148863000000000003020201000000c00e1602000000000000000002030100000080841e000000000000000000020401000000c0d12e0300000000204e0000000000000000000004000000099dbe110692b0e3caf6ff8153bfcd6047db6ed6b1c6f64a2bf7b64510a458aa89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f00001b14125e060001000000030000000000000048c98f00000000008e950c0000000000aaa01b00000000000000000000010000000200000008fabb44053429fd88bd9c35725986b5ca32c4a8883847ae40c3cf3a93fe2cbd05000000000000000200000000000000008e8f0000000000c0b5150100000000c08d8e0000000000c08d8e000000000004000000563b620000000000be287f000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e00000700000001000000514aa6689a6b8ac93f988d6043851ae6c665e7b34c2b6c0379a1dcfa67186386e6695bdc5b72bbbab8f95e51509cf0eccfa7bc22149daca0707129202171800d", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9030080d1e13d5b0600ffffffffffffffff06696e67657374570321197861e5cd90728dfe81f7ef666973bb1379ce088b62b47fe067d1cdffc40699d8a24264b96c7abae91193b285f3333702b56b0a912d4adb76c7c6b202", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41dd6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd040080d1e13d5b0600ffffffffffffffff0c726f6f6d20736572766963650d2de08a9d17a9defce8513675d5d748b9ee31543a2756abad35b02d925a43ae213634a96b205e831eaa4b13a3b604107eeee08e8d2a700d8252a053cbc7cb03" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200001b14125e060040420f00000000000000080000000200000000005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000002097075626c69736865720301020018000000000000000000000000000000000000000000000000000000000000000861756469656e636500010100180000000000000000000000000000000000000000000000000000000000000000010a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfeaee6e1ec8d49668f0a9b74e6bf0884d494488654d2aabf011125ef453336b6e4c34a26c478a88eaa9a1f1e5b036fcde785f13f07bacf4f3dace2608f7560b" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b680100000000c00e16020000000002050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c08649cfaf1251a47c0ca5568184a7fc6692ded2f5c7766d773c94369cc9bf95312edcc0e170119c7d837178dee0323371a710ba56d8abe79240b1818340f7cf3b07", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc903c027090000000000406f40010000000080841e000000000003020001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000062c738ccb6c04434ead674b64b2980a37ced79bea5943c2e19d328e1c1e4eb82d04ef892d090700d3366190d4673b6f5fa4ec917302b92fb4d4db28f75016bf40ba2a0258a6b512b72fe74fb568741811595efff6194b4bd579594f7bfa480a", + "ledger": "cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff00000001000000c051020000000000c051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d48310189a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720130936bdb0900000090579cdb0900000000000000000000000008000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38011e000000000000007869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38025a00000000000000683c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82011e0000000000000000400b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82023f0000000000000000a01700000000001b000000000000000000000000000000000000000000000000000000000000001b00000000000000020000000000000000000000000000000000000000000000000000000000000000011200000000000000a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000023600000000000000f80100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000013c000000000000006eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002b4000000000000004ac2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000048c98f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000050000005f9c7c612cb249d862dff12795c3a5558f377084218e9e1a5799dbabeb177a85684771242e95715f8ca352396003f3aef431b9bf96c8f31fbc68b9d24fd3adb9bf6526097699d988641486d379f3cde1b8ffd4a188177c0cd56f0e89bd13480d", + "ledger": "4fc2bb567c1e950b92bb2dd6796df52eb67f3e5c2e5753b3ee9bae483600f17effffffffffffffffffffffffffffffff0000000100000098b50b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000510124baa39d99a07d9d6575698f70183759e3da8b458f8edb09f09215e14318ffffffffffffffffffffffffffffffff00000001000000f6df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052786b7331441935c2143544988bccb4a4db6f5c76d734292a843a0b5e20e83d404b4c0000000000f4010000000000004555520100000000000000000000008e950c00000000009bfd2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b4272b140a49c75d1dbedfca74343ad6c13a8a9d3a20429e7d457f30d2afd82ffffffffffffffffffffffffffffffff0000000100000000000000000000008e7502000000000006dd2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fec5bc703c31e2600d5a51cceb45eb2e5011ec2c1890f8dc5b96fd683ef85362ffffffffffffffffffffffffffffffff0000000100000000000000000000008e950c0000000000a7ee2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":7,\"transport\":\"quic\",\"remote\":\"198.51.100.99:52000\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792323935000,\"closed_unix_ms\":1792323939000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"wire_bytes_sent\":512360,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"live-a--cam\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"3ed2670db9c2187fe7d03b757076bf01de4dac2af2c476144590b6502faa9fcd0e01c239de9954c45b761c60d967e64b2c617f2d6dfa46baa64313633b45b206\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.150:40022\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108805000,\"closed_unix_ms\":1792108812000,\"close_code\":null,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"wire_bytes_sent\":59150,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":8,\"from_unix_us\":1792108805000000,\"to_unix_us\":1792108812000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"8b2c37b1cf569af76d96b45b3f689287a7bc88ebcaff5a25abf24c9421976a0e88433118b69ca8ff4f8e787467c44e9b8969601cd7b8acc29849533ec9ef8c05\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "classes_summed", + "at": [ + "report", + "rooms", + 0 + ] + } + }, + { + "name": "unmetered_dropped", + "about": "the home relay's line with its sessions' unmetered figures dropped", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000000000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000007e7a5c2991fb24cc49e9bfe3ba27d5837b2267c6b66fef0920bddc439ba86220ebd65b02cb24da1a9e4e35113eda2e5de80787b550e899eb14532b2bca1be605", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "unmetered_summed", + "at": [ + "report", + "nodes", + 0 + ] + } + }, + { + "name": "unmetered_as_zero", + "about": "the relay room's unmetered hop stated as an OnChipCounter figure of zero joules", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00c00e61995d06000060f231265e06000d000000028a5ce3302cb410fe4344c89094a21edd5c2d2958c41da3bf09525e8e7cc051d7029f2e96e3cf68df9d2fce5457c50c8469006e663b04a03ec8d389b77a51a646b702c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d02d969cc740d80efd2c77bb615616ea1325471a58c89a1740db6d40fa8c85be6a80a3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650a98a1e1fcc710d160db0cff4bd265d65534803b2a3698cc439cbe6bca1f8bb09c0aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0b89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f05000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b713549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9afd1061564750f9eb98938b40fae4fb59149830e43a69ef4777351a04ec0a84ea693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6cad6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd076c552e8f3f2a1b531c30c5212437382bd066b91200387c7d9e055214f4093604000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720103000000000000000100000000000000008e8f000000000080439100000000000000000000000000c08d8e000000000002000000cea54d00000000001ed27500000000000102040100000000c3180100000000204e00000400000001000000060000006641776d928cdc0f9233891d4088500fe807ba0dbbe181df7a07c379faeb28202749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010200000000000000010000000000000000000000000000004072840000000000c08d8e0000000000000000000000000000000000000000000000000000000000000000000003000000000000000300000097c1148c08826926eaabdc8f60af9a34975f15eba585a9157330ba62e47b6b463549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc90300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c051020000000000c0510200000000000102030100000080841e000000000000000000000000000000000001000000f5ece3aaaa8740669462bffe3d6a317da488554514a08b2164b2d0d103af4769a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e00407000000000001020201000000c00e160200000000000000000000000000000000010000007eba3431a2e084fb6bd5a2d36701d8ca6550d2bbde17912fdb34648cbf66696302002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600030000000700000000000000d882550900000000c8a5550000000000148863000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e0000000000000000000004000000099dbe110692b0e3caf6ff8153bfcd6047db6ed6b1c6f64a2bf7b64510a458aa89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f00001b14125e060001000000030000000000000048c98f00000000008e950c0000000000aaa01b00000000000102040100000000000000000000000100000000000000000000000200000008fabb44053429fd88bd9c35725986b5ca32c4a8883847ae40c3cf3a93fe2cbd05000000000000000200000000000000008e8f0000000000c0b5150100000000c08d8e0000000000c08d8e000000000004000000563b620000000000be287f000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e0000070000000100000021f6b6710b61a02a606a9edf5400055794da70d7e7a8596ffe28b986510f4804cd4af39323edba4b537af87859e2f7fd42eb81adbca35033eb91d62f58dcba0a", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9030080d1e13d5b0600ffffffffffffffff06696e67657374570321197861e5cd90728dfe81f7ef666973bb1379ce088b62b47fe067d1cdffc40699d8a24264b96c7abae91193b285f3333702b56b0a912d4adb76c7c6b202", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41dd6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd040080d1e13d5b0600ffffffffffffffff0c726f6f6d20736572766963650d2de08a9d17a9defce8513675d5d748b9ee31543a2756abad35b02d925a43ae213634a96b205e831eaa4b13a3b604107eeee08e8d2a700d8252a053cbc7cb03" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200001b14125e060040420f00000000000000080000000200000000005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000002097075626c69736865720301020018000000000000000000000000000000000000000000000000000000000000000861756469656e636500010100180000000000000000000000000000000000000000000000000000000000000000010a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfeaee6e1ec8d49668f0a9b74e6bf0884d494488654d2aabf011125ef453336b6e4c34a26c478a88eaa9a1f1e5b036fcde785f13f07bacf4f3dace2608f7560b" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b680100000000c00e16020000000002050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c08649cfaf1251a47c0ca5568184a7fc6692ded2f5c7766d773c94369cc9bf95312edcc0e170119c7d837178dee0323371a710ba56d8abe79240b1818340f7cf3b07", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc903c027090000000000406f40010000000080841e000000000003020001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000062c738ccb6c04434ead674b64b2980a37ced79bea5943c2e19d328e1c1e4eb82d04ef892d090700d3366190d4673b6f5fa4ec917302b92fb4d4db28f75016bf40ba2a0258a6b512b72fe74fb568741811595efff6194b4bd579594f7bfa480a", + "ledger": "cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff00000001000000c051020000000000c051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d48310189a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720130936bdb0900000090579cdb0900000000000000000000000008000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38011e000000000000007869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38025a00000000000000683c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82011e0000000000000000400b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82023f0000000000000000a01700000000001b000000000000000000000000000000000000000000000000000000000000001b00000000000000020000000000000000000000000000000000000000000000000000000000000000011200000000000000a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000023600000000000000f80100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000013c000000000000006eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002b4000000000000004ac2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000048c98f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000050000005f9c7c612cb249d862dff12795c3a5558f377084218e9e1a5799dbabeb177a85684771242e95715f8ca352396003f3aef431b9bf96c8f31fbc68b9d24fd3adb9bf6526097699d988641486d379f3cde1b8ffd4a188177c0cd56f0e89bd13480d", + "ledger": "4fc2bb567c1e950b92bb2dd6796df52eb67f3e5c2e5753b3ee9bae483600f17effffffffffffffffffffffffffffffff0000000100000098b50b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000510124baa39d99a07d9d6575698f70183759e3da8b458f8edb09f09215e14318ffffffffffffffffffffffffffffffff00000001000000f6df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052786b7331441935c2143544988bccb4a4db6f5c76d734292a843a0b5e20e83d404b4c0000000000f4010000000000004555520100000000000000000000008e950c00000000009bfd2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b4272b140a49c75d1dbedfca74343ad6c13a8a9d3a20429e7d457f30d2afd82ffffffffffffffffffffffffffffffff0000000100000000000000000000008e7502000000000006dd2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fec5bc703c31e2600d5a51cceb45eb2e5011ec2c1890f8dc5b96fd683ef85362ffffffffffffffffffffffffffffffff0000000100000000000000000000008e950c0000000000a7ee2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":7,\"transport\":\"quic\",\"remote\":\"198.51.100.99:52000\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792323935000,\"closed_unix_ms\":1792323939000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"wire_bytes_sent\":512360,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"live-a--cam\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"3ed2670db9c2187fe7d03b757076bf01de4dac2af2c476144590b6502faa9fcd0e01c239de9954c45b761c60d967e64b2c617f2d6dfa46baa64313633b45b206\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.150:40022\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108805000,\"closed_unix_ms\":1792108812000,\"close_code\":null,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"wire_bytes_sent\":59150,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":8,\"from_unix_us\":1792108805000000,\"to_unix_us\":1792108812000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"8b2c37b1cf569af76d96b45b3f689287a7bc88ebcaff5a25abf24c9421976a0e88433118b69ca8ff4f8e787467c44e9b8969601cd7b8acc29849533ec9ef8c05\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "unmetered_summed", + "at": [ + "report", + "rooms", + 1 + ] + } + }, + { + "name": "totals_unmetered_dropped", + "about": "totals whose hops leave out the relay room's unmetered figure, which would state them whole", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00c00e61995d06000060f231265e06000d000000028a5ce3302cb410fe4344c89094a21edd5c2d2958c41da3bf09525e8e7cc051d7029f2e96e3cf68df9d2fce5457c50c8469006e663b04a03ec8d389b77a51a646b702c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d02d969cc740d80efd2c77bb615616ea1325471a58c89a1740db6d40fa8c85be6a80a3b49c999074030b1069e810c07b599517cb7f9d8b9272ccce7df78f944d397ce0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650a98a1e1fcc710d160db0cff4bd265d65534803b2a3698cc439cbe6bca1f8bb09c0aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0b89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f05000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b713549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9afd1061564750f9eb98938b40fae4fb59149830e43a69ef4777351a04ec0a84ea693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6cad6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd076c552e8f3f2a1b531c30c5212437382bd066b91200387c7d9e055214f4093604000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720103000000000000000100000000000000008e8f000000000080439100000000000000000000000000c08d8e000000000002000000cea54d00000000001ed27500000000000102040100000000c3180100000000204e00000400000001000000060000006641776d928cdc0f9233891d4088500fe807ba0dbbe181df7a07c379faeb28202749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010200000000000000010000000000000000000000000000004072840000000000c08d8e0000000000000000000000000000000000000000000000000000000000000000000003000000000000000300000097c1148c08826926eaabdc8f60af9a34975f15eba585a9157330ba62e47b6b463549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc90300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c051020000000000c0510200000000000102030100000080841e000000000000000000000000000000000001000000f5ece3aaaa8740669462bffe3d6a317da488554514a08b2164b2d0d103af4769a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e00407000000000001020201000000c00e160200000000000000000000000000000000010000007eba3431a2e084fb6bd5a2d36701d8ca6550d2bbde17912fdb34648cbf66696302002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600030000000700000000000000d882550900000000c8a5550000000000148863000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e0000000000000000000004000000099dbe110692b0e3caf6ff8153bfcd6047db6ed6b1c6f64a2bf7b64510a458aa89a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f00001b14125e060001000000030000000000000048c98f00000000008e950c0000000000aaa01b00000000000000000000010000000200000008fabb44053429fd88bd9c35725986b5ca32c4a8883847ae40c3cf3a93fe2cbd05000000000000000200000000000000008e8f0000000000c0b5150100000000c08d8e0000000000c08d8e000000000004000000563b620000000000be287f000000000003020201000000c00e1602000000000000000002030100000080841e00000000000000000002040100000000c3180100000000204e00000700000000000000ee174e421601d17dd3a9a26fc8caf9c803f52974e20547037149000ebe960954f67a9ae1dbe97e1850a1388fb68298a70ed101b5e697164e6cba924443c7d504", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc9030080d1e13d5b0600ffffffffffffffff06696e67657374570321197861e5cd90728dfe81f7ef666973bb1379ce088b62b47fe067d1cdffc40699d8a24264b96c7abae91193b285f3333702b56b0a912d4adb76c7c6b202", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41dd6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd040080d1e13d5b0600ffffffffffffffff0c726f6f6d20736572766963650d2de08a9d17a9defce8513675d5d748b9ee31543a2756abad35b02d925a43ae213634a96b205e831eaa4b13a3b604107eeee08e8d2a700d8252a053cbc7cb03" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200001b14125e060040420f00000000000000080000000200000000005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000002097075626c69736865720301020018000000000000000000000000000000000000000000000000000000000000000861756469656e636500010100180000000000000000000000000000000000000000000000000000000000000000010a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfeaee6e1ec8d49668f0a9b74e6bf0884d494488654d2aabf011125ef453336b6e4c34a26c478a88eaa9a1f1e5b036fcde785f13f07bacf4f3dace2608f7560b" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b680100000000c00e16020000000002050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c08649cfaf1251a47c0ca5568184a7fc6692ded2f5c7766d773c94369cc9bf95312edcc0e170119c7d837178dee0323371a710ba56d8abe79240b1818340f7cf3b07", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa3549cf93c7fb47a5cee15993419720433466b527ad7a7423ccc78de33baf2cc903c027090000000000406f40010000000080841e000000000003020001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000062c738ccb6c04434ead674b64b2980a37ced79bea5943c2e19d328e1c1e4eb82d04ef892d090700d3366190d4673b6f5fa4ec917302b92fb4d4db28f75016bf40ba2a0258a6b512b72fe74fb568741811595efff6194b4bd579594f7bfa480a", + "ledger": "cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff00000001000000c051020000000000c051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d48310189a7be137d7f3c51d15b0d4ece614d60743d7542b7693c96ac7633793e9c102f0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720130936bdb0900000090579cdb0900000000000000000000000008000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38011e000000000000007869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152d69b7a8f4a75770ec3e98a5f566eb81be7e64991e6e05d574a296d1ae5cf38025a00000000000000683c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82011e0000000000000000400b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001daed485c7654eadd0391882eee64c9236f80c50d402067f940d18886b1e69a82023f0000000000000000a01700000000001b000000000000000000000000000000000000000000000000000000000000001b00000000000000020000000000000000000000000000000000000000000000000000000000000000011200000000000000a80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000023600000000000000f80100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000013c000000000000006eeb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002b4000000000000004ac2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000048c98f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000050000005f9c7c612cb249d862dff12795c3a5558f377084218e9e1a5799dbabeb177a85684771242e95715f8ca352396003f3aef431b9bf96c8f31fbc68b9d24fd3adb9bf6526097699d988641486d379f3cde1b8ffd4a188177c0cd56f0e89bd13480d", + "ledger": "4fc2bb567c1e950b92bb2dd6796df52eb67f3e5c2e5753b3ee9bae483600f17effffffffffffffffffffffffffffffff0000000100000098b50b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000510124baa39d99a07d9d6575698f70183759e3da8b458f8edb09f09215e14318ffffffffffffffffffffffffffffffff00000001000000f6df000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052786b7331441935c2143544988bccb4a4db6f5c76d734292a843a0b5e20e83d404b4c0000000000f4010000000000004555520100000000000000000000008e950c00000000009bfd2f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b4272b140a49c75d1dbedfca74343ad6c13a8a9d3a20429e7d457f30d2afd82ffffffffffffffffffffffffffffffff0000000100000000000000000000008e7502000000000006dd2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fec5bc703c31e2600d5a51cceb45eb2e5011ec2c1890f8dc5b96fd683ef85362ffffffffffffffffffffffffffffffff0000000100000000000000000000008e950c0000000000a7ee2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":7,\"transport\":\"quic\",\"remote\":\"198.51.100.99:52000\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792323935000,\"closed_unix_ms\":1792323939000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"wire_bytes_sent\":512360,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"live-a--cam\":{\"objects_forwarded\":40,\"object_bytes_forwarded\":512000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"3ed2670db9c2187fe7d03b757076bf01de4dac2af2c476144590b6502faa9fcd0e01c239de9954c45b761c60d967e64b2c617f2d6dfa46baa64313633b45b206\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.150:40022\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108805000,\"closed_unix_ms\":1792108812000,\"close_code\":null,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"wire_bytes_sent\":59150,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":350,\"object_bytes_forwarded\":56000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":8,\"from_unix_us\":1792108805000000,\"to_unix_us\":1792108812000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"8b2c37b1cf569af76d96b45b3f689287a7bc88ebcaff5a25abf24c9421976a0e88433118b69ca8ff4f8e787467c44e9b8969601cd7b8acc29849533ec9ef8c05\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "unmetered_summed", + "at": [ + "report", + "totals" + ] + } + }, + { + "name": "citation_mismatch", + "about": "a node line citing one record fewer than it came from", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000010000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e0000050000000000000049c1454325576123198fc8bf1ed8847c9ef6f85be353edd0e45a42ae55ccd91ce944cdf1feef390c303f030bc905ef5fd9685ce6e46682600307b925cb9aec0c", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "citation_mismatch", + "at": [ + "report", + "nodes", + 1 + ] + } + }, + { + "name": "cites_mismatch", + "about": "a room line whose citation digest leaves out its descriptor", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e00000000000000000000030000009fcf28ee652829c92eedbb37bda5d9deb98037038ec977e07d1ddd04f7f61b5103000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003fc896ae72a98874b56ec5ad59b0ef4e6a0fed934a75916c398f099536f2d870cbc789f979ebf625335d67275c4cb22cd1682f6ec48d1a253acf335380dba60f", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "citation_mismatch", + "at": [ + "report", + "rooms", + 0 + ] + } + }, + { + "name": "bytes_mismatch", + "about": "a node line stating one byte more out than its summaries", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000081738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000500000000000000f51b605cd3284a2b58ed18bc77bfe7a0a6422f68691b094058c218f2fa7923696f097869e9f6591d974821522621cbc43aa2bb080fed7f6c804caac36ff19b09", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + }, + { + "name": "link_bytes_counted_as_sessions", + "about": "the edge's line counting its upstream link's bytes as its clients'", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e0101000000000000000100000000000000c08d8e00000000008097830000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000500000000000000f0bff0301a454197deccb91f0b23efcf35c354aca9c2417ced0683551235ccba996610f8f4154fbd8a4e23ffd2c6f8804b58cc1a3a22e2b4f5a4f9ffca5f2a0a", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + }, + { + "name": "role_misstated", + "about": "a relay's node line stating the role of an ingest gateway", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e030100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e0000050000000000000095983d33cf4bd7e6443e86a9e9d8b9e398e82a5269bcb3b233e26b1155e339bf345b3aef62eadf0b192bba54e79621f8ac48adafff9d7a7c728389bbb3bb8d07", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + }, + { + "name": "max_ppm_mismatch", + "about": "a row stating a smaller declared uncertainty than its figures", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060003000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189ca693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca02000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000000000000000000001000000f694fbf8d2beb411a046663f760ccab7044171e7897434304a7d4c52985a9f3da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a19903000000001f4e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000000000000000000cce9bcc362d7f7c08d25b301682494e3fc37cc514495108db5c32b2855c50083021a119caef1f9d8995af177259b0603fa73359521c9782054be9d30f59f9908", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + }, + { + "name": "record_not_reported", + "about": "a bundle holding a descriptor the report does not list", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e000005000000000000003b90e97582bb1b79b9899332fa73d47e460e7c341c3cbd5c7a8cf47965d4d57f73822e91c7d82a003929218ea1faddc639109d82916784574fa988eee246f600", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + }, + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200001b14125e060040420f00000000000000080000000200000000005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000002097075626c69736865720301020018000000000000000000000000000000000000000000000000000000000000000861756469656e636500010100180000000000000000000000000000000000000000000000000000000000000000010a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfeaee6e1ec8d49668f0a9b74e6bf0884d494488654d2aabf011125ef453336b6e4c34a26c478a88eaa9a1f1e5b036fcde785f13f07bacf4f3dace2608f7560b" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + }, + { + "name": "enrolment_not_reported", + "about": "a report listing another digest for an enrolment", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200000000000000000000000000000000000000000000000000000000000000002749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a03000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000500000000000000f0b78c614362dfef181ec95958358ce8ce1dba1211f0deb77f86f8dbec460460f7e4864031ad1e96c298f9e56e02a3fb4248a32b71a8997d49652981b07a170c", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + }, + { + "name": "totals_mismatch", + "about": "totals stating one session more than the node lines", + "bundle": { + "kind": "wai-fleet-bundle", + "report": "5746523101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d00406cd8e95d060000a043f6fd5d060008000000028070e1923387154875aacbeb894c20dc919c95dd4128758b5d47df86652c4a2102c3193ab4736af61acb0b4177aa6ec8fa8ee0924b3f727e9f21eb20b9dc72ef2d0a7208451edbef2343d78ca3782ab94a14c28512393a4d6dc3a9fb36dc7b3fe2360a89b0d43429afdb0e6a44e419f80dc6937a8181f7617fab39282e984bac5b07650aa5695b6be10e8d6aac23d2074f175521828e6b48d7a937194b6a8748fcde92690aaff0dfb8ab39b15c099a6bc928151185c3bfb08573ce28c5f3950c244ab67aff0ad84ca82555348edaf330fa322558c3c517f94d06c3d79d4432b96365d1bbbd290b2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72300ab66502072d63bf9d1f0c03d27237a1a303bec4ac4090961164cca5cf189c2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e99782800aaa5ae2016d654cf5021cf9792ca699624c7c7b280ba71c839767b71a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c121b352e075220564c746bdf5cb4f3ebe4639d9af335d350c5d921259edf2a6ca03000a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b720102000000000000000100000000000000008e8f000000000080738900000000000000000000000000c08d8e000000000001000000401041000000000074315a00000000000102040100000000c3180100000000204e0000030000000000000004000000503137075e46281d60036447d63f571face8a2100d25e4342396cd119da24dbb2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010100000000000000010000000000000000000000000000008097830000000000c08d8e000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000007d890407c57229a16d387d4e1f895427132f7e35364c681ef0d761bab03429d8a693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c10200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000c843120000000000e0040700000000000102040100000080de800200000000983a0000000000000000000001000000761bc31efe8e78954606e85991e45684cd7db26cd92a15470cf1441df13ea83301002c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa00406cd8e95d0600020000000700000000000000d882550900000000085453000000000054366100000000000102040200000080a1990300000000204e000000000000000000000300000063f0d96af203b1b5a6d807a8472a51ce360eb22b56ba45758c38c5ae1095d42a04000000000000000200000000000000008e8f0000000000000b0d0100000000c08d8e0000000000c08d8e000000000002000000085453000000000054366100000000000102040200000080a1990300000000204e00000500000000000000741ceaf43ad3b0019f84c140d11b2c65f6c53ce8f8318b9e731c0768e3c191775c080c8aea3fa857a24e186156de9b8d5d03ffe5d388ce1758e06f36f302ef03", + "enrolments": [ + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72010080d1e13d5b0600ffffffffffffffff04686f6d658f57344ca72f59a4020d6b8f16274e68adcc4e2776e614c304d1a082291bb6eccb8cf80a82927adeb66082112b5c620e07812bce5a784c9febe4a0cf9f18160a", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41d2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e010080d1e13d5b0600ffffffffffffffff04656467657b40e27d458cac363bed9c53b964ef22399a83a472c21b121e5e10dffedf4e60212dfc562044782fafe06b51da355e810700f9c6a3ef8569bde145130a22830c", + "5746453101ffca9ab181508e451770c07f8291e70d8db61e112095ded59093bcf49e62c41da693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020080d1e13d5b0600ffffffffffffffff0a636f6d706f7369746f72417a72264b53bfda9ea9621353cf1f13dc9d077ab82702b02aca9311329c212c64a6de75feae2a00dfc2ad168b1574e6d47222df54e0667b221aec0dc5b77407" + ], + "records": [ + { + "kind": "descriptor", + "descriptor": "5752443101d6b5a6849f61a8bbd9d4db526a9fc1c73ef949590cdcd9b0b65ce6375262d9bd0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7200406cd8e95d060040420f0000000000170068747470733a2f2f6c6573736f6e732e6578616d706c651000000004002c0100005745503101fe1f0000000000000000000000000000000000000000000000000000000000000004f4013200000040420f00000000000100000040420f000000000004086469726563746f720101020b1a0f00000000000000000000000000000000000000000000000000000000000009706572666f726d65720301020018110000000000000000000000000000000000000000000000000000000000000861756469656e63650001010018000000000000000000000000000000000000000000000000000000000000000a636f6d706f7369746f720201020402000000000000000000000000000000000000000000000000000000000000000004067370656563680101046f707573000001000000000000100000004000000080bb0000010f056d757369630101046f70757300000100000000000080000000fe01000080bb000002000b63616d6572612d3130383002020d617630312e302e30384d2e30380b617663312e363430303238010003800268011e0096000000f40100000005d0021e00f4010000dc050000800738041e00dc050000a00f00000000000000000a63616d6572612d37323002020d617630312e302e30354d2e30380b617663312e363430303146010002800268011e0096000000f40100000005d0021e00f4010000dc05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011e00d0070000f401000002444546527d2038c499b62ca152978601e0dfa4f2e1c5b15e1ef68449ca33b1d6dcd497037e6ce23ed0aa7b849df375b2e89955d6119b4a878fd20be449be1312c6534501" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b7201000000000000000000366e010000000000c31801000000000400004e2000000000016e360001110001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939023a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d02d80e00000000000000470900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f011700000000000000e0040700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f0242000000000000004024140000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b6030000000000007094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366502d80e000000000000c05102000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db013a0200000000000040ca22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019d7a22d6b2f60ddeaf9f0b43a147004709d988a73527b65d08e0ea6372f910db023a0200000000000040ca2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c2c18a1d4c5f9a784336c16e2755ec99f12ba6990cacb81cb23f94aa048d6034013a02000000000000485904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000011600000000000000781e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000002cd000000000000003cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001720000000000000098850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000002580000000000000020670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007000000c0f5220400000000801b680100000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001856620200000000f00000000000000008000000a6c37ecf5177e5e8d350fcc7c97ae32f9046bf15337e07d97453cd8dc79f4aa36d8d6332a0f2a20836f88a057863237aabd71abb0b5f41b8fed92fbbf04d851f567827e521b3ea570cdb126bc2c44e7940eb33690b8244e00abee459e82a8302", + "ledger": "0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000002000000000000000000000018600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018566202000000000c2a9846621d91f9309170b29b95e158e278002ce4cc03a2d097917836a391c0ffffffffffffffffffffffffffffffff000000010000000000000000000000d0870c0000000000a087630100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dde44606fd8377d9fa0809b2b36b708de3e6119d8c1c3d1f0d675917c28c6198096980000000000ffffffffffffffff000000010000000000000000000000709d0b0000000000607a60010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000e004070000000000c8431200000000000000000000000000801b6801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cf4a5892c8a1bef2afba730a4ec868d0830f9355d10f540b757205945c588cb5ffffffffffffffffffffffffffffffff000000010000002c720200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1ee853e5c092553edc99a0cc2468a7307afd83533a3a34f401b0695da343314ffffffffffffffffffffffffffffffff0000000100000020e53600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d436e9616073a533831cfbec646020b5d4dcc9d1df4b792ccaff6e7e23ee686affffffffffffffffffffffffffffffff0000000100000014b400000000000084e022000000000000000000000000000000000000000000801b680100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e433cf0201e9b443d808e4406925b6a4a90e9963c6235c742a0ecec87a59e478ffffffffffffffff6400000000000000455552010000000000000000000000d0870c0000000000c0f35e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "hop", + "record": "574d4831012c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaaa693d88d083f28b47f2645ed8b2cff1c4c564f4dbef3f273acf037d6375060c1020000000000000000801b68010000000080de8002000000000400003a9800000000016e360001050001025980e26a212cf4c098b0f8a1a36a15333c6975497e60c073b9cd8242943b4c01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001159614c2c42bc1b1258aee7faf878dcc0ae9505962d2efde8ce5b156a44f5939013a02000000000000d80b0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001313ea2ca301a5e17a28cb2d4b11014eaed6c09c8bb27b777993c556d712aa84d01b603000000000000c0510200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001540adcb6a36dc21f91576d7d44c1a247caa4f09cd659376e20820bd77215fc1f021700000000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000195ab21fa90d692e9fe90bade8cd132b0d17d75f25efa1fab73239d188617366501b60300000000000070940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b2083f6a8d3e1c901b93bfb87f5ffe83344214430e91d08f4e422c5ac7f0c0869f25a4e826f34f770f8f63bcea36ec697bbc398f81c06aa8ad11bb1f7a33323de1911cf31bd046195483ef8a8b22a5778adb66cfde02d9e8f8e46360a5577b06", + "ledger": "b9091845dcf9a7fc8e2a12e1e1b2f986888b33fb22f1b42b384cdf47ecfc33a0ffffffffffffffffffffffffffffffff00000001000000c843120000000000e004070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":1,\"transport\":\"quic\",\"remote\":\"203.0.113.10:50112\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1920,\"object_bytes_received\":9408000,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1200,\"object_bytes_received\":192000,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":720,\"object_bytes_received\":9216000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{}}},\"signature\":\"541dacb9d3095870e2c8e336132e88d3b409d0cfa781492c983a281a160140f7542f3a14ca0257371377b2ce3049875f4b84e2b66244b8cae985f29773a99802\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":2,\"transport\":\"webtransport\",\"remote\":\"198.51.100.23:61004\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108801000,\"closed_unix_ms\":1792108823000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":9024110,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":30,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":30,\"fetch_bytes\":384000,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108801000000,\"to_unix_us\":1792108823000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"1910347bac20c3b15fbc6b3875a1cd96c4a2e97ead5a2360958e947031a3129e15347c6745ac283d0f6bfe2b7d3c3f2077b4bba2275846e413acaaedddf24f03\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\",\"session\":3,\"transport\":\"quic\",\"remote\":\"192.0.2.44:4433\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1905,\"object_bytes_forwarded\":9342400,\"wire_bytes_sent\":9359545,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1190,\"object_bytes_forwarded\":190400,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":715,\"object_bytes_forwarded\":9152000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{},\"peer\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\"}},\"signature\":\"7dcd62ff3443a1fa7ee4751ce6a3fc8ce005153ac161c98c3e574919ce27647f594caeb3873da0a5289fb0cadca2ffab62c21b8a383ff003a825794e0db7ca0d\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":1,\"transport\":\"websocket\",\"remote\":\"198.51.100.7:443\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108800400,\"closed_unix_ms\":1792108824600,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":0,\"object_bytes_forwarded\":0,\"wire_bytes_sent\":0,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{},\"layer_spans\":[]},\"publisher\":{\"objects_received\":1905,\"object_bytes_received\":9342400,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_received\":1190,\"object_bytes_received\":190400,\"refused_at_door\":0,\"deduplicated\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_received\":715,\"object_bytes_received\":9152000,\"refused_at_door\":0,\"deduplicated\":0}}},\"publisher_signed\":{},\"peer\":\"0a29cf514deebfd5ca029b1d658b198bade764af98e09848c6fd53b129678b72\"}},\"signature\":\"82b080feffcb6b08883d60843deaa59f931aef178766d4041acea1b12a4960ec1a32d8ab5e690fc883ca2ab872e6fadc2c9c86fb7ee604e3a27cddca62155b04\"}" + }, + { + "kind": "summary", + "line": "{\"summary\":{\"format\":\"joule-moq-relay/session-summary/2\",\"relay_key\":\"2749a712721f837a55d69be1930944259984ff7010b81411e97ef846bccf270e\",\"session\":2,\"transport\":\"quic\",\"remote\":\"203.0.113.81:53311\",\"draft\":\"moqt-22\",\"opened_unix_ms\":1792108802000,\"closed_unix_ms\":1792108824000,\"close_code\":0,\"relay_energy\":{\"acquisition\":\"unmetered\",\"joules_micro\":0},\"tally\":{\"subscriber\":{\"objects_forwarded\":1760,\"object_bytes_forwarded\":8624000,\"wire_bytes_sent\":8639840,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"fetch_objects\":0,\"undelivered_at_close\":0,\"tracks\":{\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-audio--0\":{\"objects_forwarded\":1100,\"object_bytes_forwarded\":176000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0},\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa-44cc05c39bda6ad17291f9c4783c35c176dde33d910328e9a9af275dfac06c8f-video--0\":{\"objects_forwarded\":660,\"object_bytes_forwarded\":8448000,\"dropped_delivery_timeout\":0,\"dropped_receipts_track_subscribed\":0,\"subgroups_reset_after_fin\":0,\"fetch_objects\":0,\"fetch_bytes\":0,\"undelivered_at_close\":0,\"incremental_objects\":0,\"dvr_objects\":0,\"dvr_bytes\":0}},\"layer_spans\":[{\"room\":\"2c3f0f62be557631417a492ef4abb5499bf32c6c980dbc9c0539769ecc2bcaaa\",\"class\":0,\"from_unix_us\":1792108802000000,\"to_unix_us\":1792108824000000}]},\"publisher\":{\"objects_received\":0,\"object_bytes_received\":0,\"refused_at_door\":0,\"deduplicated\":0,\"tracks\":{}},\"publisher_signed\":{}}},\"signature\":\"b4ef507aae3776060f136f7ee6709063dbdb26f1abe570895552a5f9b97cfa3b6a4096ed5b2260315ab002771e3dc27839d3fae4762312dcfa2a1a2b5c32a10a\"}" + } + ] + }, + "outcome": { + "outcome": "refuse", + "reason": "report_mismatch", + "at": [ + "report" + ] + } + } + ] +} diff --git a/wai/live-conformance/fleet_verify.py b/wai/live-conformance/fleet_verify.py new file mode 100644 index 000000000..4959d298b --- /dev/null +++ b/wai/live-conformance/fleet_verify.py @@ -0,0 +1,850 @@ +#!/usr/bin/env python3 +"""Independent verifier of the fleet corpus (extensions/fleet.md). + +Written from the extension's text. It shares no code with wai-rs, which generates the corpus, +and never runs it. It checks Ed25519 signatures with ../claim-conformance/_ed25519.py, WAI's +strict rule (SPEC §7 *Signatures*) written from RFC 8032 with the standard library, and reads +per-hop records and their ledgers with live_metering_verify.py, the second implementation of +live metering, written from that text alone (§4.3). Everything else is here: + +- the enrolment (§3): reading, rules, signature; +- the records and their carriage (§4.1): the relay's summary line and its text read strictly + (§4.2), the room descriptor as far as the fleet reads it (§4.4); +- placement in time and enrolment (§4.5), and one thing once (§4.6); +- the report (§6): reading, rules, signature; +- every line, row, unmetered count and citation recomputed (§5), compared in §7.2 step 6's + order, and the outcome of §7.3. + +For every vector it requires the outcome the corpus states; of the corpus, that every reason of +§10 and every code it reuses appears in it and that no other file is there. Then it mutates +copies of the corpus, one defect each, and requires every copy to fail; and it drops each of its +own checks in turn and requires the corpus to catch the weakened verifier. + + python3 -I fleet_verify.py + python3 -I fleet_verify.py --bundle + +Exit status 0 only if every vector verifies, every mutated copy fails and every weakened verifier +fails. Python 3.8 or later; standard library only. +""" + +import copy +import hashlib +import json +import os +import re +import struct +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, HERE) +sys.path.insert(0, os.path.join(HERE, "..", "claim-conformance")) +import _ed25519 as ED # noqa: E402 +import live_metering_verify as LMV # noqa: E402 + +EXTENSION = os.path.join(HERE, "..", "extensions", "fleet.md") + +ENROL_MAGIC, REPORT_MAGIC, DESCRIPTOR_MAGIC = b"WFE1", b"WFR1", b"WRD1" # §3.1, §6.1, §4.4 +ENROL_DOMAIN = b"wai:fleet-enrol\x01" # §3.2 +REPORT_DOMAIN = b"wai:fleet-report\x01" # §6.3 +CITES_DOMAIN = b"wai:fleet-cites\x01" # §5.5 +SUMMARY_DOMAIN = b"joule-moq-relay:session-summary\x01" # §4.2 +DESCRIPTOR_DOMAIN = b"wai:live-room\x01" # §4.4 +SUMMARY_FORMAT = "joule-moq-relay/session-summary/2" +LINE_HEAD, LINE_SIG, LINE_TAIL = b'{"summary":', b',"signature":"', b'"}' +BUNDLE_KIND = "wai-fleet-bundle" # §7.1 +HOP, SUMMARY, DESCRIPTOR = 2, 10, 11 # §4.1 +ROLES = {1: "relay", 2: "compositor", 3: "ingest", 4: "room", 5: "ledger", 6: "audit"} # §2 +LABELS = {2: "ModelBased", 3: "Estimator", 4: "OnChipCounter", 5: "CalibratedInstrument"} +SCOPES = {1: "sessions", 2: "hops"} +U64, U32, U16 = 2 ** 64 - 1, 2 ** 32 - 1, 2 ** 16 - 1 +HEX = re.compile(r"\A(?:[0-9a-f]{2})*\Z") + +SKIP = set() + + +class Refuse(Exception): + def __init__(self, reason, at=None): + super().__init__(reason) + self.reason, self.at = reason, at + + +def sha(*parts): + h = hashlib.sha256() + for p in parts: + h.update(p) + return h.digest() + + +_VERIFIED = {} + + +def ed_verify(key, msg, sig): + """ED.verify, remembered: the corpus is verified many times over (its mutated copies and its + weakened verifiers), and a signature's verdict depends on its bytes alone.""" + k = (key, sha(msg), sig) + if k not in _VERIFIED: + _VERIFIED[k] = ED.verify(key, msg, sig) + return _VERIFIED[k] + + +def check_sig(name, key, domain, body, sig): + """SPEC §7 *Signatures*: bad_key or bad_signature.""" + if name in SKIP: + return + bad = ed_verify(key, domain + body, sig) + if bad: + raise Refuse(bad) + + +class R: + """A cursor; running out is `truncated`.""" + + def __init__(self, b, p=0): + self.b, self.p = b, p + + def take(self, n): + if self.p + n > len(self.b): + raise Refuse("truncated") + s = self.b[self.p:self.p + n] + self.p += n + return s + + def u8(self): + return self.take(1)[0] + + def u16(self): + return struct.unpack("= 64: + return False + if isinstance(v, dict): + return all(isinstance(k, str) for k in v) and all(depth_ok(x, d + 1) for x in v.values()) + if isinstance(v, list): + return all(depth_ok(x, d + 1) for x in v) + return True + + +def surrogate_free(v): + if isinstance(v, str): + return not any(0xD800 <= ord(c) <= 0xDFFF for c in v) + if isinstance(v, dict): + return all(surrogate_free(k) and surrogate_free(x) for k, x in v.items()) + if isinstance(v, list): + return all(surrogate_free(x) for x in v) + return True + + +def strict_json(b): + """§4.2: one JSON text read strictly, or Refuse("malformed").""" + try: + text = b.decode("utf-8") + v = json.loads(text, object_pairs_hook=no_duplicates, parse_constant=no_constant, + parse_int=lambda s: Int(s) if not s.startswith("-") else NotInt(s), parse_float=NotInt) + except (UnicodeDecodeError, ValueError, RecursionError): + raise Refuse("malformed") + if not depth_ok(v) or not surrogate_free(v): + raise Refuse("malformed") + return v + + +def integer(o, k): + v = o.get(k) if isinstance(o, dict) else None + if not isinstance(v, Int) or int(v) > U64: + raise Refuse("malformed") + return int(v) + + +def key_hex(v): + if not isinstance(v, str) or len(v) != 64 or not HEX.match(v): + raise Refuse("malformed") + return bytes.fromhex(v) + + +def obj(v): + if not isinstance(v, dict): + raise Refuse("malformed") + return v + + +def split_line(line): + """§4.2: a summary's text and its signature, from its line in the relay's form.""" + b = line.encode("utf-8") if isinstance(line, str) else None + if b is None: + raise Refuse("malformed") + if "summary-form" in SKIP: + b = b.rstrip() + sig_len = len(LINE_SIG) + 128 + if not (b.startswith(LINE_HEAD) and b.endswith(LINE_TAIL)) or len(b) < len(LINE_HEAD) + sig_len + len(LINE_TAIL): + raise Refuse("malformed") + tail = b[len(b) - len(LINE_TAIL) - sig_len:len(b) - len(LINE_TAIL)] + if not tail.startswith(LINE_SIG) or not HEX.match(tail[len(LINE_SIG):].decode("latin-1")): + raise Refuse("malformed") + return b[len(LINE_HEAD):len(b) - len(LINE_TAIL) - sig_len], bytes.fromhex(tail[len(LINE_SIG):].decode("ascii")) + + +def read_summary(line): + """§4.2: the line, the text, its members in the table's order, then its energy, its rules and + its signature.""" + text, sig = split_line(line) + s = obj(strict_json(text)) + if not isinstance(s.get("format"), str): + raise Refuse("malformed") + if s["format"] != SUMMARY_FORMAT and "summary-format" not in SKIP: + raise Refuse("unknown_version") + x = {"kind": SUMMARY, "relay": key_hex(s.get("relay_key")), "session": integer(s, "session"), + "opened": integer(s, "opened_unix_ms"), "closed": integer(s, "closed_unix_ms")} + energy = obj(s.get("relay_energy")) + if not isinstance(energy.get("acquisition"), str): + raise Refuse("malformed") + acquisition, joules = energy["acquisition"], integer(energy, "joules_micro") + tally = obj(s.get("tally")) + x["peer"] = key_hex(tally["peer"]) if "peer" in tally else None + x["bytes_in"] = integer(obj(tally.get("publisher")), "object_bytes_received") + sub = obj(tally.get("subscriber")) + forwarded = integer(sub, "object_bytes_forwarded") + fetched = 0 + for t in obj(sub.get("tracks")).values(): + fetched += integer(t, "fetch_bytes") if "fetch_bytes" in obj(t) else 0 + two = len(energy) == 2 + if acquisition == "unmetered" and joules == 0 and two: + x["figure"] = None + elif acquisition in ("ModelBased", "Estimator") and joules > 0 and two: + x["figure"] = (2 if acquisition == "ModelBased" else 3, joules, 0) + elif "summary-energy" in SKIP: + x["figure"] = None + else: + raise Refuse("energy_invalid") + x["bytes_out"] = forwarded + fetched + if (x["opened"] > x["closed"] or x["closed"] * 1000 > U64 or x["bytes_out"] > U64) and "summary-rules" not in SKIP: + raise Refuse("record_invalid") + check_sig("summary-signature", x["relay"], SUMMARY_DOMAIN, text, sig) + x["id"] = sha(text) + x["signer"] = x["relay"] + return x + + +_HOPS = {} + + +def lmv_read(rec, led): + """live_metering_verify.py's reading of a record and its ledger, remembered by their bytes: the + reason it refuses them, or what it reads.""" + if (rec, led) not in _HOPS: + try: + _HOPS[rec, led] = (None, LMV.read_hop(rec, rec[5:37]), LMV.read_ledger(led)) + except LMV.Refuse as e: + _HOPS[rec, led] = (e.reason, None, None) + return _HOPS[rec, led] + + +def read_hop(rec, led): + """§4.3: live metering's reading of the record and its ledger, and the ledger's binding.""" + reason, h, entries = lmv_read(rec, led) + if reason: + raise Refuse(reason) + if (len(entries) != h["grants"] or LMV.ledger_root(entries) != h["ledger"]) and "ledger-binding" not in SKIP: + raise Refuse("ledger_mismatch") + cls = h["class"] + figure = None if cls is None else (cls[0], h["joules"], cls[1] if cls[0] in (4, 5) else 0) + return {"kind": HOP, "id": h["digest"], "signer": h["hop"], "room": h["room"], "role": h["role"], "start": h["start"], + "end": h["end"], "figure": figure, "sessions": h["sessions"], "sub": sum(h["sub"]), + "bytes_in": sum(e["bytes"] for e in h["tracks"] if e["dir"] == 1), + "bytes_out": sum(e["bytes"] for e in h["tracks"] if e["dir"] == 2)} + + +def read_descriptor(b): + """§4.4: magic, version, authority, t0 and the signature; the digest is the room id.""" + read_head(b, DESCRIPTOR_MAGIC) + if len(b) < 77 + 64: + raise Refuse("truncated") + check_sig("descriptor-signature", b[5:37], DESCRIPTOR_DOMAIN, b[:-64], b[-64:]) + return {"kind": DESCRIPTOR, "id": sha(b[:-64]), "t0": struct.unpack(" 0 and (x["tag"] >= 4 or x["max_ppm"] == 0) + for x in bl["rows"]) + and (not room or (all(x["scope"] != 1 for x in bl["rows"]) and bl["unmetered"][0] == 0))) + + +def read_report(b): + """§6.4: the report, read, its rules, its signature.""" + read_head(b, REPORT_MAGIC) + r = R(b, 5) + rep = {"organisation": r.take(32), "start": r.u64(), "end": r.u64()} + rep["records"] = [(r.u8(), r.take(32)) for _ in range(r.u32())] + rep["enrolments"] = [(r.take(32), r.take(32)) for _ in range(r.u16())] + nodes = [] + for _ in range(r.u16()): + l = {"node": r.take(32), "role": r.u8()} + for k in ("sessions", "links", "bytes_in", "bytes_out", "link_bytes_in", "link_bytes_out"): + l[k] = r.u64() + l["hops"], l["hop_bytes_in"], l["hop_bytes_out"] = r.u32(), r.u64(), r.u64() + l["energy"], l["cited"], l["cites"] = read_block(r), r.u32(), r.take(32) + nodes.append(l) + rooms = [] + for _ in range(r.u16()): + l = {"room": r.take(32), "t0": r.u64(), "hops": r.u32()} + for k in ("sessions", "subscriber_us", "bytes_in", "bytes_out"): + l[k] = r.u64() + l["energy"], l["cited"], l["cites"] = read_block(r), r.u32(), r.take(32) + rooms.append(l) + t = {} + for k in ("sessions", "links", "bytes_in", "bytes_out", "link_bytes_in", "link_bytes_out"): + t[k] = r.u64() + t["hops"], t["hop_bytes_in"], t["hop_bytes_out"] = r.u32(), r.u64(), r.u64() + t["energy"] = read_block(r) + sig = r.take(64) + if r.p != len(b): + raise Refuse("malformed") + rep["nodes"], rep["rooms"], rep["totals"] = nodes, rooms, t + blocks = [l["energy"] for l in nodes + rooms] + [t["energy"]] + if any(x["tag"] == 0 for bl in blocks for x in bl["rows"]) and "row-of-no-class" not in SKIP: + raise Refuse("classes_summed") + asc = lambda xs: all(a < b for a, b in zip(xs, xs[1:])) # noqa: E731 + rules = (rep["start"] < rep["end"] and asc(rep["records"]) and all(k in (HOP, SUMMARY, DESCRIPTOR) for k, _ in rep["records"]) + and asc([n for n, _ in rep["enrolments"]]) and asc([l["node"] for l in nodes]) + and all(1 <= l["role"] <= 6 and block_ok(l["energy"], False) for l in nodes) + and asc([l["room"] for l in rooms]) and all(block_ok(l["energy"], True) for l in rooms) + and block_ok(t["energy"], False)) + if not rules and "report-rules" not in SKIP: + raise Refuse("report_invalid") + check_sig("report-signature", rep["organisation"], REPORT_DOMAIN, b[:-64], sig) + rep["digest"] = sha(b[:-64]) + return rep + + +# ---------------------------------------------------------------- §5 the figures + +class Line: + """A line's sums, before they are stated.""" + + def __init__(self): + self.n = [0] * 9 + self.rows = {} # (scope, tag) -> [figures, joules, max_ppm] + self.unmetered = [0, 0] + self.cites = set() + self.role, self.t0 = 0, 0 + + def add(self, scope, figure): + if figure is None: + self.unmetered[scope - 1] += 1 + return + tag, joules, ppm = figure + row = self.rows.setdefault((scope, tag), [0, 0, 0]) + row[0] += 1 + row[1] += joules + if tag >= 4: + row[2] = max(row[2], ppm) + + def block(self): + rows = [{"scope": s, "tag": t, "figures": v[0], "joules": v[1], "max_ppm": v[2]} for (s, t), v in sorted(self.rows.items())] + if len(rows) > 255 or any(x["figures"] > U32 or x["joules"] > U64 for x in rows) or max(self.unmetered) > U32: + return None + return {"rows": rows, "unmetered": list(self.unmetered)} + + def class_sums(self, scope): + return {t: v[1] for (s, t), v in self.rows.items() if s == scope} + + +def cites_digest(c): + return sha(CITES_DOMAIN, b"".join(bytes([k]) + i for k, i in sorted(c))) + + +def compute(enrolments, records): + """§5: every line and the totals, from the records.""" + roles = {e["node"]: e["role"] for e in enrolments} + t0s = {x["id"]: x["t0"] for x in records if x["kind"] == DESCRIPTOR} + nodes, rooms, total = {}, {}, Line() + for x in records: + if x["kind"] == SUMMARY: + l = nodes.setdefault(x["relay"], Line()) + count, b_in, b_out = (1, 4, 5) if x["peer"] is not None else (0, 2, 3) + for y in (l, total): + y.n[count] += 1 + y.n[b_in] += x["bytes_in"] + y.n[b_out] += x["bytes_out"] + l.add(1, x["figure"]) + total.add(1, x["figure"]) + l.cites.add((SUMMARY, x["id"])) + elif x["kind"] == HOP: + l = nodes.setdefault(x["signer"], Line()) + for y in (l, total): + y.n[6] += 1 + y.n[7] += x["bytes_in"] + y.n[8] += x["bytes_out"] + l.add(2, x["figure"]) + total.add(2, x["figure"]) + l.cites.add((HOP, x["id"])) + room = rooms.setdefault(x["room"], Line()) + room.t0 = t0s.get(x["room"], 0) + for k, v in enumerate((1, x["sessions"], x["sub"], x["bytes_in"], x["bytes_out"])): + room.n[k] += v + room.add(2, x["figure"]) + room.cites |= {(HOP, x["id"]), (DESCRIPTOR, x["room"])} + for node, l in nodes.items(): + l.role = roles.get(node, 0) + return {"records": sorted((x["kind"], x["id"]) for x in records), "enrolments": sorted((e["node"], e["digest"]) for e in enrolments), + "nodes": nodes, "rooms": rooms, "total": total} + + +def stated(c): + """The lines and totals as a report states them, or None for a figure no field holds.""" + def fits(vals, top): + return all(v <= top for v in vals) + nodes = [] + for node in sorted(c["nodes"]): + x = c["nodes"][node] + bl = x.block() + if bl is None or not fits(x.n[:6] + x.n[7:9], U64) or x.n[6] > U32 or len(x.cites) > U32: + return None + nodes.append({"node": node, "role": x.role, "sessions": x.n[0], "links": x.n[1], "bytes_in": x.n[2], "bytes_out": x.n[3], + "link_bytes_in": x.n[4], "link_bytes_out": x.n[5], "hops": x.n[6], "hop_bytes_in": x.n[7], + "hop_bytes_out": x.n[8], "energy": bl, "cited": len(x.cites), "cites": cites_digest(x.cites)}) + rooms = [] + for room in sorted(c["rooms"]): + x = c["rooms"][room] + bl = x.block() + if bl is None or not fits(x.n[1:5], U64) or x.n[0] > U32 or len(x.cites) > U32: + return None + rooms.append({"room": room, "t0": x.t0, "hops": x.n[0], "sessions": x.n[1], "subscriber_us": x.n[2], "bytes_in": x.n[3], + "bytes_out": x.n[4], "energy": bl, "cited": len(x.cites), "cites": cites_digest(x.cites)}) + t = c["total"] + bl = t.block() + if bl is None or not fits(t.n[:6] + t.n[7:9], U64) or t.n[6] > U32: + return None + totals = {"sessions": t.n[0], "links": t.n[1], "bytes_in": t.n[2], "bytes_out": t.n[3], "link_bytes_in": t.n[4], + "link_bytes_out": t.n[5], "hops": t.n[6], "hop_bytes_in": t.n[7], "hop_bytes_out": t.n[8], "energy": bl} + return nodes, rooms, totals + + +def summed_across(row, sums): + """§7.2 step 6.2: a row whose joules is its class's with at least one other class's of its scope.""" + own = sums.get(row["tag"], 0) + if row["joules"] == own: + return False + others = [j for t, j in sums.items() if t != row["tag"]] + for m in range(1, 1 << len(others)): + if own + sum(j for i, j in enumerate(others) if m >> i & 1) == row["joules"]: + return True + return False + + +def compare(rep, c): + """§7.2 step 6, in its order.""" + for j, l in enumerate(rep["nodes"]): + if (l["node"] not in c["nodes"] or l["cited"] == 0) and "unsourced" not in SKIP: + raise Refuse("line_unsourced", ["report", "nodes", j]) + for j, l in enumerate(rep["rooms"]): + if (l["room"] not in c["rooms"] or l["cited"] == 0) and "unsourced" not in SKIP: + raise Refuse("line_unsourced", ["report", "rooms", j]) + blocks = [(l["energy"], c["nodes"].get(l["node"]), ["report", "nodes", j]) for j, l in enumerate(rep["nodes"])] + blocks += [(l["energy"], c["rooms"].get(l["room"]), ["report", "rooms", j]) for j, l in enumerate(rep["rooms"])] + blocks += [(rep["totals"]["energy"], c["total"], ["report", "totals"])] + blocks = [b for b in blocks if b[1] is not None] + if "summed" not in SKIP: + for bl, x, at in blocks: + if any(summed_across(row, x.class_sums(row["scope"])) for row in bl["rows"]): + raise Refuse("classes_summed", at) + if "unmetered" not in SKIP: + for bl, x, at in blocks: + if any(bl["unmetered"][s] < x.unmetered[s] for s in (0, 1)): + raise Refuse("unmetered_summed", at) + if "citations" not in SKIP: + for which, key in (("nodes", "node"), ("rooms", "room")): + for j, l in enumerate(rep[which]): + x = c[which].get(l[key]) + if x is not None and (l["cited"] != len(x.cites) or l["cites"] != cites_digest(x.cites)): + raise Refuse("citation_mismatch", ["report", which, j]) + s = stated(c) + same = s is not None and rep["records"] == c["records"] and rep["enrolments"] == c["enrolments"] \ + and rep["nodes"] == s[0] and rep["rooms"] == s[1] and rep["totals"] == s[2] + if not same and "mismatch" not in SKIP: + raise Refuse("report_mismatch", ["report"]) + + +# ---------------------------------------------------------------- §7 the bundle + +def energy_json(bl): + out = {} + for s, name in SCOPES.items(): + rows = [{"class": LABELS[x["tag"]], "figures": x["figures"], "joules_micro": x["joules"], "max_ppm": x["max_ppm"]} + for x in bl["rows"] if x["scope"] == s] + un = bl["unmetered"][s - 1] + cov = {(True, False): "whole", (True, True): "partial", (False, True): "unmetered", (False, False): "none"}[(bool(rows), un > 0)] + out[name] = {"rows": rows, "unmetered": un, "coverage": cov} + return out + + +def cites_json(c): + return [[k, i.hex()] for k, i in sorted(c)] + + +def outcome(rep, enrolments, records, c): + labels = {e["node"]: e["label"].decode("utf-8") for e in enrolments} + signed = {} + for x in records: + if x["signer"] is not None: + signed[x["signer"]] = signed.get(x["signer"], 0) + 1 + t = rep["totals"] + return { + "outcome": "accept", "digest": rep["digest"].hex(), "organisation": rep["organisation"].hex(), + "start": rep["start"], "end": rep["end"], "records": len(rep["records"]), + "enrolments": [{"node": e["node"].hex(), "role": ROLES[e["role"]], "label": labels[e["node"]], "from": e["from"], + "until": e["until"], "digest": e["digest"].hex(), "records": signed.get(e["node"], 0), + "silent": signed.get(e["node"], 0) == 0} for e in sorted(enrolments, key=lambda e: e["node"])], + "nodes": [{"node": l["node"].hex(), "label": labels.get(l["node"]), "role": ROLES.get(l["role"]), + **{k: l[k] for k in ("sessions", "links", "bytes_in", "bytes_out", "link_bytes_in", "link_bytes_out", "hops", + "hop_bytes_in", "hop_bytes_out")}, + "energy": energy_json(l["energy"]), "cites": cites_json(c["nodes"][l["node"]].cites)} for l in rep["nodes"]], + "rooms": [{"room": l["room"].hex(), **{k: l[k] for k in ("t0", "hops", "sessions", "subscriber_us", "bytes_in", "bytes_out")}, + "energy": energy_json(l["energy"]), "cites": cites_json(c["rooms"][l["room"]].cites)} for l in rep["rooms"]], + "totals": {**{k: t[k] for k in ("sessions", "links", "bytes_in", "bytes_out", "link_bytes_in", "link_bytes_out", "hops", + "hop_bytes_in", "hop_bytes_out")}, "energy": energy_json(t["energy"])}, + } + + +def verify(bundle): + """§7.2, stopping at the first refusal; the outcome of §7.3.""" + try: + return verify_steps(bundle) + except Refuse as e: + return {"outcome": "refuse", "reason": e.reason, "at": e.at} + + +def at(place): + """Run a step's reading, its refusal placed.""" + class Ctx: + def __enter__(self): + return self + + def __exit__(self, kind, e, tb): + if isinstance(e, Refuse) and e.at is None: + e.at = place + return False + return Ctx() + + +def verify_steps(b): + with at(["bundle"]): + if not isinstance(b, dict) or set(b) != {"kind", "report", "enrolments", "records"} or b["kind"] != BUNDLE_KIND: + raise Refuse("malformed") + rb = hexb(b["report"]) + if not isinstance(b["enrolments"], list) or not isinstance(b["records"], list): + raise Refuse("malformed") + eb = [hexb(e) for e in b["enrolments"]] + # 1. The report. + with at(["report"]): + rep = read_report(rb) + period = (rep["start"], rep["end"]) + # 2. Each enrolment. + enrolments = [] + for i, e in enumerate(eb): + with at(["enrolment", i]): + e = read_enrolment(e) + if e["organisation"] != rep["organisation"] and "organisation" not in SKIP: + raise Refuse("wrong_organisation") + if any(x["node"] == e["node"] for x in enrolments) and "enrolment-duplicate" not in SKIP: + raise Refuse("enrolment_duplicate") + if not (e["from"] < rep["end"] and rep["start"] < e["until"]) and "enrolment-period" not in SKIP: + raise Refuse("outside_period") + enrolments.append(e) + # 3. Each record reads and verifies. + records = [] + for i, c in enumerate(b["records"]): + with at(["record", i]): + records.append(read_record(c)) + # 4. Each summary and per-hop record is enrolled, of its role, placed, in the period and within + # its enrolment. + t0s = {x["id"]: x["t0"] for x in records if x["kind"] == DESCRIPTOR} + for i, x in enumerate(records): + if x["signer"] is not None: + with at(["record", i]): + place(x, enrolments, t0s, period) + # 5. Across records. + once(records) + # 6. The figures. + c = compute(enrolments, records) + compare(rep, c) + return outcome(rep, enrolments, records, c) + + +# ---------------------------------------------------------------- the corpus + +def check(doc, quiet=False): + """The failures: every vector whose stated outcome is not the one this verifier reaches.""" + fails = [] + for v in doc.get("vectors", []): + try: + got = verify(v["bundle"]) + except Exception as e: # a crash on a mutated copy is a failure to verify it + got = {"outcome": "crash", "error": "%s: %s" % (type(e).__name__, e)} + ok = got == v.get("outcome") + if not quiet: + what = got["outcome"] + (" %s at %s" % (got["reason"], got["at"]) if got["outcome"] == "refuse" else "") + print(("PASS" if ok else "FAIL") + " %s: %s" % (v.get("name"), what)) + if not ok: + fails.append(v.get("name")) + return fails + + +def reasons_listed(): + """§10's table, in order, and the codes its paragraph names as reused.""" + text = open(EXTENSION, encoding="utf-8").read() + start = text.index("\n## 10. Reasons") + section = text[start:text.find("\n## ", start + 1)] + added = [m.group(1) for m in re.finditer(r"^\| `([a-z_]+)` \|", section, re.M)] + reused = [r for r in re.findall(r"`([a-z_]+)`", section.split("also raises", 1)[1]) if r not in added] + return added, reused + + +def flip_hex(h, at): + b = bytearray(bytes.fromhex(h)) + b[at % len(b)] ^= 0x01 + return b.hex() + + +def mutations(doc): + """Copies of the corpus, one defect each, that a verifier must reject.""" + out = [] + + def copy_with(name, k, edit): + m = copy.deepcopy(doc) + edit(m["vectors"][k]) + out.append(("%s: %s" % (doc["vectors"][k]["name"], name), m)) + + for k, v in enumerate(doc["vectors"]): + if v["outcome"]["outcome"] != "accept": + continue + b = v["bundle"] + for at_ in (6, 50, -100, -1): + copy_with("report byte %d flipped" % at_, k, lambda x, a=at_: x["bundle"].__setitem__("report", flip_hex(b["report"], a))) + if b["enrolments"]: + copy_with("an enrolment's byte flipped", k, lambda x: x["bundle"]["enrolments"].__setitem__(0, flip_hex(b["enrolments"][0], 70))) + copy_with("its last enrolment dropped", k, lambda x: x["bundle"]["enrolments"].pop()) + for i, r in enumerate(b["records"]): + if r["kind"] == "summary": + copy_with("record %d's line changed by a digit" % i, k, + lambda x, i=i: x["bundle"]["records"][i].__setitem__("line", re.sub(r'"session":(\d)', lambda m: '"session":%d' % ((int(m.group(1)) + 1) % 10), b["records"][i]["line"], count=1))) + elif r["kind"] == "hop": + copy_with("record %d's byte flipped" % i, k, lambda x, i=i: x["bundle"]["records"][i].__setitem__("record", flip_hex(b["records"][i]["record"], 120))) + if b["records"]: + copy_with("its last record dropped", k, lambda x: x["bundle"]["records"].pop()) + copy_with("its first record given twice", k, lambda x: x["bundle"]["records"].append(b["records"][0])) + o = v["outcome"] + copy_with("its stated totals' bytes in raised", k, lambda x: x["outcome"]["totals"].__setitem__("bytes_in", o["totals"]["bytes_in"] + 1)) + copy_with("its stated hops' coverage changed", k, lambda x: x["outcome"]["totals"]["energy"]["hops"].__setitem__( + "coverage", "whole" if o["totals"]["energy"]["hops"]["coverage"] != "whole" else "partial")) + copy_with("its stated sessions' unmetered figures set to zero", k, lambda x: x["outcome"]["totals"]["energy"]["sessions"].__setitem__( + "unmetered", 0 if o["totals"]["energy"]["sessions"]["unmetered"] else 1)) + if o["enrolments"]: + copy_with("an enrolment stated silent the other way", k, lambda x: x["outcome"]["enrolments"][0].__setitem__("silent", not o["enrolments"][0]["silent"])) + if o["nodes"]: + copy_with("its first node line's citations dropped", k, lambda x: x["outcome"]["nodes"][0].__setitem__("cites", [])) + for k, v in enumerate(doc["vectors"]): + if v["outcome"]["outcome"] == "refuse": + r = v["outcome"]["reason"] + copy_with("its stated reason changed", k, lambda x, r=r: x["outcome"].__setitem__("reason", "report_mismatch" if r != "report_mismatch" else "malformed")) + copy_with("its stated place changed", k, lambda x: x["outcome"].__setitem__("at", ["bundle"] if x["outcome"]["at"] != ["bundle"] else ["report"])) + return out + + +CHECKS = ["report-signature", "enrolment-signature", "summary-signature", "descriptor-signature", "report-rules", "row-of-no-class", + "enrolment-rules", "organisation", "enrolment-duplicate", "enrolment-period", "summary-form", "summary-duplicates", + "summary-format", "summary-energy", "summary-rules", "ledger-binding", "enrolled", "role", "descriptor", "period", + "enrolment-window", "duplicate", "overlap", "unsourced", "summed", "unmetered", "citations", "mismatch"] + + +def main(corpus_dir): + doc = json.load(open(os.path.join(corpus_dir, "vectors.json"), encoding="utf-8")) + fails = check(doc) + files = sorted(os.listdir(corpus_dir)) + if files != ["README.md", "vectors.json"]: + fails.append("the corpus holds other files: %s" % files) + seen = {v["outcome"].get("reason") for v in doc["vectors"]} + added, reused = reasons_listed() + missing = [r for r in added + reused if r not in seen] + if missing: + fails.append("no vector is refused %s" % missing) + print("%s every reason of §10 and every code it reuses refuses a vector (%d added, %d reused)" + % ("PASS" if not missing else "FAIL", len(added), len(reused))) + copies = mutations(doc) + weak = [name for name, m in copies if not check(m, quiet=True)] + print("%s every mutated copy of the corpus fails (%d copies)" % ("PASS" if not weak else "FAIL", len(copies))) + fails += ["the mutated copy %r verifies" % w for w in weak] + undetected = [] + for c in CHECKS: + SKIP.add(c) + try: + if not check(doc, quiet=True): + undetected.append(c) + finally: + SKIP.discard(c) + print("%s the corpus catches the verifier with each of its checks dropped (%d checks)" % ("PASS" if not undetected else "FAIL", len(CHECKS))) + fails += ["dropping the check %r goes unnoticed" % c for c in undetected] + for f in fails: + print("FAIL", f) + return 1 if fails else 0 + + +def check_bundle(path): + """One bundle, such as a fleet service exports with a report: its outcome, printed. Status 0 + only when it is accepted.""" + got = verify(json.load(open(path, encoding="utf-8"))) + print(json.dumps(got, indent=1)) + return 0 if got["outcome"] == "accept" else 1 + + +if __name__ == "__main__": + if len(sys.argv) == 3 and sys.argv[1] == "--bundle": + sys.exit(check_bundle(sys.argv[2])) + if len(sys.argv) != 2: + print("usage: fleet_verify.py | --bundle FILE", file=sys.stderr) + sys.exit(2) + sys.exit(main(sys.argv[1])) diff --git a/wai/wai-rs/Cargo.toml b/wai/wai-rs/Cargo.toml index 866b29228..7d596dc2d 100644 --- a/wai/wai-rs/Cargo.toml +++ b/wai/wai-rs/Cargo.toml @@ -510,6 +510,16 @@ receipt_ledger = ["live_metering", "settlement", "live_ads", "video_package", "s # per role and class; the bundle a collector verifies; and the channel report it signs and any holder # of the bundles recomputes. SHA-256, BLAKE3, Ed25519 and the modules it reads; no new dependency. stream_audit = ["settlement", "live_ads", "telemetry"] +# Fleet (extensions/fleet.md): `wai.delivery.fleet` — an organisation's nodes enrolled by their +# signing keys (WFE1: node key, role, label, span, signed by the organisation key); the records a node +# contributes as it signs them (a relay's session summaries, every hop's per-hop records with their +# ledgers, and the room descriptors that place those in time), verified and counted once; and the +# fleet report (WFR1) the organisation signs for a period: one line per node and per room with their +# sessions, bytes and energy per scope and class, never summed across either, every unmetered figure +# counted as unmetered, each line citing its records; the bundle a verifier recomputes it from. It reads +# per-hop records through live_metering and summaries through the strict JSON reader. SHA-256 and +# Ed25519; no new dependency. +fleet = ["live_metering", "ed25519"] # Native sink (extensions/native-sink.md): the core a native host's player integration runs, and its C # ABI (`ffi_sink`, header `include/wai.h`): a media playlist verified against its playlist receipt and # the chain of its live revisions (http-delivery §8.6), objects held to the content hash their names @@ -1287,6 +1297,11 @@ name = "wai_receipt_ledger_vectors" path = "src/bin/wai_receipt_ledger_vectors.rs" required-features = ["receipt_ledger"] +[[bin]] +name = "wai_fleet_vectors" +path = "src/bin/wai_fleet_vectors.rs" +required-features = ["fleet"] + [[bin]] name = "wai_stream_audit_vectors" path = "src/bin/wai_stream_audit_vectors.rs" @@ -2259,6 +2274,11 @@ name = "receipt_ledger" path = "tests/receipt_ledger.rs" required-features = ["receipt_ledger"] +[[test]] +name = "fleet" +path = "tests/fleet.rs" +required-features = ["fleet"] + [[test]] name = "stream_audit" path = "tests/stream_audit.rs" diff --git a/wai/wai-rs/src/bin/wai_fleet_vectors.rs b/wai/wai-rs/src/bin/wai_fleet_vectors.rs new file mode 100644 index 000000000..18caea357 --- /dev/null +++ b/wai/wai-rs/src/bin/wai_fleet_vectors.rs @@ -0,0 +1,67 @@ +//! Conformance corpus for the fleet (`live-conformance/fleet/`, +//! extensions/fleet.md §11). +//! +//! wai_fleet_vectors gen write vectors.json, from fixed seeds and the +//! records of the metering corpus +//! wai_fleet_vectors verify vectors.json regenerates byte for byte, and +//! every vector gets the outcome it states +//! +//! The corpus directory is `wai/live-conformance/fleet`; the metering corpus it reads is found +//! from it. The generator and this verifier are one implementation. The corpus's second +//! implementation is `live-conformance/fleet_verify.py`, written from the extension's text and +//! sharing no code with this binary. + +use std::path::{Path, PathBuf}; +use wai::fleet::corpus; + +fn wai_dir(corpus_dir: &Path) -> PathBuf { + corpus_dir.join("..").join("..") +} + +fn main() { + let a: Vec = std::env::args().collect(); + match (a.get(1).map(String::as_str), a.get(2)) { + (Some("gen"), Some(d)) => { + let p = Path::new(d).join("vectors.json"); + let text = match corpus::generate(&wai_dir(Path::new(d))) { + Ok(t) => t, + Err(e) => { + eprintln!("generate: {e}"); + std::process::exit(1); + } + }; + if let Err(e) = std::fs::create_dir_all(d).and_then(|_| std::fs::write(&p, text)) { + eprintln!("write {}: {e}", p.display()); + std::process::exit(1); + } + println!("wrote {}", p.display()); + } + (Some("verify"), Some(d)) => std::process::exit(verify(Path::new(d))), + _ => { + eprintln!("usage: wai_fleet_vectors gen|verify "); + std::process::exit(2); + } + } +} + +fn verify(dir: &Path) -> i32 { + let p = dir.join("vectors.json"); + let doc = match std::fs::read_to_string(&p) { + Ok(s) => s, + Err(e) => { + eprintln!("read {}: {e}", p.display()); + return 1; + } + }; + let mut fail = 0; + let same = corpus::generate(&wai_dir(dir)).is_ok_and(|g| g == doc); + println!("{} vectors.json regenerates byte for byte from its seeds and the metering corpus", if same { "PASS" } else { "FAIL" }); + fail += (!same) as i32; + let fails = corpus::verify(&doc); + for f in &fails { + println!("FAIL {f}"); + } + println!("{} every vector gets the outcome the corpus states", if fails.is_empty() { "PASS" } else { "FAIL" }); + fail += (!fails.is_empty()) as i32; + (fail != 0) as i32 +} diff --git a/wai/wai-rs/src/fleet.rs b/wai/wai-rs/src/fleet.rs new file mode 100644 index 000000000..016c6d03a --- /dev/null +++ b/wai/wai-rs/src/fleet.rs @@ -0,0 +1,1609 @@ +//! Fleet — `wai.delivery.fleet` ([extensions/fleet.md]). +//! +//! The nodes an organisation runs, enrolled by their signing keys, and a report of what they +//! did that anyone holding their records recomputes. The organisation signs an **enrolment** +//! (`WFE1`) for each node: its key, its role, a label and the span it holds. A node contributes +//! the records it already signs, as it signs them: a relay's session summaries +//! (`joule-moq-relay/session-summary/2`, one JSON line each) and every hop's per-hop session +//! records (`WMH1`, [`crate::live_metering`]), with the room descriptors that place those in +//! time. For a period, the organisation signs a **fleet report** (`WFR1`): one line per node and +//! one per room, with sessions, bytes and energy, each line citing its records, and the totals. +//! Energy keeps its class: one row per scope and class, never summed across either, and every +//! unmetered figure counted as unmetered. +//! +//! What this module implements, by section of the extension: +//! +//! - §3: the enrolment, its signature and rules ([`Enrolment`]); +//! - §4: the records and their carriage ([`read_record`]), the summary's line and text +//! ([`read_summary`]), the descriptor ([`read_descriptor`]), placement in time and one thing +//! once ([`Held`]); +//! - §5, §6: the figures ([`compute`]) and the report ([`Report`]); +//! - §7: the bundle and its verification ([`verify`], [`outcome_json`]). +//! +//! The reference service `wai/wai-fleet` keeps a fleet's enrolments and records with +//! [`Held`] and signs its reports with [`Held::report`]. The corpus `live-conformance/fleet/` +//! is written by [`corpus::generate`] and checked by [`corpus::verify`] here, and by +//! `live-conformance/fleet_verify.py`, which shares no code with this module. +//! +//! [extensions/fleet.md]: ../../extensions/fleet.md + +use std::collections::{BTreeMap, BTreeSet}; + +use ed25519_dalek::{Signer, SigningKey}; +use serde_json::{json, Map, Value}; +use sha2::{Digest, Sha256}; + +use crate::live_metering::{self as metering, HopRecord}; +use crate::strict_json::{self, Json}; + +pub mod corpus; + +/// The record this extension registers. +pub const CAPABILITY: &str = "wai.delivery.fleet"; +/// The enrolment's magic (§3.1). +pub const ENROLMENT_MAGIC: [u8; 4] = *b"WFE1"; +/// The report's magic (§6.1). +pub const REPORT_MAGIC: [u8; 4] = *b"WFR1"; +/// The version of both, in this revision. +pub const VERSION: u8 = 1; +/// The enrolment's signing domain (§3.2). +pub const ENROL_DOMAIN: &[u8] = b"wai:fleet-enrol\x01"; +/// The report's signing domain (§6.3). +pub const REPORT_DOMAIN: &[u8] = b"wai:fleet-report\x01"; +/// The domain of a line's citation digest (§5.5). +pub const CITES_DOMAIN: &[u8] = b"wai:fleet-cites\x01"; +/// The relay's session-summary format (§4.2). +pub const SUMMARY_FORMAT: &str = "joule-moq-relay/session-summary/2"; +/// The domain the relay's summary signature covers, before the summary's text (§4.2). +pub const SUMMARY_DOMAIN: &[u8] = b"joule-moq-relay:session-summary\x01"; +/// A summary line's first bytes (§4.2). +pub const LINE_HEAD: &str = "{\"summary\":"; +/// The bytes between a summary's text and its signature (§4.2). +pub const LINE_SIG: &str = ",\"signature\":\""; +/// A room descriptor's magic and its signing domain (live-rooms §3). +pub const DESCRIPTOR_MAGIC: [u8; 4] = *b"WRD1"; +pub const DESCRIPTOR_DOMAIN: &[u8] = b"wai:live-room\x01"; +/// The shortest descriptor the fleet reads: through `t0`, and the signature (§4.4). +pub const DESCRIPTOR_MIN: usize = 77 + 64; +/// The `kind` of a bundle (§7.1) and the suffix of a file that holds one. +pub const BUNDLE_KIND: &str = "wai-fleet-bundle"; +pub const BUNDLE_SUFFIX: &str = ".wai-fleet.json"; +/// The longest label (§3.3). +pub const MAX_LABEL: usize = 64; +/// An enrolment's `until` for a span with no end (§3.1). +pub const NO_END: u64 = u64::MAX; + +/// A record's kind (§4.1): the per-hop record's is receipt-ledger §5.2's. +pub mod kind { + pub const HOP: u8 = 2; + pub const SUMMARY: u8 = 10; + pub const DESCRIPTOR: u8 = 11; +} + +/// A node's role (§2). +pub mod role { + pub const RELAY: u8 = 1; + pub const COMPOSITOR: u8 = 2; + pub const INGEST: u8 = 3; + pub const ROOM: u8 = 4; + pub const LEDGER: u8 = 5; + pub const AUDIT: u8 = 6; + + /// A role's name, as the outcome states it; `None` for a code that is no role. + pub fn name(r: u8) -> Option<&'static str> { + Some(match r { + RELAY => "relay", + COMPOSITOR => "compositor", + INGEST => "ingest", + ROOM => "room", + LEDGER => "ledger", + AUDIT => "audit", + _ => return None, + }) + } + + /// The code of a role's name. + pub fn code(name: &str) -> Option { + (1..=6).find(|&r| self::name(r) == Some(name)) + } +} + +/// An energy figure's scope (§2): 1 a summary's, 2 a per-hop record's. +pub mod scope { + pub const SESSIONS: u8 = 1; + pub const HOPS: u8 = 2; + + pub fn name(s: u8) -> &'static str { + if s == SESSIONS { "sessions" } else { "hops" } + } +} + +// --------------------------------------------------------------------------------------- +// §10 Reasons +// --------------------------------------------------------------------------------------- + +/// Why a bundle is refused (§10). +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] +pub enum Reason { + EnrolmentInvalid, + EnrolmentDuplicate, + WrongOrganisation, + ReportInvalid, + SignerNotEnrolled, + RoleMismatch, + DescriptorMissing, + OutsideEnrolment, + LineUnsourced, + UnmeteredSummed, + ReportMismatch, + // Reused with the meaning the extension gives them (§10). + OutsidePeriod, + RecordDuplicate, + RecordOverlap, + CitationMismatch, + ClassesSummed, + EnergyInvalid, + RecordInvalid, + LedgerInvalid, + LedgerMismatch, + Truncated, + Malformed, + UnknownVersion, + BadKey, + BadSignature, +} + +impl Reason { + /// The codes this extension adds, in §10's order. + pub const ALL: [Reason; 11] = [ + Reason::EnrolmentInvalid, + Reason::EnrolmentDuplicate, + Reason::WrongOrganisation, + Reason::ReportInvalid, + Reason::SignerNotEnrolled, + Reason::RoleMismatch, + Reason::DescriptorMissing, + Reason::OutsideEnrolment, + Reason::LineUnsourced, + Reason::UnmeteredSummed, + Reason::ReportMismatch, + ]; + + /// The codes it reuses (§10). + pub const REUSED: [Reason; 14] = [ + Reason::OutsidePeriod, + Reason::RecordDuplicate, + Reason::RecordOverlap, + Reason::CitationMismatch, + Reason::ClassesSummed, + Reason::EnergyInvalid, + Reason::RecordInvalid, + Reason::LedgerInvalid, + Reason::LedgerMismatch, + Reason::Truncated, + Reason::Malformed, + Reason::UnknownVersion, + Reason::BadKey, + Reason::BadSignature, + ]; + + pub fn code(self) -> &'static str { + match self { + Reason::EnrolmentInvalid => "enrolment_invalid", + Reason::EnrolmentDuplicate => "enrolment_duplicate", + Reason::WrongOrganisation => "wrong_organisation", + Reason::ReportInvalid => "report_invalid", + Reason::SignerNotEnrolled => "signer_not_enrolled", + Reason::RoleMismatch => "role_mismatch", + Reason::DescriptorMissing => "descriptor_missing", + Reason::OutsideEnrolment => "outside_enrolment", + Reason::LineUnsourced => "line_unsourced", + Reason::UnmeteredSummed => "unmetered_summed", + Reason::ReportMismatch => "report_mismatch", + Reason::OutsidePeriod => "outside_period", + Reason::RecordDuplicate => "record_duplicate", + Reason::RecordOverlap => "record_overlap", + Reason::CitationMismatch => "citation_mismatch", + Reason::ClassesSummed => "classes_summed", + Reason::EnergyInvalid => "energy_invalid", + Reason::RecordInvalid => "record_invalid", + Reason::LedgerInvalid => "ledger_invalid", + Reason::LedgerMismatch => "ledger_mismatch", + Reason::Truncated => "truncated", + Reason::Malformed => "malformed", + Reason::UnknownVersion => "unknown_version", + Reason::BadKey => "bad_key", + Reason::BadSignature => "bad_signature", + } + } + + /// A per-hop record's refusal by live metering (§4.3), as this extension states it. + fn of_metering(r: metering::Reason) -> Reason { + match r.code() { + "truncated" => Reason::Truncated, + "unknown_version" => Reason::UnknownVersion, + "energy_invalid" => Reason::EnergyInvalid, + "record_invalid" => Reason::RecordInvalid, + "ledger_invalid" => Reason::LedgerInvalid, + "bad_key" => Reason::BadKey, + "bad_signature" => Reason::BadSignature, + _ => Reason::Malformed, + } + } +} + +impl std::fmt::Display for Reason { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.code()) + } +} + +impl std::error::Error for Reason {} + +/// Where a verification stopped (§7.2). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Place { + Bundle, + Report, + Enrolment(usize), + Record(usize), + /// A node line of the report, by its index there. + Node(usize), + /// A room line of the report, by its index there. + Room(usize), + Totals, +} + +impl Place { + pub fn json(&self) -> Value { + match *self { + Place::Bundle => json!(["bundle"]), + Place::Report => json!(["report"]), + Place::Enrolment(i) => json!(["enrolment", i]), + Place::Record(i) => json!(["record", i]), + Place::Node(i) => json!(["report", "nodes", i]), + Place::Room(i) => json!(["report", "rooms", i]), + Place::Totals => json!(["report", "totals"]), + } + } +} + +/// A refusal: the reason and where. +pub type Refusal = (Reason, Place); + +// --------------------------------------------------------------------------------------- +// Bytes +// --------------------------------------------------------------------------------------- + +fn sha256(parts: &[&[u8]]) -> [u8; 32] { + let mut h = Sha256::new(); + for p in parts { + h.update(p); + } + h.finalize().into() +} + +/// Lowercase hexadecimal. +pub fn hex(b: &[u8]) -> String { + b.iter().map(|x| format!("{x:02x}")).collect() +} + +/// Lowercase hexadecimal read back: `None` for anything else, uppercase digits among it. +pub fn unhex(s: &str) -> Option> { + let b = s.as_bytes(); + if !b.len().is_multiple_of(2) { + return None; + } + let digit = |c: u8| match c { + b'0'..=b'9' => Some(c - b'0'), + b'a'..=b'f' => Some(c - b'a' + 10), + _ => None, + }; + b.chunks(2).map(|p| Some(digit(p[0])? << 4 | digit(p[1])?)).collect() +} + +fn unhex32(s: &str) -> Option<[u8; 32]> { + unhex(s)?.try_into().ok() +} + +fn sign(key: &SigningKey, domain: &[u8], body: &[u8]) -> [u8; 64] { + let mut m = domain.to_vec(); + m.extend_from_slice(body); + key.sign(&m).to_bytes() +} + +fn verify_sig(key: &[u8; 32], domain: &[u8], body: &[u8], sig: &[u8; 64]) -> Result<(), Reason> { + let mut m = domain.to_vec(); + m.extend_from_slice(body); + crate::sig::verify_strict(key, &m, sig).map_err(|e| match e { + crate::sig::SigError::BadKey => Reason::BadKey, + crate::sig::SigError::BadSignature => Reason::BadSignature, + }) +} + +/// A cursor; running out is `truncated`. +struct Rd<'a> { + b: &'a [u8], + p: usize, +} + +impl<'a> Rd<'a> { + fn take(&mut self, n: usize) -> Result<&'a [u8], Reason> { + let e = self.p.checked_add(n).filter(|&e| e <= self.b.len()).ok_or(Reason::Truncated)?; + let s = &self.b[self.p..e]; + self.p = e; + Ok(s) + } + fn u8(&mut self) -> Result { + Ok(self.take(1)?[0]) + } + fn u16(&mut self) -> Result { + Ok(u16::from_le_bytes(self.take(2)?.try_into().expect("2"))) + } + fn u32(&mut self) -> Result { + Ok(u32::from_le_bytes(self.take(4)?.try_into().expect("4"))) + } + fn u64(&mut self) -> Result { + Ok(u64::from_le_bytes(self.take(8)?.try_into().expect("8"))) + } + fn arr(&mut self) -> Result<[u8; N], Reason> { + Ok(self.take(N)?.try_into().expect("N")) + } +} + +/// live-events §3.3's first two steps, for `magic` and version 1. +fn read_head(b: &[u8], magic: &[u8; 4]) -> Result<(), Reason> { + if b.len() < 4 { + return Err(Reason::Truncated); + } + if b[..4] != magic[..] { + return Err(Reason::Malformed); + } + match b.get(4) { + None => Err(Reason::Truncated), + Some(&VERSION) => Ok(()), + Some(_) => Err(Reason::UnknownVersion), + } +} + +// --------------------------------------------------------------------------------------- +// §3 Enrolment +// --------------------------------------------------------------------------------------- + +/// An enrolment (§3.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Enrolment { + pub organisation: [u8; 32], + pub node: [u8; 32], + pub role: u8, + pub from: u64, + pub until: u64, + pub label: Vec, + pub sig: [u8; 64], +} + +impl Enrolment { + /// An unsigned enrolment. + pub fn new(organisation: [u8; 32], node: [u8; 32], role: u8, from: u64, until: u64, label: &str) -> Enrolment { + Enrolment { organisation, node, role, from, until, label: label.as_bytes().to_vec(), sig: [0; 64] } + } + + /// Its bytes before `sig`. + pub fn body(&self) -> Vec { + let mut o = Vec::with_capacity(87 + self.label.len()); + o.extend_from_slice(&ENROLMENT_MAGIC); + o.push(VERSION); + o.extend_from_slice(&self.organisation); + o.extend_from_slice(&self.node); + o.push(self.role); + o.extend_from_slice(&self.from.to_le_bytes()); + o.extend_from_slice(&self.until.to_le_bytes()); + o.push(u8::try_from(self.label.len()).expect("a label of at most 255 bytes")); + o.extend_from_slice(&self.label); + o + } + + pub fn to_bytes(&self) -> Vec { + let mut o = self.body(); + o.extend_from_slice(&self.sig); + o + } + + /// Its digest (§3.2). + pub fn digest(&self) -> [u8; 32] { + sha256(&[&self.body()]) + } + + /// Signed with `key`; `organisation` is left as it is. + pub fn sign(mut self, key: &SigningKey) -> Enrolment { + self.sig = sign(key, ENROL_DOMAIN, &self.body()); + self + } + + /// The label as text (it reads as UTF-8 in any enrolment that verifies). + pub fn label_text(&self) -> String { + String::from_utf8_lossy(&self.label).into_owned() + } + + /// Read an enrolment (§3.3): its bytes, its rules, its signature. + pub fn parse(b: &[u8]) -> Result { + read_head(b, &ENROLMENT_MAGIC)?; + let mut r = Rd { b, p: 5 }; + let (organisation, node, role) = (r.arr()?, r.arr()?, r.u8()?); + let (from, until) = (r.u64()?, r.u64()?); + let n = r.u8()? as usize; + let label = r.take(n)?.to_vec(); + let sig: [u8; 64] = r.arr()?; + if r.p != b.len() { + return Err(Reason::Malformed); + } + let label_ok = label.len() <= MAX_LABEL && std::str::from_utf8(&label).is_ok_and(|s| !s.chars().any(|c| c < '\u{20}' || c == '\u{7f}')); + if !(1..=6).contains(&role) || from >= until || !label_ok || node == organisation { + return Err(Reason::EnrolmentInvalid); + } + verify_sig(&organisation, ENROL_DOMAIN, &b[..b.len() - 64], &sig)?; + Ok(Enrolment { organisation, node, role, from, until, label, sig }) + } + + /// Whether `instant` is within the enrolment's span (§4.5). + pub fn holds(&self, instant: u64) -> bool { + self.from <= instant && instant < self.until + } +} + +// --------------------------------------------------------------------------------------- +// §4 Records +// --------------------------------------------------------------------------------------- + +/// An energy figure (§5.4). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Figure { + /// The unmetered marker: never zero joules. + Unmetered, + /// A figure of a class: its tag, microjoules, and its declared relative uncertainty in + /// parts per million (0 for the classes that declare none). + Metered { tag: u8, joules: u64, ppm: u32 }, +} + +/// A relay's session summary, read (§4.2). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Summary { + pub relay: [u8; 32], + pub session: u64, + pub opened_unix_ms: u64, + pub closed_unix_ms: u64, + pub figure: Figure, + pub peer: Option<[u8; 32]>, + pub bytes_in: u64, + pub bytes_out: u64, + pub identity: [u8; 32], +} + +/// A per-hop record and its ledger, read (§4.3). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Hop { + pub record: HopRecord, + pub identity: [u8; 32], +} + +impl Hop { + /// Its figure (§4.3). + pub fn figure(&self) -> Figure { + match &self.record.class { + None => Figure::Unmetered, + Some(c) => Figure::Metered { tag: c.tag_byte(), joules: self.record.joules, ppm: c.uncertainty().map_or(0, |u| u.relative_ppm) }, + } + } + + /// The bytes of its track entries in and out (§5.1). + pub fn bytes(&self) -> (u128, u128) { + let sum = |d: u8| self.record.tracks.iter().filter(|t| t.dir == d).map(|t| t.bytes as u128).sum(); + (sum(metering::dir::IN), sum(metering::dir::OUT)) + } +} + +/// A room descriptor, as far as the fleet reads it (§4.4). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Descriptor { + pub room: [u8; 32], + pub authority: [u8; 32], + pub t0: u64, +} + +/// A record (§4.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum Record { + Hop(Box), + Summary(Summary), + Descriptor(Descriptor), +} + +impl Record { + pub fn kind(&self) -> u8 { + match self { + Record::Hop(_) => kind::HOP, + Record::Summary(_) => kind::SUMMARY, + Record::Descriptor(_) => kind::DESCRIPTOR, + } + } + + pub fn identity(&self) -> [u8; 32] { + match self { + Record::Hop(h) => h.identity, + Record::Summary(s) => s.identity, + Record::Descriptor(d) => d.room, + } + } + + /// Its kind and identity, as a report lists it. + pub fn head(&self) -> (u8, [u8; 32]) { + (self.kind(), self.identity()) + } + + /// The node that signed it: none for a descriptor. + pub fn signer(&self) -> Option<[u8; 32]> { + match self { + Record::Hop(h) => Some(h.record.hop), + Record::Summary(s) => Some(s.relay), + Record::Descriptor(_) => None, + } + } +} + +/// Read a record from its carriage (§4.1 to §4.4): what it is, its rules, its signature. +pub fn read_record(v: &Value) -> Result { + let o = v.as_object().ok_or(Reason::Malformed)?; + let members = |names: &[&str]| o.len() == names.len() && names.iter().all(|n| o.contains_key(*n)); + let hexes = |n: &str| o.get(n).and_then(Value::as_str).and_then(unhex).ok_or(Reason::Malformed); + match o.get("kind").and_then(Value::as_str) { + Some("hop") if members(&["kind", "record", "ledger"]) => { + let (b, l) = (hexes("record")?, hexes("ledger")?); + read_hop(&b, &l).map(|h| Record::Hop(Box::new(h))) + } + Some("summary") if members(&["kind", "line"]) => read_summary(o["line"].as_str().ok_or(Reason::Malformed)?).map(Record::Summary), + Some("descriptor") if members(&["kind", "descriptor"]) => read_descriptor(&hexes("descriptor")?).map(Record::Descriptor), + _ => Err(Reason::Malformed), + } +} + +/// A per-hop record and its ledger (§4.3). +pub fn read_hop(b: &[u8], ledger: &[u8]) -> Result { + let room: [u8; 32] = b.get(5..37).map(|s| s.try_into().expect("32")).unwrap_or([0; 32]); + let record = HopRecord::parse(b, &room).map_err(Reason::of_metering)?; + let entries = metering::read_ledger(ledger).map_err(|_| Reason::LedgerInvalid)?; + if entries.len() as u64 != record.grants as u64 || metering::ledger_root(&entries) != record.ledger { + return Err(Reason::LedgerMismatch); + } + Ok(Hop { identity: record.digest(), record }) +} + +/// A room descriptor (§4.4): its head, its `authority` and `t0`, its signature. +pub fn read_descriptor(b: &[u8]) -> Result { + read_head(b, &DESCRIPTOR_MAGIC)?; + if b.len() < DESCRIPTOR_MIN { + return Err(Reason::Truncated); + } + let authority: [u8; 32] = b[5..37].try_into().expect("32"); + let t0 = u64::from_le_bytes(b[69..77].try_into().expect("8")); + let (body, sig) = b.split_at(b.len() - 64); + verify_sig(&authority, DESCRIPTOR_DOMAIN, body, sig.try_into().expect("64"))?; + Ok(Descriptor { room: sha256(&[body]), authority, t0 }) +} + +/// A summary's text, the bytes its signature covers, and its signature, from its line (§4.2). +pub fn split_line(line: &str) -> Option<(&str, [u8; 64])> { + let rest = line.strip_prefix(LINE_HEAD)?; + let rest = rest.strip_suffix("\"}")?; + let cut = rest.len().checked_sub(128 + LINE_SIG.len())?; + let (text, tail) = (rest.get(..cut)?, rest.get(cut..)?); + let sig = tail.strip_prefix(LINE_SIG)?; + Some((text, unhex(sig)?.try_into().ok()?)) +} + +fn integer(v: Option<&Json>) -> Result { + v.and_then(Json::as_u64).ok_or(Reason::Malformed) +} + +fn key_hex(v: Option<&Json>) -> Result<[u8; 32], Reason> { + v.and_then(Json::as_str).filter(|s| s.len() == 64).and_then(unhex32).ok_or(Reason::Malformed) +} + +fn object(v: Option<&Json>) -> Result<&Json, Reason> { + v.filter(|j| j.as_obj().is_some()).ok_or(Reason::Malformed) +} + +/// A relay's session summary, from one line of its summary file (§4.2). +pub fn read_summary(line: &str) -> Result { + let (text, sig) = split_line(line).ok_or(Reason::Malformed)?; + let s = strict_json::read(text.as_bytes()).map_err(|_| Reason::Malformed)?; + s.as_obj().ok_or(Reason::Malformed)?; + match s.get("format") { + Some(Json::Str(f)) if f == SUMMARY_FORMAT => {} + Some(Json::Str(_)) => return Err(Reason::UnknownVersion), + _ => return Err(Reason::Malformed), + } + let relay = key_hex(s.get("relay_key"))?; + let session = integer(s.get("session"))?; + let opened_unix_ms = integer(s.get("opened_unix_ms"))?; + let closed_unix_ms = integer(s.get("closed_unix_ms"))?; + let energy = object(s.get("relay_energy"))?; + let acquisition = energy.get("acquisition").and_then(Json::as_str).ok_or(Reason::Malformed)?; + let joules = integer(energy.get("joules_micro"))?; + let tally = object(s.get("tally"))?; + let peer = match tally.get("peer") { + None => None, + p => Some(key_hex(p)?), + }; + let publisher = object(tally.get("publisher"))?; + let bytes_in = integer(publisher.get("object_bytes_received"))?; + let subscriber = object(tally.get("subscriber"))?; + let forwarded = integer(subscriber.get("object_bytes_forwarded"))?; + let tracks = object(subscriber.get("tracks"))?.as_obj().expect("an object"); + let mut fetched: u128 = 0; + for (_, t) in tracks { + let t = object(Some(t))?; + fetched += match t.get("fetch_bytes") { + None => 0, + f => integer(f)? as u128, + }; + } + // Energy, then rules, then the signature (§4.2). + let figure = match (acquisition, joules, energy.as_obj().expect("an object").len()) { + ("unmetered", 0, 2) => Figure::Unmetered, + ("ModelBased", j, 2) if j > 0 => Figure::Metered { tag: 2, joules: j, ppm: 0 }, + ("Estimator", j, 2) if j > 0 => Figure::Metered { tag: 3, joules: j, ppm: 0 }, + _ => return Err(Reason::EnergyInvalid), + }; + let out = forwarded as u128 + fetched; + if opened_unix_ms > closed_unix_ms || closed_unix_ms.checked_mul(1000).is_none() || out > u64::MAX as u128 { + return Err(Reason::RecordInvalid); + } + verify_sig(&relay, SUMMARY_DOMAIN, text.as_bytes(), &sig)?; + Ok(Summary { relay, session, opened_unix_ms, closed_unix_ms, figure, peer, bytes_in, bytes_out: out as u64, identity: sha256(&[text.as_bytes()]) }) +} + +/// The instant of a summary or a per-hop record (§4.5), given the descriptors by room: +/// `Err(descriptor_missing)` for a per-hop record whose room has none, `Ok(None)` for one +/// that is in no period, and `Ok(None)` for a descriptor, which has no instant. +pub fn instant(r: &Record, t0s: &BTreeMap<[u8; 32], u64>) -> Result, Reason> { + match r { + Record::Summary(s) => Ok(Some(s.closed_unix_ms * 1000)), + Record::Hop(h) => { + let t0 = t0s.get(&h.record.room).ok_or(Reason::DescriptorMissing)?; + Ok(t0.checked_add(h.record.end - 1)) + } + Record::Descriptor(_) => Ok(None), + } +} + +/// §3.4: whether a role contributes a record of a kind, and a per-hop record's `role` is the +/// role's own. +fn role_admits(role: u8, r: &Record) -> bool { + match r { + Record::Summary(_) => role == role::RELAY, + Record::Hop(h) => (1..=3).contains(&role) && h.record.role == role, + Record::Descriptor(_) => true, + } +} + +/// The spans of the per-hop records held, by hop and room. +type Spans = BTreeMap<([u8; 32], [u8; 32]), Vec<(u64, u64)>>; + +/// What one record makes of the records before it (§4.6), kept as they arrive. +#[derive(Default, Clone, Debug)] +struct Seen { + heads: BTreeSet<(u8, [u8; 32])>, + sessions: BTreeSet<([u8; 32], u64, u64)>, + spans: Spans, +} + +impl Seen { + fn check(&self, r: &Record) -> Result<(), Reason> { + if self.heads.contains(&r.head()) { + return Err(Reason::RecordDuplicate); + } + match r { + Record::Summary(s) if self.sessions.contains(&(s.relay, s.session, s.opened_unix_ms)) => Err(Reason::RecordOverlap), + Record::Hop(h) => { + let x = &h.record; + let meets = self.spans.get(&(x.hop, x.room)).is_some_and(|v| v.iter().any(|&(s, e)| s < x.end && x.start < e)); + if meets { Err(Reason::RecordOverlap) } else { Ok(()) } + } + _ => Ok(()), + } + } + + fn add(&mut self, r: &Record) { + self.heads.insert(r.head()); + match r { + Record::Summary(s) => { + self.sessions.insert((s.relay, s.session, s.opened_unix_ms)); + } + Record::Hop(h) => self.spans.entry((h.record.hop, h.record.room)).or_default().push((h.record.start, h.record.end)), + Record::Descriptor(_) => {} + } + } +} + +// --------------------------------------------------------------------------------------- +// §5 The figures, §6 the report +// --------------------------------------------------------------------------------------- + +/// A row of an energy block (§6.2). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Row { + pub scope: u8, + pub tag: u8, + pub figures: u32, + pub joules: u64, + pub max_ppm: u32, +} + +/// An energy block (§6.2): the rows, then the unmetered figures of scope 1 and of scope 2. +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct Block { + pub rows: Vec, + pub unmetered: [u32; 2], +} + +impl Block { + fn encode(&self, o: &mut Vec) { + o.push(u8::try_from(self.rows.len()).expect("at most eight rows")); + for r in &self.rows { + o.push(r.scope); + o.push(r.tag); + o.extend_from_slice(&r.figures.to_le_bytes()); + o.extend_from_slice(&r.joules.to_le_bytes()); + o.extend_from_slice(&r.max_ppm.to_le_bytes()); + } + for u in self.unmetered { + o.extend_from_slice(&u.to_le_bytes()); + } + } + + fn read(r: &mut Rd) -> Result { + let n = r.u8()?; + let mut rows = Vec::with_capacity(n as usize); + for _ in 0..n { + rows.push(Row { scope: r.u8()?, tag: r.u8()?, figures: r.u32()?, joules: r.u64()?, max_ppm: r.u32()? }); + } + Ok(Block { rows, unmetered: [r.u32()?, r.u32()?] }) + } + + /// The block's rules (§6.4), `room` for a room line's. + fn rules_hold(&self, room: bool) -> bool { + self.rows.windows(2).all(|w| (w[0].scope, w[0].tag) < (w[1].scope, w[1].tag)) + && self.rows.iter().all(|r| (r.scope == 1 || r.scope == 2) && (2..=5).contains(&r.tag) && r.figures > 0 && (r.tag >= 4 || r.max_ppm == 0)) + && (!room || (self.rows.iter().all(|r| r.scope != scope::SESSIONS) && self.unmetered[0] == 0)) + } + + /// Each scope's coverage (§5.4). + pub fn coverage(&self, s: u8) -> &'static str { + let rows = self.rows.iter().any(|r| r.scope == s); + match (rows, self.unmetered[(s - 1) as usize] > 0) { + (true, false) => "whole", + (true, true) => "partial", + (false, true) => "unmetered", + (false, false) => "none", + } + } +} + +/// A node line (§6.2). +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct NodeLine { + pub node: [u8; 32], + pub role: u8, + pub sessions: u64, + pub links: u64, + pub bytes_in: u64, + pub bytes_out: u64, + pub link_bytes_in: u64, + pub link_bytes_out: u64, + pub hops: u32, + pub hop_bytes_in: u64, + pub hop_bytes_out: u64, + pub energy: Block, + pub cited: u32, + pub cites: [u8; 32], +} + +/// A room line (§6.2). +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct RoomLine { + pub room: [u8; 32], + pub t0: u64, + pub hops: u32, + pub sessions: u64, + pub subscriber_us: u64, + pub bytes_in: u64, + pub bytes_out: u64, + pub energy: Block, + pub cited: u32, + pub cites: [u8; 32], +} + +/// The totals (§6.2). +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct Totals { + pub sessions: u64, + pub links: u64, + pub bytes_in: u64, + pub bytes_out: u64, + pub link_bytes_in: u64, + pub link_bytes_out: u64, + pub hops: u32, + pub hop_bytes_in: u64, + pub hop_bytes_out: u64, + pub energy: Block, +} + +/// A fleet report (§6.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Report { + pub organisation: [u8; 32], + pub start: u64, + pub end: u64, + pub records: Vec<(u8, [u8; 32])>, + pub enrolments: Vec<([u8; 32], [u8; 32])>, + pub nodes: Vec, + pub rooms: Vec, + pub totals: Totals, + pub sig: [u8; 64], +} + +fn put(o: &mut Vec, v: &[u64]) { + for x in v { + o.extend_from_slice(&x.to_le_bytes()); + } +} + +impl Report { + /// Its bytes before `sig`. + pub fn body(&self) -> Vec { + let mut o = Vec::new(); + o.extend_from_slice(&REPORT_MAGIC); + o.push(VERSION); + o.extend_from_slice(&self.organisation); + put(&mut o, &[self.start, self.end]); + o.extend_from_slice(&u32::try_from(self.records.len()).expect("records").to_le_bytes()); + for (k, id) in &self.records { + o.push(*k); + o.extend_from_slice(id); + } + o.extend_from_slice(&u16::try_from(self.enrolments.len()).expect("enrolments").to_le_bytes()); + for (n, d) in &self.enrolments { + o.extend_from_slice(n); + o.extend_from_slice(d); + } + o.extend_from_slice(&u16::try_from(self.nodes.len()).expect("node lines").to_le_bytes()); + for l in &self.nodes { + o.extend_from_slice(&l.node); + o.push(l.role); + put(&mut o, &[l.sessions, l.links, l.bytes_in, l.bytes_out, l.link_bytes_in, l.link_bytes_out]); + o.extend_from_slice(&l.hops.to_le_bytes()); + put(&mut o, &[l.hop_bytes_in, l.hop_bytes_out]); + l.energy.encode(&mut o); + o.extend_from_slice(&l.cited.to_le_bytes()); + o.extend_from_slice(&l.cites); + } + o.extend_from_slice(&u16::try_from(self.rooms.len()).expect("room lines").to_le_bytes()); + for l in &self.rooms { + o.extend_from_slice(&l.room); + put(&mut o, &[l.t0]); + o.extend_from_slice(&l.hops.to_le_bytes()); + put(&mut o, &[l.sessions, l.subscriber_us, l.bytes_in, l.bytes_out]); + l.energy.encode(&mut o); + o.extend_from_slice(&l.cited.to_le_bytes()); + o.extend_from_slice(&l.cites); + } + let t = &self.totals; + put(&mut o, &[t.sessions, t.links, t.bytes_in, t.bytes_out, t.link_bytes_in, t.link_bytes_out]); + o.extend_from_slice(&t.hops.to_le_bytes()); + put(&mut o, &[t.hop_bytes_in, t.hop_bytes_out]); + t.energy.encode(&mut o); + o + } + + pub fn to_bytes(&self) -> Vec { + let mut o = self.body(); + o.extend_from_slice(&self.sig); + o + } + + /// Its digest (§6.3). + pub fn digest(&self) -> [u8; 32] { + sha256(&[&self.body()]) + } + + pub fn sign(mut self, key: &SigningKey) -> Report { + self.sig = sign(key, REPORT_DOMAIN, &self.body()); + self + } + + /// Read a report (§6.4): its bytes, its rules, its signature. + pub fn parse(b: &[u8]) -> Result { + read_head(b, &REPORT_MAGIC)?; + let mut r = Rd { b, p: 5 }; + let organisation = r.arr()?; + let (start, end) = (r.u64()?, r.u64()?); + let n = r.u32()? as usize; + let mut records = Vec::with_capacity(n.min(b.len() / 33)); + for _ in 0..n { + records.push((r.u8()?, r.arr()?)); + } + let n = r.u16()? as usize; + let mut enrolments = Vec::with_capacity(n); + for _ in 0..n { + enrolments.push((r.arr()?, r.arr()?)); + } + let n = r.u16()? as usize; + let mut nodes = Vec::with_capacity(n); + for _ in 0..n { + let (node, role) = (r.arr()?, r.u8()?); + let (sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out) = (r.u64()?, r.u64()?, r.u64()?, r.u64()?, r.u64()?, r.u64()?); + let hops = r.u32()?; + let (hop_bytes_in, hop_bytes_out) = (r.u64()?, r.u64()?); + let energy = Block::read(&mut r)?; + let (cited, cites) = (r.u32()?, r.arr()?); + nodes.push(NodeLine { node, role, sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out, hops, hop_bytes_in, hop_bytes_out, energy, cited, cites }); + } + let n = r.u16()? as usize; + let mut rooms = Vec::with_capacity(n); + for _ in 0..n { + let (room, t0, hops) = (r.arr()?, r.u64()?, r.u32()?); + let (sessions, subscriber_us, bytes_in, bytes_out) = (r.u64()?, r.u64()?, r.u64()?, r.u64()?); + let energy = Block::read(&mut r)?; + let (cited, cites) = (r.u32()?, r.arr()?); + rooms.push(RoomLine { room, t0, hops, sessions, subscriber_us, bytes_in, bytes_out, energy, cited, cites }); + } + let (sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out) = (r.u64()?, r.u64()?, r.u64()?, r.u64()?, r.u64()?, r.u64()?); + let hops = r.u32()?; + let (hop_bytes_in, hop_bytes_out) = (r.u64()?, r.u64()?); + let energy = Block::read(&mut r)?; + let totals = Totals { sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out, hops, hop_bytes_in, hop_bytes_out, energy }; + let sig: [u8; 64] = r.arr()?; + if r.p != b.len() { + return Err(Reason::Malformed); + } + let blocks = || nodes.iter().map(|l| &l.energy).chain(rooms.iter().map(|l| &l.energy)).chain([&totals.energy]); + if blocks().any(|bl| bl.rows.iter().any(|x| x.tag == 0)) { + return Err(Reason::ClassesSummed); + } + let rules = start < end + && records.windows(2).all(|w| w[0] < w[1]) + && records.iter().all(|(k, _)| [kind::HOP, kind::SUMMARY, kind::DESCRIPTOR].contains(k)) + && enrolments.windows(2).all(|w| w[0].0 < w[1].0) + && nodes.windows(2).all(|w| w[0].node < w[1].node) + && nodes.iter().all(|l| (1..=6).contains(&l.role) && l.energy.rules_hold(false)) + && rooms.windows(2).all(|w| w[0].room < w[1].room) + && rooms.iter().all(|l| l.energy.rules_hold(true)) + && totals.energy.rules_hold(false); + if !rules { + return Err(Reason::ReportInvalid); + } + verify_sig(&organisation, REPORT_DOMAIN, &b[..b.len() - 64], &sig)?; + Ok(Report { organisation, start, end, records, enrolments, nodes, rooms, totals, sig }) + } +} + +/// The figures of one scope and class, summed wide (§5.4). +#[derive(Clone, Copy, Debug, Default)] +struct Sum { + figures: u64, + joules: u128, + max_ppm: u32, +} + +/// An energy block being summed: rows by (scope, tag), and the unmetered figures. +#[derive(Clone, Debug, Default)] +struct Energy { + rows: BTreeMap<(u8, u8), Sum>, + unmetered: [u64; 2], +} + +impl Energy { + fn add(&mut self, s: u8, f: Figure) { + match f { + Figure::Unmetered => self.unmetered[(s - 1) as usize] += 1, + Figure::Metered { tag, joules, ppm } => { + let x = self.rows.entry((s, tag)).or_default(); + x.figures += 1; + x.joules += joules as u128; + if tag >= 4 { + x.max_ppm = x.max_ppm.max(ppm); + } + } + } + } + + /// The block, or `None` when a figure cannot be held in its field. + fn block(&self) -> Option { + let rows = self + .rows + .iter() + .map(|(&(scope, tag), x)| Some(Row { scope, tag, figures: u32::try_from(x.figures).ok()?, joules: u64::try_from(x.joules).ok()?, max_ppm: x.max_ppm })) + .collect::>>()?; + if rows.len() > 255 { + return None; + } + Some(Block { rows, unmetered: [u32::try_from(self.unmetered[0]).ok()?, u32::try_from(self.unmetered[1]).ok()?] }) + } + + /// The sum of each class's figures of a scope, wide. + fn class_sums(&self, s: u8) -> BTreeMap { + self.rows.iter().filter(|((sc, _), _)| *sc == s).map(|(&(_, t), x)| (t, x.joules)).collect() + } +} + +/// A line's sums, wide, before they are stated. +#[derive(Clone, Debug, Default)] +struct LineSum { + role: u8, + t0: u64, + n: [u128; 9], + energy: Energy, + cites: BTreeSet<(u8, [u8; 32])>, +} + +fn cites_digest(c: &BTreeSet<(u8, [u8; 32])>) -> [u8; 32] { + let mut h = Sha256::new(); + h.update(CITES_DOMAIN); + for (k, id) in c { + h.update([*k]); + h.update(id); + } + h.finalize().into() +} + +fn u64s(n: &[u128]) -> Option<[u64; N]> { + let v: Vec = n.iter().take(N).map(|&x| u64::try_from(x).ok()).collect::>()?; + v.try_into().ok() +} + +/// The figures of a report (§5), recomputed: what the lines state and the energy behind +/// them, wide, for the comparisons of §7.2 step 6. +#[derive(Clone, Debug)] +pub struct Computed { + pub records: Vec<(u8, [u8; 32])>, + pub enrolments: Vec<([u8; 32], [u8; 32])>, + node_sums: BTreeMap<[u8; 32], LineSum>, + room_sums: BTreeMap<[u8; 32], LineSum>, + total: LineSum, +} + +impl Computed { + /// The lines and totals as a report states them, or `None` when a figure cannot be held + /// in its field (§5.4). + pub fn stated(&self) -> Option<(Vec, Vec, Totals)> { + let cited = |c: &BTreeSet<_>| u32::try_from(c.len()).ok(); + let nodes = self + .node_sums + .iter() + .map(|(node, x)| { + let [sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out] = u64s::<6>(&x.n[..6])?; + let [hop_bytes_in, hop_bytes_out] = u64s::<2>(&x.n[7..9])?; + Some(NodeLine { + node: *node, + role: x.role, + sessions, + links, + bytes_in, + bytes_out, + link_bytes_in, + link_bytes_out, + hops: u32::try_from(x.n[6]).ok()?, + hop_bytes_in, + hop_bytes_out, + energy: x.energy.block()?, + cited: cited(&x.cites)?, + cites: cites_digest(&x.cites), + }) + }) + .collect::>>()?; + let rooms = self + .room_sums + .iter() + .map(|(room, x)| { + let [sessions, subscriber_us, bytes_in, bytes_out] = u64s::<4>(&x.n[1..5])?; + Some(RoomLine { room: *room, t0: x.t0, hops: u32::try_from(x.n[0]).ok()?, sessions, subscriber_us, bytes_in, bytes_out, energy: x.energy.block()?, cited: cited(&x.cites)?, cites: cites_digest(&x.cites) }) + }) + .collect::>>()?; + let t = &self.total; + let [sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out] = u64s::<6>(&t.n[..6])?; + let [hop_bytes_in, hop_bytes_out] = u64s::<2>(&t.n[7..9])?; + let totals = Totals { sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out, hops: u32::try_from(t.n[6]).ok()?, hop_bytes_in, hop_bytes_out, energy: t.energy.block()? }; + Some((nodes, rooms, totals)) + } +} + +/// The figures of the records of a report (§5), with its enrolments: every summary and +/// per-hop record, and the descriptors that place them. Every record is taken as verified, +/// placed and counted once (§7.2 steps 2 to 5). +pub fn compute(enrolments: &[Enrolment], records: &[Record]) -> Computed { + let roles: BTreeMap<[u8; 32], u8> = enrolments.iter().map(|e| (e.node, e.role)).collect(); + let t0s: BTreeMap<[u8; 32], u64> = records.iter().filter_map(|r| if let Record::Descriptor(d) = r { Some((d.room, d.t0)) } else { None }).collect(); + let mut nodes: BTreeMap<[u8; 32], LineSum> = BTreeMap::new(); + let mut rooms: BTreeMap<[u8; 32], LineSum> = BTreeMap::new(); + let mut total = LineSum::default(); + for r in records { + match r { + Record::Summary(s) => { + let l = nodes.entry(s.relay).or_default(); + // n: sessions, links, bytes_in, bytes_out, link_bytes_in, link_bytes_out, hops, + // hop_bytes_in, hop_bytes_out. + let (count, b_in, b_out) = if s.peer.is_some() { (1, 4, 5) } else { (0, 2, 3) }; + for x in [&mut l.n, &mut total.n] { + x[count] += 1; + x[b_in] += s.bytes_in as u128; + x[b_out] += s.bytes_out as u128; + } + l.energy.add(scope::SESSIONS, s.figure); + total.energy.add(scope::SESSIONS, s.figure); + l.cites.insert(r.head()); + } + Record::Hop(h) => { + let (b_in, b_out) = h.bytes(); + let l = nodes.entry(h.record.hop).or_default(); + for x in [&mut l.n, &mut total.n] { + x[6] += 1; + x[7] += b_in; + x[8] += b_out; + } + l.energy.add(scope::HOPS, h.figure()); + total.energy.add(scope::HOPS, h.figure()); + l.cites.insert(r.head()); + let room = rooms.entry(h.record.room).or_default(); + room.t0 = t0s.get(&h.record.room).copied().unwrap_or(0); + // n: hops, sessions, subscriber_us, bytes_in, bytes_out. + room.n[0] += 1; + room.n[1] += h.record.sessions as u128; + room.n[2] += h.record.subscriber_us.iter().map(|&x| x as u128).sum::(); + room.n[3] += b_in; + room.n[4] += b_out; + room.energy.add(scope::HOPS, h.figure()); + room.cites.insert(r.head()); + room.cites.insert((kind::DESCRIPTOR, h.record.room)); + } + Record::Descriptor(_) => {} + } + } + for (node, l) in nodes.iter_mut() { + l.role = roles.get(node).copied().unwrap_or(0); + } + let mut heads: Vec<_> = records.iter().map(Record::head).collect(); + heads.sort(); + let mut enrolled: Vec<_> = enrolments.iter().map(|e| (e.node, e.digest())).collect(); + enrolled.sort(); + Computed { records: heads, enrolments: enrolled, node_sums: nodes, room_sums: rooms, total } +} + +/// An organisation's report of a period over records it holds, signed (§5, §6): `Err` when +/// a figure cannot be stated. +pub fn sign_report(key: &SigningKey, start: u64, end: u64, enrolments: &[Enrolment], records: &[Record]) -> Result { + let c = compute(enrolments, records); + let (nodes, rooms, totals) = c.stated().ok_or("a figure of the report cannot be held in its field (§5.4)")?; + let r = Report { organisation: key.verifying_key().to_bytes(), start, end, records: c.records, enrolments: c.enrolments, nodes, rooms, totals, sig: [0; 64] }; + if r.records.len() > u32::MAX as usize || r.enrolments.len() > u16::MAX as usize || r.nodes.len() > u16::MAX as usize || r.rooms.len() > u16::MAX as usize { + return Err("a list of the report is longer than its count can state".into()); + } + Ok(r.sign(key)) +} + +// --------------------------------------------------------------------------------------- +// §7 The bundle and its verification +// --------------------------------------------------------------------------------------- + +/// A bundle (§7.1) of a report, its enrolments and its records' carriages. +pub fn bundle(report: &Report, enrolments: &[Enrolment], records: &[Value]) -> Value { + json!({ + "kind": BUNDLE_KIND, + "report": hex(&report.to_bytes()), + "enrolments": enrolments.iter().map(|e| hex(&e.to_bytes())).collect::>(), + "records": records, + }) +} + +/// An accepted bundle (§7.3). +#[derive(Clone, Debug)] +pub struct Accepted { + pub report: Report, + pub enrolments: Vec, + pub records: Vec, + pub digest: [u8; 32], + computed: Computed, +} + +/// A bundle's report, enrolments and records, each as given. +type Pieces = (Vec, Vec>, Vec); + +/// The pieces of a bundle (§7.1). +fn pieces(b: &Value) -> Result { + let o = b.as_object().ok_or(Reason::Malformed)?; + if o.len() != 4 || o.get("kind").and_then(Value::as_str) != Some(BUNDLE_KIND) { + return Err(Reason::Malformed); + } + let report = o.get("report").and_then(Value::as_str).and_then(unhex).ok_or(Reason::Malformed)?; + let enrolments = o.get("enrolments").and_then(Value::as_array).ok_or(Reason::Malformed)?.iter().map(|e| e.as_str().and_then(unhex).ok_or(Reason::Malformed)).collect::, _>>()?; + let records = o.get("records").and_then(Value::as_array).ok_or(Reason::Malformed)?.clone(); + Ok((report, enrolments, records)) +} + +/// Verify a bundle (§7.2). +pub fn verify(b: &Value) -> Result { + let (rb, eb, carriages) = pieces(b).map_err(|r| (r, Place::Bundle))?; + // 1. The report. + let report = Report::parse(&rb).map_err(|r| (r, Place::Report))?; + // 2. Each enrolment. + let mut enrolments: Vec = Vec::with_capacity(eb.len()); + for (i, e) in eb.iter().enumerate() { + let at = |r| (r, Place::Enrolment(i)); + let e = Enrolment::parse(e).map_err(at)?; + if e.organisation != report.organisation { + return Err(at(Reason::WrongOrganisation)); + } + if enrolments.iter().any(|x| x.node == e.node) { + return Err(at(Reason::EnrolmentDuplicate)); + } + if !(e.from < report.end && report.start < e.until) { + return Err(at(Reason::OutsidePeriod)); + } + enrolments.push(e); + } + // 3. Each record reads and verifies. + let records = carriages.iter().enumerate().map(|(i, c)| read_record(c).map_err(|r| (r, Place::Record(i)))).collect::, _>>()?; + // 4. Each summary and per-hop record: enrolled, of its role, placed, in the period and + // within its enrolment. + let t0s: BTreeMap<[u8; 32], u64> = records.iter().filter_map(|r| if let Record::Descriptor(d) = r { Some((d.room, d.t0)) } else { None }).collect(); + for (i, r) in records.iter().enumerate() { + let Some(signer) = r.signer() else { continue }; + place(r, signer, &enrolments, &t0s, Some((report.start, report.end))).map_err(|x| (x, Place::Record(i)))?; + } + // 5. Across records. + let mut seen = Seen::default(); + for (i, r) in records.iter().enumerate() { + seen.check(r).map_err(|x| (x, Place::Record(i)))?; + seen.add(r); + } + // 6. The figures. + let computed = compute(&enrolments, &records); + compare(&report, &computed)?; + Ok(Accepted { digest: report.digest(), report, enrolments, records, computed }) +} + +/// §7.2 step 4 for one record of `signer`, and the period's test when one is given. +fn place(r: &Record, signer: [u8; 32], enrolments: &[Enrolment], t0s: &BTreeMap<[u8; 32], u64>, period: Option<(u64, u64)>) -> Result<(), Reason> { + let e = enrolments.iter().find(|e| e.node == signer).ok_or(Reason::SignerNotEnrolled)?; + if !role_admits(e.role, r) { + return Err(Reason::RoleMismatch); + } + let at = instant(r, t0s)?; + if let Some((start, end)) = period + && !at.is_some_and(|t| start <= t && t < end) + { + return Err(Reason::OutsidePeriod); + } + if !at.is_some_and(|t| e.holds(t)) { + return Err(Reason::OutsideEnrolment); + } + Ok(()) +} + +/// Whether a stated row sums its class with at least one other class of its scope (§5.4, +/// §7.2 step 6.2), given the recomputed class sums of its scope. +fn summed_across(row: &Row, sums: &BTreeMap) -> bool { + let own = sums.get(&row.tag).copied().unwrap_or(0); + if row.joules as u128 == own { + return false; + } + let others: Vec = sums.iter().filter(|(t, _)| **t != row.tag).map(|(_, &j)| j).collect(); + (1u32..(1 << others.len())).any(|m| own + others.iter().enumerate().filter(|(i, _)| m & (1 << i) != 0).map(|(_, &j)| j).sum::() == row.joules as u128) +} + +/// §7.2 step 6: the report against the figures recomputed from its bundle. +fn compare(report: &Report, c: &Computed) -> Result<(), Refusal> { + // 1. Lines with no source. + for (j, l) in report.nodes.iter().enumerate() { + if !c.node_sums.contains_key(&l.node) || l.cited == 0 { + return Err((Reason::LineUnsourced, Place::Node(j))); + } + } + for (j, l) in report.rooms.iter().enumerate() { + if !c.room_sums.contains_key(&l.room) || l.cited == 0 { + return Err((Reason::LineUnsourced, Place::Room(j))); + } + } + // Each stated block beside its recomputed energy, in the order lines are compared. + let blocks: Vec<(&Block, &Energy, Place)> = report + .nodes + .iter() + .enumerate() + .map(|(j, l)| (&l.energy, &c.node_sums[&l.node].energy, Place::Node(j))) + .chain(report.rooms.iter().enumerate().map(|(j, l)| (&l.energy, &c.room_sums[&l.room].energy, Place::Room(j)))) + .chain([(&report.totals.energy, &c.total.energy, Place::Totals)]) + .collect(); + // 2. A row summed across classes. + for (b, e, at) in &blocks { + if b.rows.iter().any(|row| summed_across(row, &e.class_sums(row.scope))) { + return Err((Reason::ClassesSummed, *at)); + } + } + // 3. An unmetered figure counted as something else. + for (b, e, at) in &blocks { + if (0..2).any(|s| (b.unmetered[s] as u64) < e.unmetered[s]) { + return Err((Reason::UnmeteredSummed, *at)); + } + } + // 4. Citations. + for (j, l) in report.nodes.iter().enumerate() { + let x = &c.node_sums[&l.node].cites; + if l.cited as usize != x.len() || l.cites != cites_digest(x) { + return Err((Reason::CitationMismatch, Place::Node(j))); + } + } + for (j, l) in report.rooms.iter().enumerate() { + let x = &c.room_sums[&l.room].cites; + if l.cited as usize != x.len() || l.cites != cites_digest(x) { + return Err((Reason::CitationMismatch, Place::Room(j))); + } + } + // 5. Any other difference. + let same = c.stated().is_some_and(|(nodes, rooms, totals)| report.records == c.records && report.enrolments == c.enrolments && report.nodes == nodes && report.rooms == rooms && report.totals == totals); + if !same { + return Err((Reason::ReportMismatch, Place::Report)); + } + Ok(()) +} + +fn energy_json(b: &Block) -> Value { + let mut o = Map::new(); + for s in [scope::SESSIONS, scope::HOPS] { + let rows: Vec = b.rows.iter().filter(|r| r.scope == s).map(|r| json!({"class": metering::tag_label(r.tag), "figures": r.figures, "joules_micro": r.joules, "max_ppm": r.max_ppm})).collect(); + o.insert(scope::name(s).into(), json!({"rows": rows, "unmetered": b.unmetered[(s - 1) as usize], "coverage": b.coverage(s)})); + } + Value::Object(o) +} + +fn cites_json(c: &BTreeSet<(u8, [u8; 32])>) -> Value { + Value::Array(c.iter().map(|(k, id)| json!([k, hex(id)])).collect()) +} + +/// The outcome of a verification as JSON (§7.3). +pub fn outcome_json(r: &Result) -> Value { + let a = match r { + Err((reason, at)) => return json!({"outcome": "refuse", "reason": reason.code(), "at": at.json()}), + Ok(a) => a, + }; + let rep = &a.report; + let labels: BTreeMap<[u8; 32], String> = a.enrolments.iter().map(|e| (e.node, e.label_text())).collect(); + let mut signed: BTreeMap<[u8; 32], u64> = BTreeMap::new(); + for r in &a.records { + if let Some(s) = r.signer() { + *signed.entry(s).or_default() += 1; + } + } + let mut enrolments: Vec<&Enrolment> = a.enrolments.iter().collect(); + enrolments.sort_by_key(|e| e.node); + let t = &rep.totals; + json!({ + "outcome": "accept", + "digest": hex(&a.digest), + "organisation": hex(&rep.organisation), + "start": rep.start, + "end": rep.end, + "records": rep.records.len(), + "enrolments": enrolments.iter().map(|e| { + let n = signed.get(&e.node).copied().unwrap_or(0); + json!({"node": hex(&e.node), "role": role::name(e.role), "label": e.label_text(), "from": e.from, "until": e.until, "digest": hex(&e.digest()), "records": n, "silent": n == 0}) + }).collect::>(), + "nodes": rep.nodes.iter().map(|l| json!({ + "node": hex(&l.node), "label": labels.get(&l.node), "role": role::name(l.role), + "sessions": l.sessions, "links": l.links, "bytes_in": l.bytes_in, "bytes_out": l.bytes_out, + "link_bytes_in": l.link_bytes_in, "link_bytes_out": l.link_bytes_out, + "hops": l.hops, "hop_bytes_in": l.hop_bytes_in, "hop_bytes_out": l.hop_bytes_out, + "energy": energy_json(&l.energy), "cites": cites_json(&a.computed.node_sums[&l.node].cites), + })).collect::>(), + "rooms": rep.rooms.iter().map(|l| json!({ + "room": hex(&l.room), "t0": l.t0, "hops": l.hops, "sessions": l.sessions, "subscriber_us": l.subscriber_us, + "bytes_in": l.bytes_in, "bytes_out": l.bytes_out, + "energy": energy_json(&l.energy), "cites": cites_json(&a.computed.room_sums[&l.room].cites), + })).collect::>(), + "totals": { + "sessions": t.sessions, "links": t.links, "bytes_in": t.bytes_in, "bytes_out": t.bytes_out, + "link_bytes_in": t.link_bytes_in, "link_bytes_out": t.link_bytes_out, + "hops": t.hops, "hop_bytes_in": t.hop_bytes_in, "hop_bytes_out": t.hop_bytes_out, + "energy": energy_json(&t.energy), + }, + }) +} + +// --------------------------------------------------------------------------------------- +// The records a fleet holds (§9) +// --------------------------------------------------------------------------------------- + +/// A fleet's enrolments and records as a service holds them: each record admitted as §7.2 +/// steps 3 to 5 admit it, with no period, against what is held (§9). +#[derive(Clone, Debug, Default)] +pub struct Held { + pub organisation: [u8; 32], + pub enrolments: Vec, + /// Each record with its carriage, in the order it was admitted. + pub records: Vec<(Record, Value)>, + t0s: BTreeMap<[u8; 32], u64>, + seen: Seen, +} + +impl Held { + pub fn new(organisation: [u8; 32]) -> Held { + Held { organisation, ..Held::default() } + } + + /// Admit an enrolment's bytes (§3): it reads and verifies, the organisation signed it, and + /// its node holds no enrolment yet. + pub fn enrol(&mut self, b: &[u8]) -> Result<&Enrolment, Reason> { + let e = Enrolment::parse(b)?; + if e.organisation != self.organisation { + return Err(Reason::WrongOrganisation); + } + if self.enrolments.iter().any(|x| x.node == e.node) { + return Err(Reason::EnrolmentDuplicate); + } + self.enrolments.push(e); + Ok(self.enrolments.last().expect("pushed")) + } + + /// Admit a record's carriage (§9): read and verified, of an enrolled signer of its role, + /// placed and within its enrolment, and counted once against every record held. + pub fn admit(&mut self, carriage: &Value) -> Result<(u8, [u8; 32]), Reason> { + let r = read_record(carriage)?; + if let Some(signer) = r.signer() { + place(&r, signer, &self.enrolments, &self.t0s, None)?; + } + self.seen.check(&r)?; + self.seen.add(&r); + if let Record::Descriptor(d) = &r { + self.t0s.insert(d.room, d.t0); + } + let head = r.head(); + self.records.push((r, carriage.clone())); + Ok(head) + } + + /// The instant of a held record, `None` for a descriptor and for a record in no period. + fn instant_of(&self, r: &Record) -> Option { + instant(r, &self.t0s).ok().flatten() + } + + /// The enrolments and records of a period (§9): the enrolments whose span meets it; the + /// summaries and per-hop records in it, with the descriptors those name. + pub fn of_period(&self, start: u64, end: u64) -> (Vec, Vec<(Record, Value)>) { + let enrolments = self.enrolments.iter().filter(|e| e.from < end && start < e.until).cloned().collect(); + let mut rooms = BTreeSet::new(); + let mut out = Vec::new(); + for (r, c) in &self.records { + if r.signer().is_some() && self.instant_of(r).is_some_and(|t| start <= t && t < end) { + if let Record::Hop(h) = r { + rooms.insert(h.record.room); + } + out.push((r.clone(), c.clone())); + } + } + for (r, c) in &self.records { + if let Record::Descriptor(d) = r + && rooms.contains(&d.room) + { + out.push((r.clone(), c.clone())); + } + } + (enrolments, out) + } + + /// The report of a period over what is held, signed with the organisation key, and its + /// bundle (§9). + pub fn report(&self, key: &SigningKey, start: u64, end: u64) -> Result<(Report, Value), String> { + if key.verifying_key().to_bytes() != self.organisation { + return Err("the key is not the fleet's organisation key".into()); + } + if start >= end { + return Err("a period's start is below its end".into()); + } + let (enrolments, recs) = self.of_period(start, end); + let records: Vec = recs.iter().map(|(r, _)| r.clone()).collect(); + let report = sign_report(key, start, end, &enrolments, &records)?; + let carriages: Vec = recs.into_iter().map(|(_, c)| c).collect(); + let b = bundle(&report, &enrolments, &carriages); + Ok((report, b)) + } + + /// The per-hop records held of a room, each `record` and `ledger` (§8). + pub fn hops_of(&self, room: &[u8; 32]) -> Vec { + self.records + .iter() + .filter(|(r, _)| matches!(r, Record::Hop(h) if h.record.room == *room)) + .map(|(_, c)| json!({"record": c["record"], "ledger": c["ledger"]})) + .collect() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn key(i: u8) -> SigningKey { + SigningKey::from_bytes(&sha256(&[b"wai:fleet/test\x00", &[i]])) + } + + fn pk(k: &SigningKey) -> [u8; 32] { + k.verifying_key().to_bytes() + } + + #[test] + fn an_enrolment_reads_back_and_its_rules_hold() { + let (org, node) = (key(0), key(1)); + let e = Enrolment::new(pk(&org), pk(&node), role::RELAY, 10, NO_END, "home").sign(&org); + let b = e.to_bytes(); + assert_eq!(Enrolment::parse(&b).unwrap(), e); + assert_eq!(b.len(), 87 + 4 + 64); + let bad = |edit: &dyn Fn(&mut Enrolment)| { + let mut x = e.clone(); + edit(&mut x); + Enrolment::parse(&x.sign(&org).to_bytes()) + }; + assert_eq!(bad(&|x| x.role = 7), Err(Reason::EnrolmentInvalid)); + assert_eq!(bad(&|x| x.role = 0), Err(Reason::EnrolmentInvalid)); + assert_eq!(bad(&|x| x.from = x.until), Err(Reason::EnrolmentInvalid)); + assert_eq!(bad(&|x| x.label = vec![b'a'; 65]), Err(Reason::EnrolmentInvalid)); + assert!(bad(&|x| x.label = vec![b'a'; 64]).is_ok(), "64 bytes is the longest label"); + assert_eq!(bad(&|x| x.label = b"a\nb".to_vec()), Err(Reason::EnrolmentInvalid)); + assert_eq!(bad(&|x| x.label = vec![0xff]), Err(Reason::EnrolmentInvalid)); + assert_eq!(bad(&|x| x.node = x.organisation), Err(Reason::EnrolmentInvalid)); + let mut flipped = b.clone(); + flipped[50] ^= 1; + assert_eq!(Enrolment::parse(&flipped), Err(Reason::BadSignature)); + assert_eq!(Enrolment::parse(&b[..b.len() - 1]), Err(Reason::Truncated)); + let mut more = b.clone(); + more.push(0); + assert_eq!(Enrolment::parse(&more), Err(Reason::Malformed)); + let mut v2 = b.clone(); + v2[4] = 2; + assert_eq!(Enrolment::parse(&v2), Err(Reason::UnknownVersion)); + assert_eq!(Enrolment::parse(b"WFE"), Err(Reason::Truncated)); + assert_eq!(Enrolment::parse(b"WFR1\x01"), Err(Reason::Malformed)); + } + + #[test] + fn a_summary_line_splits_only_in_the_relays_form() { + let sig = "ab".repeat(64); + let line = format!("{{\"summary\":{{\"a\":1}},\"signature\":\"{sig}\"}}"); + let (text, s) = split_line(&line).unwrap(); + assert_eq!((text, s), ("{\"a\":1}", [0xab; 64])); + assert!(split_line(&line.replace("\"signature\":", "\"signature\" :")).is_none()); + assert!(split_line(&line.replace(&sig, &sig.to_uppercase())).is_none(), "lowercase hexadecimal"); + assert!(split_line(&format!("{line}\n")).is_none(), "a line has no line end"); + assert!(split_line(&line[..line.len() - 3]).is_none()); + } + + #[test] + fn a_row_summed_across_classes_is_told_from_a_wrong_one() { + let sums: BTreeMap = [(2, 35), (3, 2), (4, 18)].into_iter().collect(); + let row = |joules| Row { scope: 2, tag: 4, figures: 1, joules, max_ppm: 1 }; + assert!(!summed_across(&row(18), &sums), "its own sum"); + assert!(summed_across(&row(53), &sums), "with ModelBased"); + assert!(summed_across(&row(55), &sums), "with both"); + assert!(summed_across(&row(20), &sums), "with Estimator"); + assert!(!summed_across(&row(19), &sums), "merely wrong"); + let alone: BTreeMap = [(2, 35)].into_iter().collect(); + assert!(summed_across(&Row { scope: 2, tag: 4, figures: 1, joules: 35, max_ppm: 1 }, &alone), "a class with no figure, stated with another's"); + } + + #[test] + fn coverage_tells_four_states_apart() { + let row = Row { scope: 2, tag: 4, figures: 1, joules: 5, max_ppm: 1 }; + let b = |rows: Vec, u: [u32; 2]| Block { rows, unmetered: u }; + assert_eq!(b(vec![row], [0, 0]).coverage(2), "whole"); + assert_eq!(b(vec![row], [0, 1]).coverage(2), "partial"); + assert_eq!(b(vec![], [0, 1]).coverage(2), "unmetered"); + assert_eq!(b(vec![], [0, 0]).coverage(2), "none"); + assert_eq!(b(vec![row], [3, 0]).coverage(1), "unmetered"); + } +} diff --git a/wai/wai-rs/src/fleet/corpus.rs b/wai/wai-rs/src/fleet/corpus.rs new file mode 100644 index 000000000..be570e0c1 --- /dev/null +++ b/wai/wai-rs/src/fleet/corpus.rs @@ -0,0 +1,652 @@ +//! The fleet corpus (`live-conformance/fleet/`, extensions/fleet.md §11). +//! +//! Its per-hop records and room descriptors come from `live-conformance/metering/`, taken as +//! that corpus states them: the lesson room's descriptor, its relay's, compositor's and ingest +//! gateway's records of three classes with their ledgers, and the relay room's descriptor with +//! the record the reference relay signed, which states the unmetered marker. The relay that +//! signed those is the fleet's home relay here, under the same key. The session summaries are +//! written here in the reference relay's form (§4.2), by the relays' keys, from sessions +//! authored in code; the organisation, the edge relay and the other keys are SHA-256 of a fixed +//! label; and every time is a constant. [`generate`] reads the metering corpus from a `wai/` +//! directory and writes `vectors.json`; [`verify`] checks every vector against the outcome it +//! states. + +use std::path::Path; + +use ed25519_dalek::SigningKey; +use serde_json::{json, Value}; + +use super::*; +use crate::capture_take::corpus::{key as principal, AUTHORITY, RELAY}; +use crate::energy_class::{CounterFiltering, EnergyProvenance, Uncertainty}; +use crate::live_metering::corpus::{COMPOSITOR, INGEST}; + +/// 2026-10-16T00:00:00Z: the lesson room's `t0`, and the day most vectors report. +const LESSON_T0: u64 = 1_792_108_800_000_000; +/// 2026-10-18T00:00:00Z: the relay room's `t0`. +const RELAY_T0: u64 = LESSON_T0 + 2 * DAY_US; +const DAY_US: u64 = 86_400_000_000; +/// The day of the lesson. +const DAY: (u64, u64) = (LESSON_T0, LESSON_T0 + DAY_US); +/// 2026-10-12T00:00:00Z to 2026-10-19T00:00:00Z: a week, Monday to Monday. +const WEEK: (u64, u64) = (LESSON_T0 - 4 * DAY_US, LESSON_T0 + 3 * DAY_US); +/// The lesson day and the relay room's day in milliseconds, for the summaries. +const LESSON_MS: u64 = LESSON_T0 / 1000; +const RELAY_MS: u64 = RELAY_T0 / 1000; + +fn key(label: &str) -> SigningKey { + SigningKey::from_bytes(&sha256(&[b"wai:fleet/corpus/key\x00", label.as_bytes()])) +} + +fn pk(k: &SigningKey) -> [u8; 32] { + k.verifying_key().to_bytes() +} + +/// The keys of the corpus, by name. +struct Keys { + org: SigningKey, + stranger: SigningKey, + home: SigningKey, + edge: SigningKey, + compositor: SigningKey, + ingest: SigningKey, + room_service: SigningKey, + outsider: SigningKey, + publisher: SigningKey, +} + +fn keys() -> Keys { + Keys { + org: key("organisation"), + stranger: key("another organisation"), + home: principal(RELAY), + edge: key("edge relay"), + compositor: principal(COMPOSITOR), + ingest: principal(INGEST), + room_service: principal(AUTHORITY), + outsider: key("a relay of no fleet"), + publisher: key("a publisher"), + } +} + +// --------------------------------------------------------------------------------------- +// The records taken from the metering corpus +// --------------------------------------------------------------------------------------- + +fn read_json(wai: &Path, rel: &str) -> Result { + let t = std::fs::read_to_string(wai.join(rel)).map_err(|e| format!("{rel}: {e}"))?; + serde_json::from_str(&t).map_err(|e| format!("{rel}: {e}")) +} + +/// The records this corpus takes from the metering corpus, as carriages. +struct Taken { + lesson: Value, + relay_room: Value, + lesson_id: [u8; 32], + /// The lesson's relay (OnChipCounter), compositor (ModelBased and OnChipCounter) and ingest + /// gateway (Estimator); the reference relay's recorded record (the unmetered marker). + relay: Value, + compositor_model: Value, + compositor_counter: Value, + ingest: Value, + recorded: Value, +} + +fn hop_by_role(m: &Value, vector: &str, role_: u8) -> Result { + let v = m["vectors"].as_array().and_then(|l| l.iter().find(|v| v["name"] == vector)).ok_or_else(|| format!("no metering vector {vector}"))?; + let h = v["hops"] + .as_array() + .and_then(|l| l.iter().find(|h| h["record"].as_str().and_then(unhex).is_some_and(|b| b.get(69) == Some(&role_)))) + .ok_or_else(|| format!("{vector}: no hop of role {role_}"))?; + Ok(json!({"kind": "hop", "record": h["record"], "ledger": h["ledger"]})) +} + +fn taken(wai: &Path) -> Result { + let m = read_json(wai, "live-conformance/metering/vectors.json")?; + let descriptor = |room: &str| json!({"kind": "descriptor", "descriptor": m["rooms"][room]["descriptor"]}); + let lesson = descriptor("lesson"); + let lesson_id = match read_record(&lesson) { + Ok(Record::Descriptor(d)) if d.t0 == LESSON_T0 => d.room, + other => return Err(format!("the lesson room's descriptor: {other:?}")), + }; + let relay_room = descriptor("relay"); + match read_record(&relay_room) { + Ok(Record::Descriptor(d)) if d.t0 == RELAY_T0 => {} + other => return Err(format!("the relay room's descriptor: {other:?}")), + } + Ok(Taken { + lesson, + relay_room, + lesson_id, + relay: hop_by_role(&m, "mixed_classes", role::RELAY)?, + compositor_model: hop_by_role(&m, "mixed_classes", role::COMPOSITOR)?, + compositor_counter: hop_by_role(&m, "lesson", role::COMPOSITOR)?, + ingest: hop_by_role(&m, "mixed_classes", role::INGEST)?, + recorded: hop_by_role(&m, "relay_recorded", role::RELAY)?, + }) +} + +// --------------------------------------------------------------------------------------- +// Session summaries, in the reference relay's form (§4.2) +// --------------------------------------------------------------------------------------- + +/// One session as a relay summarises it. +#[derive(Clone)] +struct Session { + session: u64, + transport: &'static str, + remote: &'static str, + opened_ms: u64, + closed_ms: u64, + close_code: Option, + peer: Option<[u8; 32]>, + /// Tracks received as a subscriber: name, objects forwarded, their bytes, objects fetched, + /// their bytes. + out: Vec<(String, u64, u64, u64, u64)>, + /// Tracks published: name, objects, bytes. + inn: Vec<(String, u64, u64)>, + /// Layer spans: room, class, from, to. + spans: Vec<(String, u8, u64, u64)>, + energy: (&'static str, u64), + /// Members the summary's text holds beyond the relay's own, written after `tally`. + extra: Option<(&'static str, Value)>, +} + +impl Session { + fn new(session: u64, remote: &'static str, opened_ms: u64, closed_ms: u64) -> Session { + Session { session, transport: "quic", remote, opened_ms, closed_ms, close_code: Some(0), peer: None, out: vec![], inn: vec![], spans: vec![], energy: ("unmetered", 0), extra: None } + } +} + +/// The summary's text as the reference relay serialises it: its members in the order the +/// relay declares them, maps in key order, and no whitespace. +fn summary_text(relay: &[u8; 32], s: &Session) -> String { + let mut out = s.out.clone(); + out.sort_by(|a, b| a.0.cmp(&b.0)); + let mut inn = s.inn.clone(); + inn.sort_by(|a, b| a.0.cmp(&b.0)); + let sub_tracks: serde_json::Map = out + .iter() + .map(|(n, o, b, fo, fb)| { + (n.clone(), json!({ + "objects_forwarded": o, "object_bytes_forwarded": b, "dropped_delivery_timeout": 0, "dropped_receipts_track_subscribed": 0, + "subgroups_reset_after_fin": 0, "fetch_objects": fo, "fetch_bytes": fb, "undelivered_at_close": 0, "incremental_objects": 0, + "dvr_objects": 0, "dvr_bytes": 0, + })) + }) + .collect(); + let pub_tracks: serde_json::Map = + inn.iter().map(|(n, o, b)| (n.clone(), json!({"objects_received": o, "object_bytes_received": b, "refused_at_door": 0, "deduplicated": 0}))).collect(); + let objects_out: u64 = out.iter().map(|t| t.1).sum(); + let bytes_out: u64 = out.iter().map(|t| t.2).sum(); + let fetch_objects: u64 = out.iter().map(|t| t.3).sum(); + let all_bytes: u64 = out.iter().map(|t| t.2 + t.4).sum(); + // Every byte written to the session's streams: the payloads and, per object, its headers. + let wire = all_bytes + 9 * (objects_out + fetch_objects); + let mut tally = json!({ + "subscriber": { + "objects_forwarded": objects_out, "object_bytes_forwarded": bytes_out, "wire_bytes_sent": wire, + "dropped_delivery_timeout": 0, "dropped_receipts_track_subscribed": 0, "fetch_objects": fetch_objects, + "undelivered_at_close": 0, "tracks": sub_tracks, + "layer_spans": s.spans.iter().map(|(r, c, f, t)| json!({"room": r, "class": c, "from_unix_us": f, "to_unix_us": t})).collect::>(), + }, + "publisher": { + "objects_received": inn.iter().map(|t| t.1).sum::(), "object_bytes_received": inn.iter().map(|t| t.2).sum::(), + "refused_at_door": 0, "deduplicated": 0, "tracks": pub_tracks, + }, + "publisher_signed": {}, + }); + if let Some(p) = s.peer { + tally["peer"] = json!(hex(&p)); + } + let mut v = json!({ + "format": SUMMARY_FORMAT, "relay_key": hex(relay), "session": s.session, "transport": s.transport, "remote": s.remote, + "draft": "moqt-22", "opened_unix_ms": s.opened_ms, "closed_unix_ms": s.closed_ms, "close_code": s.close_code, + "relay_energy": {"acquisition": s.energy.0, "joules_micro": s.energy.1}, "tally": tally, + }); + if let Some((k, x)) = &s.extra { + v[*k] = x.clone(); + } + serde_json::to_string(&v).expect("JSON") +} + +/// A line of the relay's summary file: `text` signed by `k`, in the relay's form. +fn line_of(k: &SigningKey, text: &str) -> String { + let sig = sign(k, SUMMARY_DOMAIN, text.as_bytes()); + format!("{LINE_HEAD}{text}{LINE_SIG}{}\"}}", hex(&sig)) +} + +fn summary(k: &SigningKey, s: &Session) -> Value { + json!({"kind": "summary", "line": line_of(k, &summary_text(&pk(k), s))}) +} + +/// The sessions of the corpus: the home relay's and the edge relay's on the lesson day (the +/// edge's upstream link to home is one session at each end), and one of home's on the relay +/// room's day. +struct Sessions { + home: Vec, + edge: Vec, + home_later: Session, +} + +fn sessions(k: &Keys, lesson: &[u8; 32]) -> Sessions { + let room = hex(lesson); + let video = format!("{room}-{}-video--0", hex(&pk(&k.publisher))); + let audio = format!("{room}-{}-audio--0", hex(&pk(&k.publisher))); + let span = |from_ms: u64, to_ms: u64| (room.clone(), 0u8, (LESSON_MS + from_ms) * 1000, (LESSON_MS + to_ms) * 1000); + // The publisher's session at home. + let mut publisher = Session::new(1, "203.0.113.10:50112", LESSON_MS, LESSON_MS + 24_000); + publisher.inn = vec![(video.clone(), 720, 9_216_000), (audio.clone(), 1_200, 192_000)]; + // A viewer at home, which fetched the first group it missed. + let mut viewer = Session::new(2, "198.51.100.23:61004", LESSON_MS + 1_000, LESSON_MS + 23_000); + viewer.transport = "webtransport"; + viewer.out = vec![(video.clone(), 660, 8_448_000, 30, 384_000), (audio.clone(), 1_100, 176_000, 0, 0)]; + viewer.spans = vec![span(1_000, 23_000)]; + // The edge relay's upstream link, as home accepted it: home sends the room to the edge. + let mut link_home = Session::new(3, "192.0.2.44:4433", LESSON_MS + 400, LESSON_MS + 24_600); + link_home.peer = Some(pk(&k.edge)); + link_home.out = vec![(video.clone(), 715, 9_152_000, 0, 0), (audio.clone(), 1_190, 190_400, 0, 0)]; + // The same link at the edge, which dialed it: the edge receives what home sent. + let mut link_edge = Session::new(1, "198.51.100.7:443", LESSON_MS + 400, LESSON_MS + 24_600); + link_edge.transport = "websocket"; + link_edge.peer = Some(pk(&k.home)); + link_edge.inn = vec![(video.clone(), 715, 9_152_000), (audio.clone(), 1_190, 190_400)]; + // Two viewers at the edge. + let mut e2 = Session::new(2, "203.0.113.81:53311", LESSON_MS + 2_000, LESSON_MS + 24_000); + e2.out = vec![(video.clone(), 660, 8_448_000, 0, 0), (audio.clone(), 1_100, 176_000, 0, 0)]; + e2.spans = vec![span(2_000, 24_000)]; + let mut e3 = Session::new(3, "192.0.2.150:40022", LESSON_MS + 5_000, LESSON_MS + 12_000); + e3.out = vec![(audio.clone(), 350, 56_000, 0, 0)]; + e3.spans = vec![(room.clone(), 8, (LESSON_MS + 5_000) * 1000, (LESSON_MS + 12_000) * 1000)]; + e3.close_code = None; + // Home, two days later: a viewer of the relay room. + let mut later = Session::new(7, "198.51.100.99:52000", RELAY_MS + 42_335_000, RELAY_MS + 42_339_000); + later.out = vec![("live-a--cam".into(), 40, 512_000, 0, 0)]; + Sessions { home: vec![publisher, viewer, link_home], edge: vec![link_edge, e2, e3], home_later: later } +} + +// --------------------------------------------------------------------------------------- +// Cases and vectors +// --------------------------------------------------------------------------------------- + +/// A bundle's parts before its report is signed. +#[derive(Clone)] +struct Case { + period: (u64, u64), + enrolments: Vec, + records: Vec, +} + +impl Case { + /// The report the organisation signs of the case: computed from its records as given. + fn report(&self, org: &SigningKey) -> Report { + let recs: Vec = self.records.iter().map(|c| read_record(c).expect("a corpus record reads")).collect(); + sign_report(org, self.period.0, self.period.1, &self.enrolments, &recs).expect("the report's figures are stated") + } + + fn bundle(&self, org: &SigningKey) -> Value { + bundle(&self.report(org), &self.enrolments, &self.records) + } + + /// The bundle with its report edited and signed again. + fn edited(&self, org: &SigningKey, edit: impl FnOnce(&mut Report)) -> Value { + let mut r = self.report(org); + edit(&mut r); + bundle(&r.sign(org), &self.enrolments, &self.records) + } + + /// The bundle with its report's bytes edited, not signed again. + fn raw(&self, org: &SigningKey, edit: impl FnOnce(&mut Vec)) -> Value { + let mut b = self.bundle(org); + let mut r = unhex(b["report"].as_str().expect("hex")).expect("hex"); + edit(&mut r); + b["report"] = json!(hex(&r)); + b + } +} + +fn enrol(org: &SigningKey, node: &SigningKey, r: u8, label: &str) -> Enrolment { + Enrolment::new(pk(org), pk(node), r, WEEK.0 - 30 * DAY_US, NO_END, label).sign(org) +} + +/// A hop carriage's record, edited and signed again by `k`. +fn resigned_hop(c: &Value, k: &SigningKey, edit: impl FnOnce(&mut HopRecord)) -> Value { + let b = unhex(c["record"].as_str().expect("hex")).expect("hex"); + let room: [u8; 32] = b[5..37].try_into().expect("32"); + let mut r = HopRecord::parse(&b, &room).expect("a corpus record"); + edit(&mut r); + json!({"kind": "hop", "record": hex(&r.sign(k).to_bytes()), "ledger": c["ledger"]}) +} + +/// A carriage with one of its hexadecimal members' bytes edited. +fn bytes_edited(c: &Value, member: &str, edit: impl FnOnce(&mut Vec)) -> Value { + let mut b = unhex(c[member].as_str().expect("hex")).expect("hex"); + edit(&mut b); + let mut c = c.clone(); + c[member] = json!(hex(&b)); + c +} + +struct Vector { + name: &'static str, + about: &'static str, + bundle: Value, + /// For a refusal, the reason and place it was written to reach. + intent: Option<(Reason, Place)>, +} + +fn accept(name: &'static str, about: &'static str, bundle: Value) -> Vector { + Vector { name, about, bundle, intent: None } +} + +fn refuse(name: &'static str, about: &'static str, bundle: Value, reason: Reason, at: Place) -> Vector { + Vector { name, about, bundle, intent: Some((reason, at)) } +} + +fn vectors(t: &Taken) -> Vec { + let k = keys(); + let s = sessions(&k, &t.lesson_id); + let org = &k.org; + let home_e = enrol(org, &k.home, role::RELAY, "home"); + let edge_e = enrol(org, &k.edge, role::RELAY, "edge"); + let comp_e = enrol(org, &k.compositor, role::COMPOSITOR, "compositor"); + let ingest_e = enrol(org, &k.ingest, role::INGEST, "ingest"); + let room_e = enrol(org, &k.room_service, role::ROOM, "room service"); + let home_s: Vec = s.home.iter().map(|x| summary(&k.home, x)).collect(); + let edge_s: Vec = s.edge.iter().map(|x| summary(&k.edge, x)).collect(); + + let week = Case { + period: WEEK, + enrolments: vec![home_e.clone(), edge_e.clone(), comp_e.clone(), ingest_e.clone(), room_e.clone()], + records: [ + vec![t.lesson.clone(), t.relay_room.clone(), t.relay.clone(), t.compositor_model.clone(), t.ingest.clone(), t.recorded.clone()], + home_s.clone(), + vec![summary(&k.home, &s.home_later)], + edge_s.clone(), + ] + .concat(), + }; + let measured = Case { period: DAY, enrolments: vec![home_e.clone(), comp_e.clone()], records: vec![t.lesson.clone(), t.relay.clone(), t.compositor_counter.clone()] }; + let unmetered = Case { period: DAY, enrolments: vec![home_e.clone(), edge_e.clone()], records: [home_s.clone(), edge_s.clone()].concat() }; + let silent = Case { period: DAY, enrolments: vec![home_e.clone(), edge_e.clone()], records: vec![] }; + // The base of most controls: a day of two relays and a compositor. + let base = Case { + period: DAY, + enrolments: vec![home_e.clone(), edge_e.clone(), comp_e.clone()], + records: [vec![t.lesson.clone(), t.relay.clone(), t.compositor_counter.clone()], home_s.clone(), vec![edge_s[0].clone(), edge_s[1].clone()]].concat(), + }; + let with_records = |c: &Case, records: Vec| Case { records, ..c.clone() }; + let with_enrolments = |c: &Case, enrolments: Vec| Case { enrolments, ..c.clone() }; + let replaced = |c: &Case, i: usize, v: Value| { + let mut r = c.records.clone(); + r[i] = v; + Case { records: r, ..c.clone() } + }; + let plus = |c: &Case, v: Value| { + let mut r = c.records.clone(); + r.push(v); + Case { records: r, ..c.clone() } + }; + // Base's records, by index: 0 the descriptor, 1 the relay's record, 2 the compositor's, + // 3 to 5 home's summaries (5 its link), 6 the edge's link, 7 an edge viewer. + let home_summary = |edit: &dyn Fn(&mut Session)| { + let mut x = s.home[1].clone(); + edit(&mut x); + summary(&k.home, &x) + }; + let home_text = |edit: &dyn Fn(&mut Session)| { + let mut x = s.home[1].clone(); + edit(&mut x); + summary_text(&pk(&k.home), &x) + }; + let line = |text: String| json!({"kind": "summary", "line": line_of(&k.home, &text)}); + let node_of = |r: &Report, key: &SigningKey| r.nodes.iter().position(|l| l.node == pk(key)).expect("a line of the node"); + let (home_at, edge_at) = { + let r = base.report(org); + (node_of(&r, &k.home), node_of(&r, &k.edge)) + }; + // A silent ingest gateway enrolled beside the base's nodes, and where a line of it would go. + let silent_line = with_enrolments(&base, vec![home_e.clone(), edge_e.clone(), comp_e.clone(), ingest_e.clone()]); + let silent_at = silent_line.report(org).nodes.partition_point(|l| l.node < pk(&k.ingest)); + + vec![ + accept("a_week", "a week of two relays cascading (the edge's upstream link is one session at each end), a compositor and an ingest gateway, with a room service enrolled and silent: every session's figure is the unmetered marker; the lesson room's hops are of three classes, one row each; the relay room's only hop states the unmetered marker, so the fleet's hops are partial", week.bundle(org)), + accept("measured_only", "a day of a relay and a compositor whose every figure is an OnChipCounter reading with its declared uncertainty: one row, whole", measured.bundle(org)), + accept("unmetered_only", "a day of two relays whose every figure is the unmetered marker, and no per-hop record: the sessions are unmetered and the hops have no figure", unmetered.bundle(org)), + accept("enrolled_and_silent", "two relays enrolled and silent: no line, every scope none", silent.bundle(org)), + // The bundle and the report. + refuse("bundle_malformed", "a bundle with no kind", { + let mut b = base.bundle(org); + b.as_object_mut().expect("an object").remove("kind"); + b + }, Reason::Malformed, Place::Bundle), + refuse("report_truncated", "a report one byte short", base.raw(org, |b| { b.pop(); }), Reason::Truncated, Place::Report), + refuse("report_malformed", "a report whose magic is not WFR1", base.raw(org, |b| b[3] = b'2'), Reason::Malformed, Place::Report), + refuse("report_unknown_version", "a report of version 2", base.raw(org, |b| b[4] = 2), Reason::UnknownVersion, Place::Report), + refuse("report_invalid", "a report whose period ends where it starts", base.edited(org, |r| r.end = r.start), Reason::ReportInvalid, Place::Report), + refuse("report_row_of_no_class", "a report with a row of tag 0, a sum over no one class", base.edited(org, |r| r.totals.energy.rows[0].tag = 0), Reason::ClassesSummed, Place::Report), + refuse("report_bad_signature", "a report whose signature does not verify", base.raw(org, |b| { let n = b.len() - 1; b[n] ^= 1; }), Reason::BadSignature, Place::Report), + refuse("report_bad_key", "a report naming as its organisation a key of small order", base.edited(org, |r| r.organisation = crate::sig::IDENTITY), Reason::BadKey, Place::Report), + // Enrolments. + refuse("enrolment_truncated", "an enrolment one byte short", base.bundle(org).pipe(|mut b| { + let e = b["enrolments"][1].as_str().expect("hex").to_string(); + b["enrolments"][1] = json!(e[..e.len() - 2]); + b + }), Reason::Truncated, Place::Enrolment(1)), + refuse("enrolment_invalid", "an enrolment of role 7", { + let mut e = edge_e.clone(); + e.role = 7; + let e = e.sign(org); + bundle(&base.report(org), &[home_e.clone(), e, comp_e.clone()], &base.records) + }, Reason::EnrolmentInvalid, Place::Enrolment(1)), + refuse("enrolment_bad_signature", "an enrolment whose signature does not verify", { + let mut b = base.bundle(org); + let mut e = unhex(b["enrolments"][2].as_str().expect("hex")).expect("hex"); + let n = e.len() - 1; + e[n] ^= 1; + b["enrolments"][2] = json!(hex(&e)); + b + }, Reason::BadSignature, Place::Enrolment(2)), + refuse("wrong_organisation", "an enrolment another organisation signed", { + let mut e = edge_e.clone(); + e.organisation = pk(&k.stranger); + let e = e.sign(&k.stranger); + bundle(&base.report(org), &[home_e.clone(), e, comp_e.clone()], &base.records) + }, Reason::WrongOrganisation, Place::Enrolment(1)), + refuse("enrolment_duplicate", "a node enrolled twice", { + let e = Enrolment::new(pk(org), pk(&k.home), role::RELAY, home_e.from, NO_END, "home again").sign(org); + bundle(&base.report(org), &[home_e.clone(), edge_e.clone(), comp_e.clone(), e], &base.records) + }, Reason::EnrolmentDuplicate, Place::Enrolment(3)), + refuse("enrolment_outside_period", "an enrolment whose span ended before the period", { + let e = Enrolment::new(pk(org), pk(&k.ingest), role::INGEST, WEEK.0, DAY.0, "ingest, retired").sign(org); + bundle(&base.report(org), &[home_e.clone(), edge_e.clone(), comp_e.clone(), e], &base.records) + }, Reason::OutsidePeriod, Place::Enrolment(3)), + // Records that do not read or verify. + refuse("carriage_malformed", "a carriage with a member its kind does not have", base.bundle(org).pipe(|mut b| { + b["records"][0]["room"] = json!("lesson"); + b + }), Reason::Malformed, Place::Record(0)), + refuse("summary_line_malformed", "a summary line given with its line end, which is not the relay's form", base.bundle(org).pipe(|mut b| { + let l = format!("{}\n", b["records"][4]["line"].as_str().expect("a line")); + b["records"][4]["line"] = json!(l); + b + }), Reason::Malformed, Place::Record(4)), + refuse("summary_text_malformed", "a summary's text naming a member twice", replaced(&base, 4, line(home_text(&|_| {}).replacen("\"session\":2,", "\"session\":2,\"session\":2,", 1))).bundle_unchecked(org), Reason::Malformed, Place::Record(4)), + refuse("summary_member_missing", "a summary with no relay_key", replaced(&base, 4, line(home_text(&|_| {}).replacen(&format!("\"relay_key\":\"{}\",", hex(&pk(&k.home))), "", 1))).bundle_unchecked(org), Reason::Malformed, Place::Record(4)), + refuse("summary_unknown_version", "a summary of format session-summary/3", replaced(&base, 4, line(home_text(&|_| {}).replacen("session-summary/2", "session-summary/3", 1))).bundle_unchecked(org), Reason::UnknownVersion, Place::Record(4)), + refuse("summary_class_without_evidence", "a summary stating its session's energy as OnChipCounter, with no member to carry the class's evidence", replaced(&base, 4, home_summary(&|x| x.energy = ("OnChipCounter", 5_000))).bundle_unchecked(org), Reason::EnergyInvalid, Place::Record(4)), + refuse("summary_figure_beside_unmetered", "a summary stating a figure beside the unmetered label", replaced(&base, 4, home_summary(&|x| x.energy = ("unmetered", 7))).bundle_unchecked(org), Reason::EnergyInvalid, Place::Record(4)), + refuse("summary_record_invalid", "a summary of a session that closed before it opened", replaced(&base, 4, home_summary(&|x| x.closed_ms = x.opened_ms - 1)).bundle_unchecked(org), Reason::RecordInvalid, Place::Record(4)), + refuse("summary_bad_signature", "a summary whose bytes out were raised after it was signed", base.bundle(org).pipe(|mut b| { + let l = b["records"][4]["line"].as_str().expect("a line").replacen("\"object_bytes_forwarded\":8624000", "\"object_bytes_forwarded\":8624001", 1); + b["records"][4]["line"] = json!(l); + b + }), Reason::BadSignature, Place::Record(4)), + refuse("summary_bad_key", "a summary naming as its relay a key of small order", replaced(&base, 4, line(home_text(&|_| {}).replacen(&hex(&pk(&k.home)), &hex(&crate::sig::IDENTITY), 1))).bundle_unchecked(org), Reason::BadKey, Place::Record(4)), + refuse("hop_truncated", "a per-hop record one byte short", replaced(&base, 1, bytes_edited(&t.relay, "record", |b| { b.pop(); })).bundle_unchecked(org), Reason::Truncated, Place::Record(1)), + refuse("hop_energy_invalid", "a per-hop record whose OnChipCounter class declares no uncertainty", replaced(&base, 1, resigned_hop(&t.relay, &k.home, |r| { + r.class = Some(EnergyProvenance::OnChipCounter { uncertainty: Uncertainty { relative_ppm: 0, window_us: 24_000_000 }, filtering: CounterFiltering::Unknown }); + })).bundle_unchecked(org), Reason::EnergyInvalid, Place::Record(1)), + refuse("hop_record_invalid", "a per-hop record whose span ends where it starts", replaced(&base, 1, resigned_hop(&t.relay, &k.home, |r| r.end = r.start)).bundle_unchecked(org), Reason::RecordInvalid, Place::Record(1)), + refuse("hop_bad_signature", "a per-hop record whose signature does not verify", replaced(&base, 1, bytes_edited(&t.relay, "record", |b| { let n = b.len() - 1; b[n] ^= 1; })).bundle_unchecked(org), Reason::BadSignature, Place::Record(1)), + refuse("hop_ledger_invalid", "a per-hop record whose ledger is not a whole number of entries", replaced(&base, 1, bytes_edited(&t.relay, "ledger", |b| { b.pop(); })).bundle_unchecked(org), Reason::LedgerInvalid, Place::Record(1)), + refuse("hop_ledger_mismatch", "a per-hop record beside another record's ledger", replaced(&base, 1, { + let mut c = t.relay.clone(); + c["ledger"] = t.compositor_counter["ledger"].clone(); + c + }).bundle_unchecked(org), Reason::LedgerMismatch, Place::Record(1)), + refuse("descriptor_truncated", "a room descriptor cut short of its t0", replaced(&base, 0, bytes_edited(&t.lesson, "descriptor", |b| b.truncate(120))).bundle_unchecked(org), Reason::Truncated, Place::Record(0)), + refuse("descriptor_bad_signature", "a room descriptor whose signature does not verify", replaced(&base, 0, bytes_edited(&t.lesson, "descriptor", |b| { let n = b.len() - 1; b[n] ^= 1; })).bundle_unchecked(org), Reason::BadSignature, Place::Record(0)), + // Records of the wrong signer, role, place or time. + refuse("signer_not_enrolled", "a summary signed by a relay no enrolment names", plus(&base, summary(&k.outsider, &s.edge[1])).bundle_unchecked(org), Reason::SignerNotEnrolled, Place::Record(8)), + refuse("hop_signer_not_enrolled", "a per-hop record of an ingest gateway no enrolment names", plus(&base, t.ingest.clone()).bundle_unchecked(org), Reason::SignerNotEnrolled, Place::Record(8)), + refuse("summary_role_mismatch", "a summary signed by a node enrolled as an ingest gateway", with_enrolments(&base, vec![home_e.clone(), enrol(org, &k.edge, role::INGEST, "edge"), comp_e.clone()]).bundle_unchecked(org), Reason::RoleMismatch, Place::Record(6)), + refuse("hop_role_mismatch", "a compositor's per-hop record, its node enrolled as a relay", with_enrolments(&base, vec![home_e.clone(), edge_e.clone(), enrol(org, &k.compositor, role::RELAY, "compositor")]).bundle_unchecked(org), Reason::RoleMismatch, Place::Record(2)), + refuse("descriptor_missing", "a per-hop record whose room's descriptor the bundle does not hold", with_records(&base, base.records[1..].to_vec()).bundle_unchecked(org), Reason::DescriptorMissing, Place::Record(0)), + refuse("summary_outside_period", "a summary of a session that ended after the period", plus(&base, summary(&k.home, &s.home_later)).bundle_unchecked(org), Reason::OutsidePeriod, Place::Record(8)), + refuse("hop_outside_period", "the relay room's record, two days after the period, with its descriptor", with_records(&base, [base.records.clone(), vec![t.relay_room.clone(), t.recorded.clone()]].concat()).bundle_unchecked(org), Reason::OutsidePeriod, Place::Record(9)), + refuse("outside_enrolment", "a per-hop record of a relay enrolled from after the record's span", { + let late = Enrolment::new(pk(org), pk(&k.home), role::RELAY, LESSON_T0 + 30_000_000, NO_END, "home").sign(org); + with_enrolments(&with_records(&base, vec![t.lesson.clone(), t.relay.clone()]), vec![late]).bundle_unchecked(org) + }, Reason::OutsideEnrolment, Place::Record(1)), + // One thing once. + refuse("record_duplicate", "a summary given twice", plus(&base, base.records[4].clone()).bundle_unchecked(org), Reason::RecordDuplicate, Place::Record(8)), + refuse("descriptor_duplicate", "a room descriptor given twice", plus(&base, t.lesson.clone()).bundle_unchecked(org), Reason::RecordDuplicate, Place::Record(8)), + refuse("session_summarised_twice", "two summaries of one session of one relay, which differ in when it closed", plus(&base, home_summary(&|x| x.closed_ms += 1)).bundle_unchecked(org), Reason::RecordOverlap, Place::Record(8)), + refuse("hop_records_overlap", "two per-hop records of one compositor and one room whose spans overlap: one OnChipCounter, one ModelBased", plus(&base, t.compositor_model.clone()).bundle_unchecked(org), Reason::RecordOverlap, Place::Record(8)), + // The figures. + refuse("line_unsourced", "a node line for an enrolled node that signed nothing in the period", silent_line.edited(org, |r| { + r.nodes.insert(silent_at, NodeLine { node: pk(&k.ingest), role: role::INGEST, cites: cites_digest(&BTreeSet::new()), ..NodeLine::default() }); + }), Reason::LineUnsourced, Place::Node(silent_at)), + refuse("room_line_unsourced", "a room line for a room no per-hop record names, citing the record of another room", base.edited(org, |r| { + let mut l = r.rooms[0].clone(); + l.room = [0xee; 32]; + r.rooms.push(l); + }), Reason::LineUnsourced, Place::Room(1)), + refuse("classes_summed", "the lesson room's OnChipCounter row stated as the sum of its own figure and the ModelBased figure", week.edited(org, |r| { + let x = &mut r.rooms[0].energy.rows; + let model = x.iter().find(|w| w.tag == 2).expect("a ModelBased row").joules; + let counter = x.iter_mut().find(|w| w.tag == 4).expect("an OnChipCounter row"); + counter.joules += model; + }), Reason::ClassesSummed, Place::Room(0)), + refuse("unmetered_dropped", "the home relay's line with its sessions' unmetered figures dropped", base.edited(org, |r| r.nodes[home_at].energy.unmetered[0] = 0), Reason::UnmeteredSummed, Place::Node(home_at)), + refuse("unmetered_as_zero", "the relay room's unmetered hop stated as an OnChipCounter figure of zero joules", week.edited(org, |r| { + let l = &mut r.rooms[1]; + l.energy.unmetered[1] = 0; + l.energy.rows.push(Row { scope: scope::HOPS, tag: 4, figures: 1, joules: 0, max_ppm: 1 }); + }), Reason::UnmeteredSummed, Place::Room(1)), + refuse("totals_unmetered_dropped", "totals whose hops leave out the relay room's unmetered figure, which would state them whole", week.edited(org, |r| r.totals.energy.unmetered[1] = 0), Reason::UnmeteredSummed, Place::Totals), + refuse("citation_mismatch", "a node line citing one record fewer than it came from", base.edited(org, |r| r.nodes[edge_at].cited -= 1), Reason::CitationMismatch, Place::Node(edge_at)), + refuse("cites_mismatch", "a room line whose citation digest leaves out its descriptor", base.edited(org, |r| { + let hops: BTreeSet<(u8, [u8; 32])> = r.records.iter().filter(|(x, _)| *x == kind::HOP).copied().collect(); + r.rooms[0].cites = cites_digest(&hops); + }), Reason::CitationMismatch, Place::Room(0)), + refuse("bytes_mismatch", "a node line stating one byte more out than its summaries", base.edited(org, |r| r.nodes[home_at].bytes_out += 1), Reason::ReportMismatch, Place::Report), + refuse("link_bytes_counted_as_sessions", "the edge's line counting its upstream link's bytes as its clients'", base.edited(org, |r| { + let l = &mut r.nodes[edge_at]; + l.bytes_in += l.link_bytes_in; + l.link_bytes_in = 0; + }), Reason::ReportMismatch, Place::Report), + refuse("role_misstated", "a relay's node line stating the role of an ingest gateway", base.edited(org, |r| r.nodes[edge_at].role = role::INGEST), Reason::ReportMismatch, Place::Report), + refuse("max_ppm_mismatch", "a row stating a smaller declared uncertainty than its figures", measured.edited(org, |r| r.rooms[0].energy.rows[0].max_ppm -= 1), Reason::ReportMismatch, Place::Report), + refuse("record_not_reported", "a bundle holding a descriptor the report does not list", plus(&base, t.relay_room.clone()).bundle_with_report_of(org, &base), Reason::ReportMismatch, Place::Report), + refuse("enrolment_not_reported", "a report listing another digest for an enrolment", base.edited(org, |r| r.enrolments[0].1 = [0; 32]), Reason::ReportMismatch, Place::Report), + refuse("totals_mismatch", "totals stating one session more than the node lines", base.edited(org, |r| r.totals.sessions += 1), Reason::ReportMismatch, Place::Report), + ] +} + +/// Pipe a value through a function, for building a vector in one expression. +trait Pipe: Sized { + fn pipe(self, f: impl FnOnce(Self) -> T) -> T { + f(self) + } +} +impl Pipe for Value {} + +impl Case { + /// The bundle whose report is computed from the records that read and verify, are placed in + /// the period within their enrolments, and are counted once (a control's defective record + /// left out): the bundle is refused for that record, and a verifier that let the record + /// through would find a report that does not recompute. + fn bundle_unchecked(&self, org: &SigningKey) -> Value { + let read: Vec = self.records.iter().filter_map(|c| read_record(c).ok()).collect(); + let t0s: BTreeMap<[u8; 32], u64> = read.iter().filter_map(|r| if let Record::Descriptor(d) = r { Some((d.room, d.t0)) } else { None }).collect(); + let mut seen = Seen::default(); + let mut kept = Vec::new(); + for r in read { + let placed = r.signer().is_none_or(|s| place(&r, s, &self.enrolments, &t0s, Some(self.period)).is_ok()); + if placed && seen.check(&r).is_ok() { + seen.add(&r); + kept.push(r); + } + } + let report = sign_report(org, self.period.0, self.period.1, &self.enrolments, &kept).expect("stated"); + bundle(&report, &self.enrolments, &self.records) + } + + /// The bundle of these records beside the report of another case's. + fn bundle_with_report_of(&self, org: &SigningKey, other: &Case) -> Value { + bundle(&other.report(org), &self.enrolments, &self.records) + } +} + +/// The corpus, as `vectors.json` holds it: from the metering corpus under `wai`. +pub fn generate(wai: &Path) -> Result { + let t = taken(wai)?; + let k = keys(); + let mut out = Vec::new(); + for v in vectors(&t) { + let got = outcome_json(&super::verify(&v.bundle)); + match v.intent { + None if got["outcome"] == "accept" => {} + Some((r, at)) if got["reason"] == r.code() && got["at"] == at.json() => {} + _ => return Err(format!("{}: the outcome is {got}, not the one it was written to have", v.name)), + } + out.push(json!({"name": v.name, "about": v.about, "bundle": v.bundle, "outcome": got})); + } + let doc = json!({ + "corpus": "live-conformance/fleet", + "extension": "extensions/fleet.md", + "keys": { + "organisation": hex(&pk(&k.org)), "another_organisation": hex(&pk(&k.stranger)), + "home": hex(&pk(&k.home)), "edge": hex(&pk(&k.edge)), "compositor": hex(&pk(&k.compositor)), + "ingest": hex(&pk(&k.ingest)), "room_service": hex(&pk(&k.room_service)), "outsider": hex(&pk(&k.outsider)), + }, + "vectors": out, + }); + Ok(serde_json::to_string_pretty(&doc).expect("JSON") + "\n") +} + +/// Every vector against the outcome it states: the failures. +pub fn verify(text: &str) -> Vec { + let doc: Value = match serde_json::from_str(text) { + Ok(d) => d, + Err(e) => return vec![format!("vectors.json: {e}")], + }; + let mut fails = Vec::new(); + for v in doc["vectors"].as_array().into_iter().flatten() { + let name = v["name"].as_str().unwrap_or("?"); + let got = outcome_json(&super::verify(&v["bundle"])); + if got != v["outcome"] { + fails.push(format!("{name}: the outcome is {got}, the corpus states {}", v["outcome"])); + } + } + fails +} + +/// The summary lines of the corpus's accepted vectors, each with the relay key it names: what +/// `wai-fleet`'s tests read with the reference relay's own types (§11). +pub fn summary_lines(text: &str) -> Vec { + let doc: Value = serde_json::from_str(text).unwrap_or(Value::Null); + let mut out = Vec::new(); + for v in doc["vectors"].as_array().into_iter().flatten().filter(|v| v["outcome"]["outcome"] == "accept") { + for r in v["bundle"]["records"].as_array().into_iter().flatten() { + if let Some(l) = r["line"].as_str() + && !out.iter().any(|x: &String| x == l) + { + out.push(l.to_string()); + } + } + } + out +} diff --git a/wai/wai-rs/src/lib.rs b/wai/wai-rs/src/lib.rs index 7f9f8e709..f4725b730 100644 --- a/wai/wai-rs/src/lib.rs +++ b/wai/wai-rs/src/lib.rs @@ -738,6 +738,14 @@ pub mod receipt_ledger; /// cbindgen:ignore #[cfg(feature = "stream_audit")] pub mod stream_audit; +// Fleet (extensions/fleet.md): `wai.delivery.fleet` — an organisation's nodes enrolled by their +// signing keys, the records each contributes as it signs them (a relay's session summaries, every +// hop's per-hop records, the room descriptors that place them), and the fleet report the organisation +// signs for a period and anyone holding the bundle recomputes. Rust-only, like the other record +// modules. +/// cbindgen:ignore +#[cfg(feature = "fleet")] +pub mod fleet; // Native sink (extensions/native-sink.md): the core a native host's player integration runs — // playlists verified against their receipts, objects held to the content hashes their names state, // stream-audit's records signed under a fresh session key, the bundle, and the termination rule. Its C @@ -787,9 +795,10 @@ pub mod prior_wire; #[cfg(feature = "scene_map")] pub mod scene_map; -// The strict JSON reader the two mappings above share. Rust-only. +// The strict JSON reader the two mappings above share, and the fleet's reader of a relay's session +// summaries. Rust-only. /// cbindgen:ignore -#[cfg(any(feature = "prior_wire", feature = "scene_map"))] +#[cfg(any(feature = "prior_wire", feature = "scene_map", feature = "fleet"))] pub(crate) mod strict_json; // Bearer receipts (extensions/bearer-receipts.md): `wai.bearer.receipts` — one receipt on every // bearer; the verdict over a group from its transmission and reconciliation claims, the upper diff --git a/wai/wai-rs/src/strict_json.rs b/wai/wai-rs/src/strict_json.rs index 364801863..a86071ad4 100644 --- a/wai/wai-rs/src/strict_json.rs +++ b/wai/wai-rs/src/strict_json.rs @@ -39,6 +39,7 @@ impl Json { _ => None, } } + #[cfg_attr(not(any(feature = "prior_wire", feature = "scene_map")), allow(dead_code))] pub fn as_arr(&self) -> Option<&[Json]> { match self { Json::Arr(a) => Some(a), @@ -286,6 +287,7 @@ impl P<'_> { /// `s` as a JSON string, escaped as RFC 8785 §3.2.2.2 escapes it: `"` and `\` with a /// backslash, U+0008, U+0009, U+000A, U+000C and U+000D by their short escapes, every other /// control character as `\u00xx` with lowercase hexadecimal digits, and nothing else. +#[cfg_attr(not(any(feature = "prior_wire", feature = "scene_map")), allow(dead_code))] pub fn quote(s: &str) -> String { let mut o = String::with_capacity(s.len() + 2); o.push('"'); diff --git a/wai/wai-rs/tests/fleet.rs b/wai/wai-rs/tests/fleet.rs new file mode 100644 index 000000000..21c5ce39b --- /dev/null +++ b/wai/wai-rs/tests/fleet.rs @@ -0,0 +1,168 @@ +//! `wai.delivery.fleet` (extensions/fleet.md): the committed corpus +//! `live-conformance/fleet/vectors.json` regenerates byte for byte from its seeds and the metering +//! corpus, and is the only file there besides its README; every vector gets the outcome it states; +//! every reason the extension adds and every code it reuses refuses a vector; the accepted vectors +//! are the cases §11 names, with measured, unmetered and partial energy stated as §5.4 states +//! them; a fleet's records held as a service holds them sign the report the corpus holds; and §10 +//! lists exactly the reasons the reference reports. +#![cfg(feature = "fleet")] + +use std::collections::BTreeSet; +use std::path::PathBuf; + +use serde_json::{json, Value}; +use wai::fleet::{self, corpus, Held, Reason}; + +fn wai_dir() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("..") +} + +fn read(p: &str) -> String { + std::fs::read_to_string(wai_dir().join(p)).unwrap_or_else(|e| panic!("{p}: {e}")) +} + +fn committed() -> String { + read("live-conformance/fleet/vectors.json") +} + +fn doc() -> Value { + serde_json::from_str(&committed()).unwrap() +} + +fn vector(d: &Value, name: &str) -> Value { + d["vectors"].as_array().unwrap().iter().find(|v| v["name"] == name).unwrap_or_else(|| panic!("no vector {name}")).clone() +} + +#[test] +fn the_committed_corpus_regenerates_from_its_seeds_and_the_metering_corpus() { + let generated = corpus::generate(&wai_dir()).expect("the corpus generates"); + assert!(committed() == generated, "live-conformance/fleet/vectors.json differs from `wai_fleet_vectors gen`"); + let mut files: Vec = std::fs::read_dir(wai_dir().join("live-conformance/fleet")).unwrap().flatten().map(|e| e.file_name().to_string_lossy().into_owned()).collect(); + files.sort(); + assert_eq!(files, ["README.md", "vectors.json"]); +} + +#[test] +fn every_vector_gets_its_stated_outcome() { + let fails = corpus::verify(&committed()); + assert!(fails.is_empty(), "{}", fails.join("\n")); +} + +/// Every reason this extension adds and every code it reuses refuses a vector. +#[test] +fn the_corpus_refuses_every_reason() { + let d = doc(); + let seen: BTreeSet<&str> = d["vectors"].as_array().unwrap().iter().filter_map(|v| v["outcome"]["reason"].as_str()).collect(); + for r in Reason::ALL.iter().chain(Reason::REUSED.iter()) { + assert!(seen.contains(r.code()), "nothing in the corpus is refused {r}"); + } +} + +fn coverage(e: &Value, scope: &str) -> String { + e[scope]["coverage"].as_str().unwrap().to_string() +} + +fn classes(e: &Value, scope: &str) -> Vec { + e[scope]["rows"].as_array().unwrap().iter().map(|r| r["class"].as_str().unwrap().to_string()).collect() +} + +/// The accepted vectors are §11's, and state energy as §5.4 states it: measured with its class, +/// unmetered as unmetered, a mix as partial, and a silent node as silent. +#[test] +fn the_accepted_vectors_state_measured_unmetered_and_partial_energy() { + let d = doc(); + let week = vector(&d, "a_week")["outcome"].clone(); + assert_eq!(week["outcome"], "accept"); + let lesson = &week["rooms"][0]; + assert_eq!(classes(&lesson["energy"], "hops"), ["ModelBased", "Estimator", "OnChipCounter"], "one row per class, never one across them"); + assert_eq!(coverage(&lesson["energy"], "hops"), "whole"); + assert_eq!(coverage(&week["rooms"][1]["energy"], "hops"), "unmetered", "the reference relay's recorded hop"); + assert_eq!(coverage(&week["totals"]["energy"], "hops"), "partial", "measured and unmetered hops together"); + assert_eq!(coverage(&week["totals"]["energy"], "sessions"), "unmetered", "every session's figure is the marker"); + assert_eq!(week["totals"]["energy"]["sessions"]["unmetered"], 7); + assert_eq!(week["totals"]["energy"]["hops"]["unmetered"], 1); + let silent: Vec<&str> = week["enrolments"].as_array().unwrap().iter().filter(|e| e["silent"] == true).map(|e| e["label"].as_str().unwrap()).collect(); + assert_eq!(silent, ["room service"], "enrolled and silent: listed, with no line"); + assert!(week["nodes"].as_array().unwrap().iter().all(|n| n["label"] != "room service")); + let edge = week["nodes"].as_array().unwrap().iter().find(|n| n["label"] == "edge").unwrap(); + let home = week["nodes"].as_array().unwrap().iter().find(|n| n["label"] == "home").unwrap(); + assert_eq!((edge["links"].as_u64(), home["links"].as_u64()), (Some(1), Some(1)), "the edge's upstream link, one session at each end"); + assert_eq!(edge["link_bytes_in"], home["link_bytes_out"], "what home sent over the link, the edge received"); + assert!(week["nodes"].as_array().unwrap().iter().chain(week["rooms"].as_array().unwrap()).all(|l| !l["cites"].as_array().unwrap().is_empty()), "every line cites its records"); + + let measured = vector(&d, "measured_only")["outcome"].clone(); + assert_eq!(coverage(&measured["totals"]["energy"], "hops"), "whole"); + assert_eq!(coverage(&measured["totals"]["energy"], "sessions"), "none"); + let row = &measured["totals"]["energy"]["hops"]["rows"][0]; + assert_eq!((row["class"].as_str(), row["figures"].as_u64()), (Some("OnChipCounter"), Some(2))); + assert!(row["max_ppm"].as_u64().unwrap() > 0, "the largest declared uncertainty of the two"); + + let unmetered = vector(&d, "unmetered_only")["outcome"].clone(); + assert_eq!(coverage(&unmetered["totals"]["energy"], "sessions"), "unmetered"); + assert_eq!(coverage(&unmetered["totals"]["energy"], "hops"), "none"); + assert!(unmetered["totals"]["energy"]["sessions"]["rows"].as_array().unwrap().is_empty(), "no row, never a figure of zero joules"); + + let silent = vector(&d, "enrolled_and_silent")["outcome"].clone(); + assert_eq!((silent["nodes"].as_array().unwrap().len(), silent["rooms"].as_array().unwrap().len()), (0, 0)); + assert!(silent["enrolments"].as_array().unwrap().iter().all(|e| e["silent"] == true)); + assert_eq!(coverage(&silent["totals"]["energy"], "hops"), "none"); +} + +/// A fleet held as the service holds it (§9): the week's enrolments and records admitted one by +/// one, in the corpus's order, sign the corpus's report byte for byte; each record is admitted +/// once; and the per-hop records of a room come back in the ledger's source form (§8). +#[test] +fn a_held_fleet_signs_the_corpus_report() { + let d = doc(); + let week = vector(&d, "a_week"); + let b = &week["bundle"]; + let org_seed: [u8; 32] = { + use sha2::{Digest, Sha256}; + Sha256::new().chain_update(b"wai:fleet/corpus/key\x00").chain_update(b"organisation").finalize().into() + }; + let org = ed25519_dalek::SigningKey::from_bytes(&org_seed); + let mut held = Held::new(org.verifying_key().to_bytes()); + for e in b["enrolments"].as_array().unwrap() { + held.enrol(&fleet::unhex(e.as_str().unwrap()).unwrap()).unwrap(); + } + assert_eq!(held.enrol(&fleet::unhex(b["enrolments"][0].as_str().unwrap()).unwrap()).unwrap_err(), Reason::EnrolmentDuplicate); + for r in b["records"].as_array().unwrap() { + held.admit(r).unwrap_or_else(|e| panic!("{r}: {e}")); + } + for r in b["records"].as_array().unwrap().iter().take(3) { + assert_eq!(held.admit(r).unwrap_err(), Reason::RecordDuplicate, "a record is held once"); + } + let start = week["outcome"]["start"].as_u64().unwrap(); + let end = week["outcome"]["end"].as_u64().unwrap(); + let (report, bundle) = held.report(&org, start, end).unwrap(); + assert_eq!(Value::String(fleet::hex(&report.to_bytes())), b["report"], "the corpus's report, byte for byte"); + assert_eq!(fleet::outcome_json(&fleet::verify(&bundle)), week["outcome"]); + let lesson = week["outcome"]["rooms"][0]["room"].as_str().unwrap(); + let hops = held.hops_of(&fleet::unhex(lesson).unwrap().try_into().unwrap()); + assert_eq!(hops.len(), 3); + assert!(hops.iter().all(|h| h.as_object().unwrap().keys().cloned().collect::>() == ["record", "ledger"])); + // A day of the week holds the lesson's records and none of the relay room's. + let (_, day) = held.of_period(1_792_108_800_000_000, 1_792_195_200_000_000); + assert!(day.iter().all(|(r, _)| !matches!(r, fleet::Record::Hop(h) if fleet::hex(&h.record.room) != lesson))); + // A record of an unenrolled node, or before its descriptor, is refused. + let mut empty = Held::new(org.verifying_key().to_bytes()); + let hop = b["records"].as_array().unwrap().iter().find(|r| r["kind"] == "hop").unwrap(); + assert_eq!(empty.admit(hop).unwrap_err(), Reason::SignerNotEnrolled); + empty.enrol(&fleet::unhex(b["enrolments"][0].as_str().unwrap()).unwrap()).unwrap(); + let e = empty.admit(&json!({"kind": "descriptor", "descriptor": "00"})); + assert_eq!(e.unwrap_err(), Reason::Truncated); +} + +/// §10 of the extension lists exactly the codes `Reason::ALL` has, each once, in order, and +/// names every code `Reason::REUSED` has. +#[test] +fn the_extension_lists_the_reasons() { + let text = read("extensions/fleet.md"); + let section = text.split("\n## 10. Reasons").nth(1).unwrap().split("\n## 11.").next().unwrap(); + let listed: Vec<&str> = section.lines().filter_map(|l| l.strip_prefix("| `")).filter_map(|l| l.split('`').next()).collect(); + let ours: Vec<&str> = Reason::ALL.iter().map(|r| r.code()).collect(); + assert_eq!(listed, ours); + for r in Reason::REUSED { + assert!(section.contains(&format!("`{}`", r.code())), "§10 does not name the reused code {r}"); + } +} -- 2.54.0 (Apple Git-157) From d82b136176f80031118e8f9d969e5769dd24eff1 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Tue, 27 Oct 2026 15:31:13 -0400 Subject: [PATCH 2/5] wai-fleet: a fleet as a service, enrolments and records kept append-only, reports signed and kept with their bundles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The HTTP API of extensions/fleet.md §9 over a directory it owns (two append-only logs, reports written whole, a lock, everything verified again on start), and wai-fleet collect, which gives each line of a node's summary file, a path or an http(s) address, to a running service. Its tests sign the corpus's report byte for byte, recover the directory, cut off a line a crash cut short, read every corpus summary back through the reference relay's own types, and collect records the relay's own code signed from a file over HTTP; smoke.sh checks the API over HTTP and the bundle with fleet_verify.py. wai-rs: Held checks a record or an enrolment before it is kept, so the service keeps one only once it is on disk. Co-Authored-By: Claude Opus 5.5 --- wai/extensions/fleet.md | 1 + wai/wai-fleet/Cargo.lock | 2958 +++++++++++++++++++++++++++++++++++ wai/wai-fleet/Cargo.toml | 41 + wai/wai-fleet/README.md | 100 ++ wai/wai-fleet/smoke.sh | 99 ++ wai/wai-fleet/src/client.rs | 109 ++ wai/wai-fleet/src/fleet.rs | 145 ++ wai/wai-fleet/src/http.rs | 176 +++ wai/wai-fleet/src/main.rs | 185 +++ wai/wai-fleet/src/store.rs | 94 ++ wai/wai-fleet/src/tests.rs | 248 +++ wai/wai-rs/src/fleet.rs | 43 +- 12 files changed, 4189 insertions(+), 10 deletions(-) create mode 100644 wai/wai-fleet/Cargo.lock create mode 100644 wai/wai-fleet/Cargo.toml create mode 100644 wai/wai-fleet/README.md create mode 100755 wai/wai-fleet/smoke.sh create mode 100644 wai/wai-fleet/src/client.rs create mode 100644 wai/wai-fleet/src/fleet.rs create mode 100644 wai/wai-fleet/src/http.rs create mode 100644 wai/wai-fleet/src/main.rs create mode 100644 wai/wai-fleet/src/store.rs create mode 100644 wai/wai-fleet/src/tests.rs diff --git a/wai/extensions/fleet.md b/wai/extensions/fleet.md index 8eb799c39..b03689340 100644 --- a/wai/extensions/fleet.md +++ b/wai/extensions/fleet.md @@ -467,6 +467,7 @@ key: | `POST /v1/fleet/records` | `{"records": [...]}`: each record (§4.1), in order, verified as §7.2 steps 3 to 5 verify it against the enrolments and the records held, with no period, a descriptor held before it or earlier in the request; each held record is kept, and the answer gives each record's kind and identity or its refusal | | `GET /v1/fleet/rooms/{room}/hops` | the per-hop records held of a room, each `record` and `ledger` (§8) | | `POST /v1/fleet/reports` | `{"start", "end"}`: the report of the period over the enrolments whose span meets it and the records held in it, with the descriptors those name, signed, verified as §7 verifies it, and kept with its bundle | +| `GET /v1/fleet/reports` | every report kept, with its period | | `GET /v1/fleet/reports/{digest}` | the report's bundle and its outcome | | `POST /v1/fleet/verify` | a bundle: its outcome (§7.3) | diff --git a/wai/wai-fleet/Cargo.lock b/wai/wai-fleet/Cargo.lock new file mode 100644 index 000000000..74bf1d2e2 --- /dev/null +++ b/wai/wai-fleet/Cargo.lock @@ -0,0 +1,2958 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common 0.1.7", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "android_system_properties" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + +[[package]] +name = "arrayvec" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" + +[[package]] +name = "asn1-rs" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f43a50ac4fdca5df8e885c21b835997f0a1cdee65494a6847694a98652d9d8" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure 0.13.2", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "async-trait" +version = "0.1.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "axum" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "bit-vec" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" + +[[package]] +name = "blake3" +version = "1.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae" +dependencies = [ + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" + +[[package]] +name = "cbindgen" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ecb53484c9c167ba674026b656d8a27d7657a58e6066aa902bfb1a4aa00ae20" +dependencies = [ + "heck", + "indexmap", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.119", + "tempfile", + "toml", +] + +[[package]] +name = "cc" +version = "1.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common 0.1.7", + "inout", +] + +[[package]] +name = "combine" +version = "4.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "data-encoding" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid 0.9.6", + "zeroize", +] + +[[package]] +name = "der-parser" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "const-oid 0.10.2", + "crypto-common 0.2.2", +] + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "serde", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand_core 0.6.4", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastbloom" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef975e30683b2d965054bb0a836f8973857c4ebf6acf274fe46617cd285060d8" +dependencies = [ + "foldhash", + "libm", + "portable-atomic", + "siphasher", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.1", + "wasm-bindgen", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "httlib-huffman" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a9fcbcc408c5526c3ab80d534e5c86e7967c1fb7aa0a8c76abd1edc27deb877" + +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hybrid-array" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" +dependencies = [ + "typenum", +] + +[[package]] +name = "hyper" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3e324da4c95177d6291d4c8730197c0d1822f8a9766814a4a44fa5ab797c9c" +dependencies = [ + "atomic-waker", + "bytes", + "futures-core", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc03d96684f9226b8a787cdb71488417b53ab5ea8fdb1dac946cb9431cc8bff" +dependencies = [ + "bytes", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" + +[[package]] +name = "icu_properties" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" + +[[package]] +name = "icu_provider" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.119", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "joule-moq" +version = "0.3.0" +dependencies = [ + "aes", + "aes-gcm", + "async-trait", + "blake3", + "bytes", + "chrono", + "ctr", + "ed25519-dalek", + "futures", + "hkdf", + "hmac", + "jwp", + "rand_core 0.6.4", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror", + "tokio", + "tracing", + "uuid", +] + +[[package]] +name = "joule-moq-relay" +version = "0.1.0" +dependencies = [ + "async-trait", + "base64", + "blake3", + "bytes", + "ed25519-dalek", + "futures", + "hex", + "joule-moq", + "quinn", + "rand_core 0.6.4", + "ring", + "rustls", + "rustls-native-certs", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-rustls", + "tokio-tungstenite", + "toml", + "tracing", + "tracing-subscriber", + "wtransport", +] + +[[package]] +name = "js-sys" +version = "0.3.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "jwp" +version = "0.1.0" +dependencies = [ + "blake3", + "bytes", + "ciborium", + "futures-util", + "lz4_flex", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-util", + "tracing", + "zstd", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "log" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "lz4_flex" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" +dependencies = [ + "twox-hash", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1788edb87fdc09c7e26304471e2f5be8cdefb1b6930d6e3985fc02ff53bf86ee" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "octets" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d59d30d3ad7f7e1c9a66e51c9cb71ae1c794b28ffe7053fd785defb0d180069" + +[[package]] +name = "oid-registry" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl-probe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" + +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64", + "serde_core", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quinn" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9746dbde176634f4f2f1faf2404e30a31b2bc1e9cafb5329c95d8177a18c9fc" +dependencies = [ + "bytes", + "fastbloom", + "getrandom 0.4.3", + "lru-slab", + "rand 0.10.2", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "slab", + "thiserror", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.61.2", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha", + "rand_core 0.9.5", +] + +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + +[[package]] +name = "rcgen" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "091e7a8e7d86e6feb87a27ce8e2cba29d49eff9507afeebefab7eeb2ca667fb4" +dependencies = [ + "ring", + "rustls-pki-types", + "time", + "x509-parser", + "yasna", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pki-types" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.103.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "security-framework" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "indexmap", + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_spanned" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", + "sha2-asm", +] + +[[package]] +name = "sha2" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + +[[package]] +name = "sha2-asm" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b845214d6175804686b2bd482bcffe96651bb2d1200742b712003504a2dac1ab" +dependencies = [ + "cc", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "simd_cesu8" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b" + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "synstructure" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "thiserror" +version = "2.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "thread_local" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.54.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52fd3255258d26fac7264ab5a76b53c13367136dc011d3d6ad4f8ed070396a3" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9cc2678c2cdd569ef8215e2afd7954ada2ae20b4fdd2c5fe6139a3b02d105db" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "libc", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.1.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c" +dependencies = [ + "winnow 1.0.4", +] + +[[package]] +name = "toml_writer" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tungstenite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.9.5", + "sha1", + "thiserror", +] + +[[package]] +name = "twox-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8464ec13c3691491391d9fce00f6416c9a48e46972f72d7865688be2080192c9" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common 0.1.7", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "sha1_smol", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wai" +version = "0.3.0" +dependencies = [ + "blake3", + "cbindgen", + "curve25519-dalek", + "ed25519-dalek", + "num-bigint", + "pkg-config", + "serde", + "serde_json", + "sha2 0.10.9", + "wai-ops", +] + +[[package]] +name = "wai-fleet" +version = "0.1.0" +dependencies = [ + "axum", + "ed25519-dalek", + "getrandom 0.4.3", + "hex", + "joule-moq-relay", + "rustls", + "rustls-native-certs", + "serde_json", + "sha2 0.10.9", + "tokio", + "tokio-rustls", + "wai", +] + +[[package]] +name = "wai-ops" +version = "0.1.0" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58ec80e73fd8baf57bf0d9615554c75348bda990d6d5bbeab964dd068319fecb" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "wtransport" +version = "0.7.2" +dependencies = [ + "bytes", + "pem", + "quinn", + "rcgen", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "sha2 0.11.1", + "socket2", + "thiserror", + "time", + "tokio", + "tracing", + "url", + "wtransport-proto", + "x509-parser", +] + +[[package]] +name = "wtransport-proto" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad9059572c7dbd6901ccef37f3b7321678cd708dcf58a64b1921dbeab7bfede" +dependencies = [ + "httlib-huffman", + "octets", + "thiserror", + "url", +] + +[[package]] +name = "x509-parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "ring", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "yasna" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5f6765e852b9b4dc8e2a76843e4d64d1cea8e79bcde0b6901aea8e7c7f08282" +dependencies = [ + "bit-vec", + "time", +] + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", + "synstructure 0.14.0", +] + +[[package]] +name = "zerocopy" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", + "synstructure 0.14.0", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zstd" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3ae9bf90af6e40197bef767eeefc46ad6397420fe873830bd85e5fbbfb3c70" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded520f16b29e1a9b771c722221b2b0a0398c2316d9bb3c42b458a5414d7434b" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.1.2+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "481ada9c543b2323cbb7bbdbb5249177fbf0188ed959ed2c15e4b22421c84ed3" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/wai/wai-fleet/Cargo.toml b/wai/wai-fleet/Cargo.toml new file mode 100644 index 000000000..18398eefb --- /dev/null +++ b/wai/wai-fleet/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "wai-fleet" +version = "0.1.0" +edition = "2024" +rust-version = "1.97" +license = "Apache-2.0" +description = "A WAI fleet as a service: an organisation's nodes enrolled by their signing keys, the session summaries and per-hop records they sign verified and kept append-only, and the fleet report the organisation signs for a period, exported as a bundle that verifies offline." +repository = "https://git.transaction.science/Transaction-Science/open-standards" +publish = false + +# Its own workspace and Cargo.lock, like the other crates beside wai-rs. +[workspace] + +# The relay's wtransport, vendored with its WebTransport session close, as the relay's own +# workspace patches it (joule-code/joule-code-rs/vendor/wtransport/VENDORED.md): the relay is a +# dev-dependency here, for its own types in the tests. +[patch.crates-io] +wtransport = { path = "../../joule-code/joule-code-rs/vendor/wtransport" } + +[dependencies] +axum = "0.8" +tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "signal", "io-util", "time"] } +serde_json = { version = "1", features = ["preserve_order"] } +ed25519-dalek = "2" +getrandom = "0.4" +# `wai-fleet collect` reads a node's published summary file over https: rustls with ring, as the +# relay's own upstream does, and the platform's roots. +rustls = { version = "0.23", default-features = false, features = ["ring", "std"] } +tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] } +rustls-native-certs = "0.8" +wai = { path = "../wai-rs", default-features = false, features = ["fleet"] } + +[profile.release] +lto = "thin" + +[dev-dependencies] +sha2 = "0.10" +# The reference relay, for its own types: the corpus's summaries read and re-serialised by them, +# and summaries and per-hop records signed by its own code, collected from a file it would write. +joule-moq-relay = { path = "../../joule-code/joule-code-rs/crates/joule-moq-relay" } +hex = "0.4" diff --git a/wai/wai-fleet/README.md b/wai/wai-fleet/README.md new file mode 100644 index 000000000..688537ba9 --- /dev/null +++ b/wai/wai-fleet/README.md @@ -0,0 +1,100 @@ +# wai-fleet + +A WAI fleet ([`extensions/fleet.md`](../extensions/fleet.md)) as a service. An organisation enrols +the nodes it runs by their signing keys: relays, compositors, ingest gateways, room services, +ledgers and audit collectors. Each node contributes the records it already signs, as it signs +them: a relay's session summaries, and every hop's per-hop records with their ledgers, with the +room descriptors that place those in time. The service verifies each record against its node's +enrolled key, keeps it append-only, and for a period signs the **fleet report** with the +organisation key. The report has one line per node and one per room, with sessions, bytes and +energy, and each line cites the records it came from. Energy keeps its acquisition class: one row +per scope and class, never summed across either. An unmetered figure is counted as unmetered, +never as zero joules, and a total over measured and unmetered figures says it is partial. + +Every report is kept with its **bundle**: the report, its enrolments and its records. Any verifier +of the extension checks a bundle without this service, the corpus's second implementation among +them: + +```sh +python3 -I ../live-conformance/fleet_verify.py --bundle week.wai-fleet.json +wai verify week.wai-fleet.json +``` + +Accounts, members, sign-on, quotas and billing are not here. + +## Running it + +```sh +cargo build --locked --release +WAI_FLEET_DIR=/path/to/fleet WAI_FLEET_KEY=/path/to/organisation.key WAI_FLEET_ADDR=127.0.0.1:8252 \ + ./target/release/wai-fleet serve +``` + +| variable | meaning | +|---|---| +| `WAI_FLEET_DIR` | the directory the service owns (required); created when absent | +| `WAI_FLEET_KEY` | the organisation key's file: 32 bytes, the Ed25519 seed; made with mode 0600 when absent | +| `WAI_FLEET_ADDR` | the address it listens on (default `127.0.0.1:8252`) | + +`wai-fleet key` prints the organisation key of `WAI_FLEET_KEY`. `wai-fleet verify FILE` prints a +bundle's outcome. Enrolments are signed with the organisation key, by `wai enrolment create`, and +given to the service; the service signs none itself. + +`wai-fleet collect URL SOURCE` reads a node's summary file and gives each line to the service at +`URL` as a summary record: `SOURCE` is a path (a relay's `summary.out_path`) or an `http` or +`https` address that answers with the file. It prints how many lines were held and how many were +refused, by reason. Collecting the same file again holds nothing twice: a line held already is +refused `record_duplicate`. + +The directory: + +```text +LOCK held exclusively while a process serves the directory +enrolments.jsonl {"enrolment": hex}, one a line, in the order admitted +records.jsonl each record's carriage, one a line, in the order admitted +reports/.wfr a report +reports/.wai-fleet.json its bundle +``` + +The two logs are append-only: a line is written whole and the log synced before the request that +admitted it is answered, and a line a crash cut short, never answered, is cut off on start. Reports +are written whole (to a temporary name, synced, renamed into place). On start the service takes the +lock (a second process on the same directory is refused), then reads every enrolment, record and +report back and verifies each again, and refuses to start on any that does not. + +## Endpoints + +| | | +|---|---| +| `GET /v1/fleet` | the service, its organisation key and its limits | +| `GET /v1/fleet/health` | `ok` | +| `POST /v1/fleet/enrolments` | `{"enrolment": }`: an enrolment the organisation key signed, read and verified, for a node not enrolled yet; `201` with its node, role and digest | +| `GET /v1/fleet/enrolments` | every enrolment, with its node, role, label, span, digest and the records held of it | +| `POST /v1/fleet/records` | `{"records": [...]}`: each record in its carriage, in order, verified against its node's enrolment and every record held; `200` with how many were held and refused, and each one's kind and identity or its reason | +| `GET /v1/fleet/rooms/{room}/hops` | the per-hop records held of a room, each `record` and `ledger`, as a receipt ledger's room source holds them | +| `POST /v1/fleet/reports` | `{"start": <µs>, "end": <µs>}`: the report of the period over the enrolments whose span meets it and the records held in it, signed, verified and kept; `201`, its digest, its outcome and its bundle | +| `GET /v1/fleet/reports` | every report kept, with its period | +| `GET /v1/fleet/reports/{digest}` | a report's bundle and outcome | +| `POST /v1/fleet/verify` | a bundle: its outcome | + +A refusal is `422` with `{"outcome": "refuse", "reason"}`, the extension's reason; a record refused +in a batch is named in the batch's answer. A body that is not what the endpoint takes is `400`; an +unknown report is `404`. A request body is at most 32 MiB and 10 000 records. Requests that change +the fleet run one at a time; `POST /v1/fleet/verify` verifies at most two bundles at a time. + +The service has no accounts. It holds the organisation key because it signs reports. It accepts an +enrolment only when the organisation key signed it and a record only when it verifies under an +enrolled node's key, whoever submits either. It listens on a loopback address unless told +otherwise: who may reach it is decided in front of it. + +## Checks + +```sh +cargo test --locked # the corpus's report signed byte for byte, the directory + # recovered after a restart, a line cut short cut off, one + # process per directory, the corpus's summaries read and + # written again by the relay's own types, and records the + # relay's own code signs collected from a file over HTTP +bash smoke.sh http://127.0.0.1:18252 # over HTTP, against an instance started with the corpus's + # organisation key (see .github/workflows/wai-fleet.yml) +``` diff --git a/wai/wai-fleet/smoke.sh b/wai/wai-fleet/smoke.sh new file mode 100755 index 000000000..9783c4a02 --- /dev/null +++ b/wai/wai-fleet/smoke.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash +# smoke.sh BASE_URL: the fleet service's promises, checked over HTTP against a running instance +# started with the corpus's organisation key (CI starts one locally; see README.md). +# +# bash smoke.sh http://127.0.0.1:18252 +# +# From the committed corpus (../live-conformance/fleet/vectors.json): it enrols the week's nodes, +# gives the service the week's records, asks for the week's report and requires the corpus's report +# byte for byte with the corpus's outcome; checks the report's bundle with the independent verifier, +# fleet_verify.py; requires a record held already, and a record of a node no enrolment names, to be +# refused; requires the lesson room's per-hop records back in the ledger's source form; and requires +# an altered bundle to be refused by POST /v1/fleet/verify. Each check prints one line and the script +# fails on the first that does not hold. Needs curl and python3. +set -euo pipefail +U=${1:?usage: smoke.sh BASE_URL} +U=${U%/} +HERE=$(cd "$(dirname "$0")" && pwd) +CORPUS="$HERE/../live-conformance/fleet/vectors.json" +tmp=$(mktemp -d) +trap 'rm -rf "$tmp"' EXIT + +post() { curl -sS --max-time 300 -o "$3" -w '%{http_code}' -X POST "$U$1" -H 'content-type: application/json' --data-binary "@$2"; } +py() { python3 -I -c "$@"; } + +curl -sS --max-time 30 "$U/v1/fleet" > "$tmp/describe.json" +py 'import json,sys +d=json.load(open(sys.argv[1])); c=json.load(open(sys.argv[2])) +assert d["service"]=="wai-fleet" and d["capability"]=="wai.delivery.fleet", d +assert d["organisation_key"]==c["keys"]["organisation"], "start the service with the corpus organisation key (README.md)" +print("describe: ok, organisation", d["organisation_key"][:16]+"…")' "$tmp/describe.json" "$CORPUS" + +# The week's enrolments, then its records in one request. +py 'import json,sys +c=json.load(open(sys.argv[1])); v=next(x for x in c["vectors"] if x["name"]=="a_week") +for k,e in enumerate(v["bundle"]["enrolments"]): + json.dump({"enrolment": e}, open(sys.argv[2]+"/enrol-%02d.json" % k,"w")) +json.dump({"records": v["bundle"]["records"]}, open(sys.argv[2]+"/records.json","w")) +json.dump({"records": v["bundle"]["records"][:1]}, open(sys.argv[2]+"/again.json","w")) +s=next(x for x in c["vectors"] if x["name"]=="signer_not_enrolled") +json.dump({"records": [s["bundle"]["records"][8]]}, open(sys.argv[2]+"/outsider.json","w")) +json.dump({"start": v["outcome"]["start"], "end": v["outcome"]["end"]}, open(sys.argv[2]+"/period.json","w")) +print(v["outcome"]["rooms"][0]["room"])' "$CORPUS" "$tmp" > "$tmp/lesson" +for f in "$tmp"/enrol-*.json; do + code=$(post /v1/fleet/enrolments "$f" "$f.out") + [ "$code" = 201 ] || { echo "enrolment $(basename "$f"): HTTP $code: $(cat "$f.out")"; exit 1; } +done +echo "enrolments: ok, $(ls "$tmp"/enrol-*.json | wc -l | tr -d ' ') enrolled" +code=$(post /v1/fleet/records "$tmp/records.json" "$tmp/records.out") +[ "$code" = 200 ] || { echo "records: HTTP $code: $(cat "$tmp/records.out")"; exit 1; } +py 'import json,sys +a=json.load(open(sys.argv[1])); assert a["refused"]==0 and a["held"]>0, a +print("records: ok,", a["held"], "held")' "$tmp/records.out" + +# A record held already, and one of a node no enrolment names, are refused. +post /v1/fleet/records "$tmp/again.json" "$tmp/again.out" > /dev/null +post /v1/fleet/records "$tmp/outsider.json" "$tmp/outsider.out" > /dev/null +py 'import json,sys +a=json.load(open(sys.argv[1])); b=json.load(open(sys.argv[2])) +assert a["results"]==[{"refused":"record_duplicate"}], a +assert b["results"]==[{"refused":"signer_not_enrolled"}], b +print("refusals: ok, record_duplicate and signer_not_enrolled")' "$tmp/again.out" "$tmp/outsider.out" + +# The week's report: the corpus's, byte for byte, with its outcome. +code=$(post /v1/fleet/reports "$tmp/period.json" "$tmp/report.out") +[ "$code" = 201 ] || { echo "report: HTTP $code: $(cat "$tmp/report.out")"; exit 1; } +py 'import json,sys +c=json.load(open(sys.argv[1])); v=next(x for x in c["vectors"] if x["name"]=="a_week"); r=json.load(open(sys.argv[2])) +assert r["bundle"]["report"]==v["bundle"]["report"], "the report differs from the corpus" +assert r["outcome"]==v["outcome"], "the outcome differs from the corpus" +json.dump(r["bundle"], open(sys.argv[3]+"/week.wai-fleet.json","w")) +print("report: ok, the corpus report, digest", r["report"][:16]+"…")' "$CORPUS" "$tmp/report.out" "$tmp" +D=$(py 'import json,sys; print(json.load(open(sys.argv[1]))["report"])' "$tmp/report.out") +curl -sS --max-time 60 "$U/v1/fleet/reports/$D" > "$tmp/served.json" +py 'import json,sys +a=json.load(open(sys.argv[1])); b=json.load(open(sys.argv[2])) +assert a["bundle"]==b["bundle"] and a["outcome"]==b["outcome"] +print("report served: ok")' "$tmp/served.json" "$tmp/report.out" + +# The bundle, checked by the second implementation, which shares no code with the service. +python3 -I "$HERE/../live-conformance/fleet_verify.py" --bundle "$tmp/week.wai-fleet.json" > "$tmp/independent.out" \ + || { echo "fleet_verify.py refused the bundle:"; cat "$tmp/independent.out"; exit 1; } +echo "independent verifier: ok, the bundle verifies" + +# The lesson room's per-hop records, in the ledger's source form. +curl -sS --max-time 60 "$U/v1/fleet/rooms/$(cat "$tmp/lesson")/hops" > "$tmp/hops.json" +py 'import json,sys +h=json.load(open(sys.argv[1]))["hops"] +assert len(h)==3 and all(sorted(x)==["ledger","record"] for x in h), h +print("room hops: ok, 3 records with their ledgers")' "$tmp/hops.json" + +# An altered bundle is refused. +py 'import json,sys +b=json.load(open(sys.argv[1])); r=bytearray(bytes.fromhex(b["report"])); r[-1]^=1; b["report"]=r.hex() +json.dump(b, open(sys.argv[2],"w"))' "$tmp/week.wai-fleet.json" "$tmp/altered.json" +post /v1/fleet/verify "$tmp/altered.json" "$tmp/altered.out" > /dev/null +py 'import json,sys +o=json.load(open(sys.argv[1])); assert o["outcome"]=="refuse" and o["reason"]=="bad_signature", o +print("verify: ok, an altered bundle is refused", o["reason"])' "$tmp/altered.out" +echo "smoke: all checks held" diff --git a/wai/wai-fleet/src/client.rs b/wai/wai-fleet/src/client.rs new file mode 100644 index 000000000..267534616 --- /dev/null +++ b/wai/wai-fleet/src/client.rs @@ -0,0 +1,109 @@ +//! An HTTP/1.0 client of the least `wai-fleet collect` needs: a GET of a node's published summary +//! file and a POST of records to a fleet service, over `http` or `https` (rustls with ring and +//! the platform's roots), each answered whole and closed. A request to HTTP/1.0 is never answered +//! in chunks, so the body is what follows the head, to the close. + +use std::sync::Arc; +use std::time::Duration; + +use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; +use tokio::net::TcpStream; + +/// The longest answer read. +pub const MAX_ANSWER: usize = 256 << 20; +const TIMEOUT: Duration = Duration::from_secs(60); + +/// An `http` or `https` address, split. +#[derive(Debug, PartialEq, Eq)] +pub struct Url { + pub tls: bool, + pub host: String, + pub port: u16, + pub path: String, +} + +pub fn parse(url: &str) -> Result { + let (tls, rest) = if let Some(r) = url.strip_prefix("https://") { + (true, r) + } else if let Some(r) = url.strip_prefix("http://") { + (false, r) + } else { + return Err(format!("{url}: an http:// or https:// address")); + }; + let (authority, path) = match rest.find('/') { + Some(i) => (&rest[..i], rest[i..].to_string()), + None => (rest, "/".to_string()), + }; + if authority.is_empty() || authority.contains('@') { + return Err(format!("{url}: no host, or credentials in the address")); + } + let (host, port) = match authority.rsplit_once(':') { + Some((h, p)) if !h.ends_with(']') || h.starts_with('[') => (h.to_string(), p.parse::().map_err(|_| format!("{url}: a port"))?), + _ => (authority.to_string(), if tls { 443 } else { 80 }), + }; + Ok(Url { tls, host: host.trim_start_matches('[').trim_end_matches(']').to_string(), port, path }) +} + +trait Stream: AsyncRead + AsyncWrite + Unpin + Send {} +impl Stream for T {} + +async fn connect(u: &Url) -> Result, String> { + let tcp = tokio::time::timeout(TIMEOUT, TcpStream::connect((u.host.as_str(), u.port))).await.map_err(|_| format!("{}: no answer", u.host))?.map_err(|e| format!("{}:{}: {e}", u.host, u.port))?; + if !u.tls { + return Ok(Box::new(tcp)); + } + let mut roots = rustls::RootCertStore::empty(); + for c in rustls_native_certs::load_native_certs().certs { + let _ = roots.add(c); + } + let cfg = rustls::ClientConfig::builder_with_provider(Arc::new(rustls::crypto::ring::default_provider())) + .with_safe_default_protocol_versions() + .map_err(|e| e.to_string())? + .with_root_certificates(roots) + .with_no_client_auth(); + let name = rustls::pki_types::ServerName::try_from(u.host.clone()).map_err(|e| format!("{}: {e}", u.host))?; + let tls = tokio_rustls::TlsConnector::from(Arc::new(cfg)).connect(name, tcp).await.map_err(|e| format!("{}: TLS: {e}", u.host))?; + Ok(Box::new(tls)) +} + +/// One request and its whole answer: the status and the body. +pub async fn request(method: &str, url: &str, body: Option<&[u8]>) -> Result<(u16, Vec), String> { + let u = parse(url)?; + let mut s = connect(&u).await?; + let mut head = format!("{method} {} HTTP/1.0\r\nHost: {}\r\nUser-Agent: wai-fleet\r\nConnection: close\r\n", u.path, u.host); + if let Some(b) = body { + head.push_str(&format!("Content-Type: application/json\r\nContent-Length: {}\r\n", b.len())); + } + head.push_str("\r\n"); + let mut out = head.into_bytes(); + out.extend_from_slice(body.unwrap_or_default()); + let go = async { + s.write_all(&out).await?; + s.flush().await?; + let mut all = Vec::new(); + (&mut s).take(MAX_ANSWER as u64 + 1).read_to_end(&mut all).await?; + Ok::<_, std::io::Error>(all) + }; + let all = tokio::time::timeout(TIMEOUT * 5, go).await.map_err(|_| format!("{url}: the answer did not end in time"))?.map_err(|e| format!("{url}: {e}"))?; + if all.len() > MAX_ANSWER { + return Err(format!("{url}: an answer longer than {MAX_ANSWER} bytes")); + } + let at = all.windows(4).position(|w| w == b"\r\n\r\n").ok_or(format!("{url}: no HTTP head in the answer"))?; + let status_line = String::from_utf8_lossy(&all[..all[..at].iter().position(|&c| c == b'\r').unwrap_or(at)]).into_owned(); + let status = status_line.split(' ').nth(1).and_then(|c| c.parse::().ok()).ok_or(format!("{url}: no status in {status_line:?}"))?; + Ok((status, all[at + 4..].to_vec())) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn addresses_split() { + assert_eq!(parse("https://relay.example/sessions.jsonl").unwrap(), Url { tls: true, host: "relay.example".into(), port: 443, path: "/sessions.jsonl".into() }); + assert_eq!(parse("http://127.0.0.1:8252").unwrap(), Url { tls: false, host: "127.0.0.1".into(), port: 8252, path: "/".into() }); + assert_eq!(parse("http://[::1]:8252/v1").unwrap().host, "::1"); + assert!(parse("ftp://x/").is_err()); + assert!(parse("https://user:pw@x/").is_err(), "no credentials in an address"); + } +} diff --git a/wai/wai-fleet/src/fleet.rs b/wai/wai-fleet/src/fleet.rs new file mode 100644 index 000000000..b73a68b25 --- /dev/null +++ b/wai/wai-fleet/src/fleet.rs @@ -0,0 +1,145 @@ +//! The fleet a service holds (extensions/fleet.md §9): its enrolments and records, admitted as +//! the extension admits them and kept in the directory before they are answered for, and its +//! reports, signed with the organisation key, each verified before it is kept. + +use std::collections::BTreeMap; +use std::path::Path; + +use ed25519_dalek::SigningKey; +use serde_json::{json, Value}; +use wai::fleet::{self as f, Held, Reason}; + +use crate::store::{write_whole, Dir, Log}; + +/// Why a request was not done: a refusal the extension names, or the directory failing. +#[derive(Debug)] +pub enum Error { + Refused(Reason), + Store(String), +} + +impl From for Error { + fn from(r: Reason) -> Error { + Error::Refused(r) + } +} + +pub struct Fleet { + pub held: Held, + pub key: SigningKey, + dir: Dir, + /// Each report kept, by digest: its bundle and its outcome. + pub reports: BTreeMap<[u8; 32], (Value, Value)>, +} + +/// What became of one record given: its kind and identity, held; or the refusal. +pub type Admitted = Result<(u8, [u8; 32]), Reason>; + +/// A report made (§9): its digest, its bundle and its outcome. +pub struct Made { + pub digest: [u8; 32], + pub bundle: Value, + pub outcome: Value, +} + +impl Fleet { + /// Open the directory and read back every enrolment, record and report, each admitted or + /// verified again: a directory that does not is refused, and the service does not start. + pub fn open(root: &Path, key: SigningKey) -> Result { + let mut dir = Dir::open(root)?; + let mut held = Held::new(key.verifying_key().to_bytes()); + for (n, line) in dir.lines(Log::Enrolments)?.iter().enumerate() { + let v: Value = serde_json::from_str(line).map_err(|e| format!("enrolment {n}: {e}"))?; + let b = v["enrolment"].as_str().and_then(f::unhex).ok_or(format!("enrolment {n}: not {{\"enrolment\": hex}}"))?; + held.enrol(&b).map_err(|e| format!("enrolment {n} is refused: {e}"))?; + } + for (n, line) in dir.lines(Log::Records)?.iter().enumerate() { + let v: Value = serde_json::from_str(line).map_err(|e| format!("record {n}: {e}"))?; + held.admit(&v).map_err(|e| format!("record {n} is refused: {e}"))?; + } + let mut reports = BTreeMap::new(); + let mut paths: Vec<_> = std::fs::read_dir(dir.reports()).map_err(|e| e.to_string())?.flatten().map(|e| e.path()).collect(); + paths.sort(); + for p in paths.into_iter().filter(|p| p.to_string_lossy().ends_with(f::BUNDLE_SUFFIX)) { + let text = std::fs::read_to_string(&p).map_err(|e| format!("{}: {e}", p.display()))?; + let bundle: Value = serde_json::from_str(&text).map_err(|e| format!("{}: {e}", p.display()))?; + let checked = f::verify(&bundle); + let outcome = f::outcome_json(&checked); + let a = checked.map_err(|(r, _)| format!("{}: the report is refused {r}", p.display()))?; + if a.report.organisation != held.organisation { + return Err(format!("{}: a report of another organisation", p.display())); + } + reports.insert(a.digest, (bundle, outcome)); + } + Ok(Fleet { held, key, dir, reports }) + } + + /// An enrolment the organisation key signed (§3), checked, kept, and synced. + pub fn enrol(&mut self, b: &[u8]) -> Result { + let e = self.held.check_enrolment(b)?; + self.dir.append(Log::Enrolments, &json!({"enrolment": f::hex(b)}).to_string()).map_err(Error::Store)?; + self.dir.sync(Log::Enrolments).map_err(Error::Store)?; + Ok(self.held.hold_enrolment(e).clone()) + } + + /// Records (§9): each checked against what is held and what this request kept before it, + /// kept in order, and the log synced once before the answer. + pub fn records(&mut self, carriages: Vec) -> Result, Error> { + let mut out = Vec::with_capacity(carriages.len()); + let mut kept = 0; + for c in carriages { + match self.held.check(&c) { + Ok(r) => { + self.dir.append(Log::Records, &c.to_string()).map_err(Error::Store)?; + out.push(Ok(self.held.hold(r, c))); + kept += 1; + } + Err(e) => out.push(Err(e)), + } + } + if kept > 0 { + self.dir.sync(Log::Records).map_err(Error::Store)?; + } + Ok(out) + } + + /// The report of a period (§9): signed, verified as a verifier would, and kept with its + /// bundle. + pub fn report(&mut self, start: u64, end: u64) -> Result { + let (report, bundle) = self.held.report(&self.key, start, end).map_err(Error::Store)?; + let checked = f::verify(&bundle); + let outcome = f::outcome_json(&checked); + if let Err((r, _)) = checked { + return Err(Error::Store(format!("the report signed does not verify: {r}"))); + } + let digest = report.digest(); + let name = f::hex(&digest); + write_whole(&self.dir.reports().join(format!("{name}.wfr")), &report.to_bytes()).map_err(Error::Store)?; + let text = serde_json::to_string_pretty(&bundle).expect("JSON") + "\n"; + write_whole(&self.dir.reports().join(format!("{name}{}", f::BUNDLE_SUFFIX)), text.as_bytes()).map_err(Error::Store)?; + self.reports.insert(digest, (bundle.clone(), outcome.clone())); + Ok(Made { digest, bundle, outcome }) + } + + /// Each enrolment held, with what is held of it. + pub fn enrolments(&self) -> Value { + let mut count: BTreeMap<[u8; 32], u64> = BTreeMap::new(); + for (r, _) in &self.held.records { + if let Some(s) = r.signer() { + *count.entry(s).or_default() += 1; + } + } + Value::Array( + self.held + .enrolments + .iter() + .map(|e| { + json!({ + "node": f::hex(&e.node), "role": f::role::name(e.role), "label": e.label_text(), "from": e.from, "until": e.until, + "digest": f::hex(&e.digest()), "records": count.get(&e.node).copied().unwrap_or(0), + }) + }) + .collect(), + ) + } +} diff --git a/wai/wai-fleet/src/http.rs b/wai/wai-fleet/src/http.rs new file mode 100644 index 000000000..21a1e2ae0 --- /dev/null +++ b/wai/wai-fleet/src/http.rs @@ -0,0 +1,176 @@ +//! The HTTP API (extensions/fleet.md §9). Every request that changes the fleet runs under one +//! lock, on a blocking thread: verifying records is CPU work, and the directory has one writer. +//! `POST /v1/fleet/verify` holds no lock and runs at most two at a time. + +use std::sync::Arc; + +use axum::extract::{DefaultBodyLimit, Path, State}; +use axum::http::StatusCode; +use axum::response::{IntoResponse, Response}; +use axum::routing::{get, post}; +use axum::{Json, Router}; +use serde_json::{json, Value}; +use tokio::sync::{Mutex, Semaphore}; +use wai::fleet as f; + +use crate::fleet::{Error, Fleet}; + +/// The largest request body: a batch of a relay's summary lines. +pub const MAX_BODY: usize = 32 << 20; +/// The most records one request may carry. +pub const MAX_RECORDS: usize = 10_000; + +#[derive(Clone)] +pub struct Shared { + pub fleet: Arc>, + pub verifiers: Arc, + pub organisation: [u8; 32], +} + +fn refusal(reason: f::Reason) -> Response { + (StatusCode::UNPROCESSABLE_ENTITY, Json(json!({"outcome": "refuse", "reason": reason.code()}))).into_response() +} + +fn bad_request(why: &str) -> Response { + (StatusCode::BAD_REQUEST, Json(json!({"error": why}))).into_response() +} + +fn not_found(why: &str) -> Response { + (StatusCode::NOT_FOUND, Json(json!({"error": why}))).into_response() +} + +fn error(e: Error) -> Response { + match e { + Error::Refused(r) => refusal(r), + Error::Store(why) => (StatusCode::INTERNAL_SERVER_ERROR, Json(json!({"error": why}))).into_response(), + } +} + +fn digest_of(s: &str) -> Option<[u8; 32]> { + f::unhex(s)?.try_into().ok() +} + +const ENDPOINTS: [&str; 10] = [ + "GET /v1/fleet", + "GET /v1/fleet/health", + "POST /v1/fleet/enrolments", + "GET /v1/fleet/enrolments", + "POST /v1/fleet/records", + "GET /v1/fleet/rooms/{room}/hops", + "POST /v1/fleet/reports", + "GET /v1/fleet/reports", + "GET /v1/fleet/reports/{digest}", + "POST /v1/fleet/verify", +]; + +async fn describe(State(s): State) -> Json { + Json(json!({ + "service": "wai-fleet", + "version": env!("CARGO_PKG_VERSION"), + "capability": f::CAPABILITY, + "organisation_key": f::hex(&s.organisation), + "limits": {"max_body_bytes": MAX_BODY, "max_records_per_request": MAX_RECORDS, "concurrent_verifications": 2}, + "endpoints": ENDPOINTS, + })) +} + +async fn health() -> &'static str { + "ok" +} + +/// Run `g` on the fleet, under its lock, on a blocking thread. +async fn with_fleet(s: &Shared, g: impl FnOnce(&mut Fleet) -> T + Send + 'static) -> T { + let mut guard = s.fleet.clone().lock_owned().await; + tokio::task::spawn_blocking(move || g(&mut guard)).await.expect("a fleet task does not panic") +} + +async fn enrol(State(s): State, Json(body): Json) -> Response { + let Some(b) = body.get("enrolment").and_then(Value::as_str).and_then(f::unhex) else { + return bad_request("the body is {\"enrolment\": }, an enrolment the organisation key signed"); + }; + match with_fleet(&s, move |fl| fl.enrol(&b)).await { + Ok(e) => (StatusCode::CREATED, Json(json!({"node": f::hex(&e.node), "role": f::role::name(e.role), "digest": f::hex(&e.digest())}))).into_response(), + Err(e) => error(e), + } +} + +async fn enrolments(State(s): State) -> Json { + Json(json!({"enrolments": with_fleet(&s, |fl| fl.enrolments()).await})) +} + +async fn records(State(s): State, Json(mut body): Json) -> Response { + let Some(list) = body.get_mut("records").and_then(Value::as_array_mut).map(std::mem::take) else { + return bad_request("the body is {\"records\": [...]}, each a record in its carriage (extensions/fleet.md §4.1)"); + }; + if list.len() > MAX_RECORDS { + return bad_request("too many records in one request"); + } + match with_fleet(&s, move |fl| fl.records(list)).await { + Ok(results) => { + let held = results.iter().filter(|r| r.is_ok()).count(); + let out: Vec = results + .iter() + .map(|r| match r { + Ok((k, id)) => json!({"held": [k, f::hex(id)]}), + Err(e) => json!({"refused": e.code()}), + }) + .collect(); + Json(json!({"held": held, "refused": out.len() - held, "results": out})).into_response() + } + Err(e) => error(e), + } +} + +async fn hops(State(s): State, Path(room): Path) -> Response { + let Some(room) = digest_of(&room) else { return bad_request("a room is named by its id, 64 hexadecimal digits") }; + Json(json!({"hops": with_fleet(&s, move |fl| fl.held.hops_of(&room)).await})).into_response() +} + +async fn report(State(s): State, Json(body): Json) -> Response { + let (Some(start), Some(end)) = (body.get("start").and_then(Value::as_u64), body.get("end").and_then(Value::as_u64)) else { + return bad_request("the body is {\"start\": <µs>, \"end\": <µs>}"); + }; + if start >= end { + return bad_request("a period's start is below its end"); + } + match with_fleet(&s, move |fl| fl.report(start, end)).await { + Ok(m) => (StatusCode::CREATED, Json(json!({"report": f::hex(&m.digest), "outcome": m.outcome, "bundle": m.bundle}))).into_response(), + Err(e) => error(e), + } +} + +async fn reports(State(s): State) -> Json { + let list = with_fleet(&s, |fl| { + fl.reports.iter().map(|(d, (_, o))| json!({"report": f::hex(d), "start": o["start"], "end": o["end"]})).collect::>() + }) + .await; + Json(json!({"reports": list})) +} + +async fn report_of(State(s): State, Path(d): Path) -> Response { + let Some(d) = digest_of(&d) else { return bad_request("a report is named by its digest") }; + match with_fleet(&s, move |fl| fl.reports.get(&d).cloned()).await { + Some((bundle, outcome)) => Json(json!({"report": f::hex(&d), "outcome": outcome, "bundle": bundle})).into_response(), + None => not_found("no such report"), + } +} + +async fn verify(State(s): State, Json(bundle): Json) -> Response { + let Ok(_permit) = s.verifiers.clone().acquire_owned().await else { return bad_request("shutting down") }; + let outcome = tokio::task::spawn_blocking(move || f::outcome_json(&f::verify(&bundle))).await.expect("a verification does not panic"); + Json(outcome).into_response() +} + +pub fn router(s: Shared) -> Router { + Router::new() + .route("/v1/fleet", get(describe)) + .route("/v1/fleet/health", get(health)) + .route("/v1/fleet/enrolments", post(enrol).get(enrolments)) + .route("/v1/fleet/records", post(records)) + .route("/v1/fleet/rooms/{room}/hops", get(hops)) + .route("/v1/fleet/reports", post(report).get(reports)) + .route("/v1/fleet/reports/{digest}", get(report_of)) + .route("/v1/fleet/verify", post(verify)) + .layer(DefaultBodyLimit::max(MAX_BODY)) + .with_state(s) +} diff --git a/wai/wai-fleet/src/main.rs b/wai/wai-fleet/src/main.rs new file mode 100644 index 000000000..7c21d821d --- /dev/null +++ b/wai/wai-fleet/src/main.rs @@ -0,0 +1,185 @@ +//! wai-fleet: a WAI fleet as a service (extensions/fleet.md §9). +//! +//! An organisation enrols its nodes by their signing keys; the service verifies each record a +//! node contributes as it signs it (a relay's session summaries, every hop's per-hop records with +//! their ledgers, the room descriptors that place them) against the enrolled key, keeps it +//! append-only, and for a period signs the fleet report with the organisation key: one line per +//! node and per room, with sessions, bytes and energy per scope and class, each line citing its +//! records. Every report is kept with its bundle, which any verifier of the extension checks +//! without this service. +//! +//! ```text +//! wai-fleet serve the HTTP API: WAI_FLEET_ADDR (127.0.0.1:8252), WAI_FLEET_DIR (its +//! directory), WAI_FLEET_KEY (the organisation key's file, 32 bytes, +//! made with mode 0600 when absent) +//! wai-fleet key the organisation key of WAI_FLEET_KEY, in hexadecimal +//! wai-fleet verify FILE a bundle's outcome, here, printed +//! wai-fleet collect URL SOURCE each line of a node's summary file (a path, or an http or https +//! address) given to the fleet service at URL as a summary record +//! ``` + +mod client; +mod fleet; +mod http; +mod store; + +use std::collections::BTreeMap; +use std::path::PathBuf; +use std::sync::Arc; + +use ed25519_dalek::SigningKey; +use serde_json::{json, Value}; + +const USAGE: &str = "usage: wai-fleet [serve | key | verify FILE | collect URL SOURCE]"; + +fn main() { + let args: Vec = std::env::args().collect(); + let code = match args.get(1).map(String::as_str) { + Some("serve") | None => serve().map(|_| 0), + Some("key") => key().map(|k| { + println!("{}", wai::fleet::hex(&k.verifying_key().to_bytes())); + 0 + }), + Some("verify") => match args.get(2) { + Some(p) => verify_file(p), + None => Err(USAGE.into()), + }, + Some("collect") => match (args.get(2), args.get(3)) { + (Some(u), Some(s)) => collect(u, s), + _ => Err(USAGE.into()), + }, + _ => Err(USAGE.into()), + }; + match code { + Ok(c) => std::process::exit(c), + Err(e) => { + eprintln!("wai-fleet: {e}"); + std::process::exit(if e == USAGE { 2 } else { 1 }); + } + } +} + +fn env_path(name: &str) -> Result { + std::env::var_os(name).map(PathBuf::from).ok_or_else(|| format!("{name} is not set")) +} + +/// The organisation key: read from WAI_FLEET_KEY, or made there, readable by its owner alone. +fn key() -> Result { + let p = env_path("WAI_FLEET_KEY")?; + match std::fs::read(&p) { + Ok(b) => { + let seed: [u8; 32] = b.try_into().map_err(|_| format!("{}: a key file holds 32 bytes", p.display()))?; + Ok(SigningKey::from_bytes(&seed)) + } + Err(e) if e.kind() == std::io::ErrorKind::NotFound => { + let mut seed = [0u8; 32]; + getrandom::fill(&mut seed).map_err(|e| format!("no randomness for a key: {e}"))?; + write_key(&p, &seed)?; + Ok(SigningKey::from_bytes(&seed)) + } + Err(e) => Err(format!("{}: {e}", p.display())), + } +} + +#[cfg(unix)] +fn write_key(p: &std::path::Path, seed: &[u8; 32]) -> Result<(), String> { + use std::io::Write; + use std::os::unix::fs::OpenOptionsExt; + let mut f = std::fs::OpenOptions::new().write(true).create_new(true).mode(0o600).open(p).map_err(|e| format!("{}: {e}", p.display()))?; + f.write_all(seed).and_then(|_| f.sync_all()).map_err(|e| format!("{}: {e}", p.display())) +} + +#[cfg(not(unix))] +fn write_key(p: &std::path::Path, seed: &[u8; 32]) -> Result<(), String> { + std::fs::write(p, seed).map_err(|e| format!("{}: {e}", p.display())) +} + +fn verify_file(p: &str) -> Result { + let text = std::fs::read_to_string(p).map_err(|e| format!("{p}: {e}"))?; + let bundle: Value = serde_json::from_str(&text).map_err(|e| format!("{p}: {e}"))?; + let out = wai::fleet::outcome_json(&wai::fleet::verify(&bundle)); + println!("{}", serde_json::to_string_pretty(&out).expect("JSON")); + Ok(if out["outcome"] == "accept" { 0 } else { 1 }) +} + +fn runtime() -> Result { + tokio::runtime::Builder::new_multi_thread().enable_all().build().map_err(|e| e.to_string()) +} + +/// The lines of a node's summary file: read from a path, or fetched from an address. +fn source_lines(source: &str) -> Result, String> { + let bytes = if source.starts_with("http://") || source.starts_with("https://") { + let (status, body) = runtime()?.block_on(client::request("GET", source, None))?; + if status != 200 { + return Err(format!("{source}: HTTP {status}")); + } + body + } else { + std::fs::read(source).map_err(|e| format!("{source}: {e}"))? + }; + let text = String::from_utf8(bytes).map_err(|_| format!("{source}: not UTF-8"))?; + Ok(text.split('\n').filter(|l| !l.is_empty()).map(str::to_string).collect()) +} + +/// `wai-fleet collect URL SOURCE`: each line given as a summary record, in batches; what was held +/// and what was refused, by reason, printed as JSON. +fn collect(url: &str, source: &str) -> Result { + let lines = source_lines(source)?; + let rt = runtime()?; + let endpoint = format!("{}/v1/fleet/records", url.trim_end_matches('/')); + let (mut held, mut refused) = (0u64, BTreeMap::::new()); + for batch in lines.chunks(512) { + let body = json!({"records": batch.iter().map(|l| json!({"kind": "summary", "line": l})).collect::>()}); + let (status, answer) = rt.block_on(client::request("POST", &endpoint, Some(body.to_string().as_bytes())))?; + if status != 200 { + return Err(format!("{endpoint}: HTTP {status}: {}", String::from_utf8_lossy(&answer))); + } + let a: Value = serde_json::from_slice(&answer).map_err(|e| format!("{endpoint}: {e}"))?; + for r in a["results"].as_array().ok_or(format!("{endpoint}: no results"))? { + match r["refused"].as_str() { + Some(reason) => *refused.entry(reason.to_string()).or_default() += 1, + None => held += 1, + } + } + } + println!("{}", serde_json::to_string_pretty(&json!({"source": source, "lines": lines.len(), "held": held, "refused": refused})).expect("JSON")); + Ok(0) +} + +fn serve() -> Result<(), String> { + let addr = std::env::var("WAI_FLEET_ADDR").unwrap_or_else(|_| "127.0.0.1:8252".into()); + let dir = env_path("WAI_FLEET_DIR")?; + let key = key()?; + let organisation = key.verifying_key().to_bytes(); + let fl = fleet::Fleet::open(&dir, key)?; + eprintln!( + "wai-fleet: {} enrolment(s), {} record(s) and {} report(s) recovered from {}; organisation key {}", + fl.held.enrolments.len(), + fl.held.records.len(), + fl.reports.len(), + dir.display(), + wai::fleet::hex(&organisation) + ); + let shared = http::Shared { fleet: Arc::new(tokio::sync::Mutex::new(fl)), verifiers: Arc::new(tokio::sync::Semaphore::new(2)), organisation }; + runtime()?.block_on(async move { + let listener = tokio::net::TcpListener::bind(&addr).await.map_err(|e| format!("{addr}: {e}"))?; + eprintln!("wai-fleet: listening on {addr}"); + axum::serve(listener, http::router(shared)) + .with_graceful_shutdown(async { + let term = async { + #[cfg(unix)] + if let Ok(mut s) = tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate()) { + s.recv().await; + return; + } + std::future::pending::<()>().await + }; + tokio::select! { _ = tokio::signal::ctrl_c() => {}, _ = term => {} } + }) + .await + .map_err(|e| e.to_string()) + }) +} + +#[cfg(test)] +mod tests; diff --git a/wai/wai-fleet/src/store.rs b/wai/wai-fleet/src/store.rs new file mode 100644 index 000000000..8ba72bb0c --- /dev/null +++ b/wai/wai-fleet/src/store.rs @@ -0,0 +1,94 @@ +//! The service's directory (extensions/fleet.md §9): the enrolments and the records as two +//! append-only logs, one JSON object a line, and each report with its bundle in files written +//! whole. +//! +//! ```text +//! /LOCK held exclusively while a process serves the directory +//! /enrolments.jsonl {"enrolment": hex}, one a line, in the order admitted +//! /records.jsonl each record's carriage, one a line, in the order admitted +//! /reports/.wfr a report +//! /reports/.wai-fleet.json its bundle +//! ``` +//! +//! A line is appended whole and the log synced before the request that admitted it is answered. +//! A line a crash cut short was never answered: on start it is cut off. + +use std::fs::{self, File, OpenOptions}; +use std::io::{Read, Seek, SeekFrom, Write}; +use std::path::{Path, PathBuf}; + +pub const ENROLMENTS: &str = "enrolments.jsonl"; +pub const RECORDS: &str = "records.jsonl"; +pub const REPORTS: &str = "reports"; + +/// The directory, locked for this process, with its two logs open for appending. +pub struct Dir { + pub root: PathBuf, + enrolments: File, + records: File, + // Held for the life of the process: a second process on the same directory is refused. + _lock: File, +} + +/// Which log. +#[derive(Clone, Copy)] +pub enum Log { + Enrolments, + Records, +} + +impl Dir { + /// Open (and create) the directory and take its lock, before anything is read or written. + pub fn open(root: &Path) -> Result { + fs::create_dir_all(root.join(REPORTS)).map_err(|e| format!("{}: {e}", root.display()))?; + let lock = OpenOptions::new().create(true).truncate(false).write(true).open(root.join("LOCK")).map_err(|e| format!("LOCK: {e}"))?; + lock.try_lock().map_err(|e| format!("{}: another process holds the fleet's directory ({e})", root.display()))?; + let log = |name: &str| OpenOptions::new().create(true).read(true).append(true).open(root.join(name)).map_err(|e| format!("{name}: {e}")); + Ok(Dir { root: root.to_path_buf(), enrolments: log(ENROLMENTS)?, records: log(RECORDS)?, _lock: lock }) + } + + fn file(&mut self, l: Log) -> &mut File { + match l { + Log::Enrolments => &mut self.enrolments, + Log::Records => &mut self.records, + } + } + + /// Every whole line of a log, a line a crash cut short cut off. + pub fn lines(&mut self, l: Log) -> Result, String> { + let f = self.file(l); + let mut text = String::new(); + f.seek(SeekFrom::Start(0)).and_then(|_| f.read_to_string(&mut text)).map_err(|e| format!("a log: {e}"))?; + let whole = text.rfind('\n').map_or(0, |i| i + 1); + if whole != text.len() { + f.set_len(whole as u64).and_then(|_| f.sync_all()).map_err(|e| format!("a log: {e}"))?; + } + Ok(text[..whole].lines().filter(|x| !x.is_empty()).map(str::to_string).collect()) + } + + /// Append one line to a log; [`Dir::sync`] makes it last. + pub fn append(&mut self, l: Log, line: &str) -> Result<(), String> { + let mut b = line.as_bytes().to_vec(); + b.push(b'\n'); + self.file(l).write_all(&b).map_err(|e| format!("a log: {e}")) + } + + pub fn sync(&mut self, l: Log) -> Result<(), String> { + self.file(l).sync_data().map_err(|e| format!("a log: {e}")) + } + + pub fn reports(&self) -> PathBuf { + self.root.join(REPORTS) + } +} + +/// Write `bytes` to `path` whole: to a temporary name beside it, synced, renamed into place, and +/// the directory synced, so a crash leaves either no file or the whole one. +pub fn write_whole(path: &Path, bytes: &[u8]) -> Result<(), String> { + let dir = path.parent().ok_or("a file has a directory")?; + let tmp = dir.join(format!(".{}.tmp-{}", path.file_name().and_then(|n| n.to_str()).unwrap_or("file"), std::process::id())); + let mut f = File::create(&tmp).map_err(|e| format!("{}: {e}", tmp.display()))?; + f.write_all(bytes).and_then(|_| f.sync_all()).map_err(|e| format!("{}: {e}", tmp.display()))?; + fs::rename(&tmp, path).map_err(|e| format!("{}: {e}", path.display()))?; + File::open(dir).and_then(|d| d.sync_all()).map_err(|e| format!("{}: {e}", dir.display())) +} diff --git a/wai/wai-fleet/src/tests.rs b/wai/wai-fleet/src/tests.rs new file mode 100644 index 000000000..89a57003b --- /dev/null +++ b/wai/wai-fleet/src/tests.rs @@ -0,0 +1,248 @@ +//! The service's fleet against the committed corpus (`live-conformance/fleet/`) and against the +//! reference relay's own code: given the corpus's enrolments and records, it signs the corpus's +//! report byte for byte and recovers everything from its directory after a restart; a record cut +//! short by a crash is cut off; one process holds the directory; every summary of the corpus is +//! what the relay's own types write and verify; and summaries and a per-hop record the relay's own +//! code signs, written to a summary file as the relay writes it, are collected from that file over +//! HTTP and reported. + +use std::io::{Read, Write}; +use std::path::PathBuf; + +use ed25519_dalek::SigningKey; +use joule_moq_relay::summary::{LayerSpan, RelayEnergy, SessionSummary, SignedSessionSummary, Tally, FORMAT}; +use serde_json::{json, Value}; +use sha2::{Digest, Sha256}; +use wai::fleet::{self as f, Reason}; + +use crate::fleet::{Error, Fleet}; + +fn wai_dir() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("..") +} + +fn corpus() -> Value { + serde_json::from_str(&std::fs::read_to_string(wai_dir().join("live-conformance/fleet/vectors.json")).expect("the corpus")).expect("JSON") +} + +fn vector<'a>(doc: &'a Value, name: &str) -> &'a Value { + doc["vectors"].as_array().unwrap().iter().find(|v| v["name"] == name).unwrap_or_else(|| panic!("no vector {name}")) +} + +/// The corpus's organisation key, from its fixed seed. +fn organisation() -> SigningKey { + let seed: [u8; 32] = Sha256::new().chain_update(b"wai:fleet/corpus/key\x00").chain_update(b"organisation").finalize().into(); + SigningKey::from_bytes(&seed) +} + +fn scratch(name: &str) -> PathBuf { + let nanos = std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_nanos(); + let d = std::env::temp_dir().join(format!("wai-fleet-test-{name}-{}-{nanos}", std::process::id())); + let _ = std::fs::remove_dir_all(&d); + d +} + +fn enrol_all(fl: &mut Fleet, b: &Value) { + for e in b["enrolments"].as_array().unwrap() { + fl.enrol(&f::unhex(e.as_str().unwrap()).unwrap()).unwrap(); + } +} + +fn reason(e: Error) -> Reason { + match e { + Error::Refused(r) => r, + Error::Store(s) => panic!("a store failure: {s}"), + } +} + +#[test] +fn the_fleet_signs_the_corpus_report_and_recovers_its_directory() { + let doc = corpus(); + let week = vector(&doc, "a_week"); + let b = &week["bundle"]; + let (start, end) = (week["outcome"]["start"].as_u64().unwrap(), week["outcome"]["end"].as_u64().unwrap()); + let dir = scratch("week"); + let digest = { + let mut fl = Fleet::open(&dir, organisation()).unwrap(); + enrol_all(&mut fl, b); + assert_eq!(reason(fl.enrol(&f::unhex(b["enrolments"][0].as_str().unwrap()).unwrap()).unwrap_err()), Reason::EnrolmentDuplicate); + let results = fl.records(b["records"].as_array().unwrap().clone()).unwrap(); + assert!(results.iter().all(Result::is_ok), "{results:?}"); + let again = fl.records(b["records"].as_array().unwrap()[..2].to_vec()).unwrap(); + assert!(again.iter().all(|r| *r == Err(Reason::RecordDuplicate)), "a record is kept once"); + let m = fl.report(start, end).unwrap(); + assert_eq!(m.bundle["report"], b["report"], "the corpus's report, byte for byte"); + assert_eq!(m.outcome, week["outcome"]); + m.digest + }; + // A restart: the enrolments, the records and the report come back from the directory, each + // verified again, and the same period signs the same report. + let mut fl = Fleet::open(&dir, organisation()).unwrap(); + assert_eq!((fl.held.enrolments.len(), fl.held.records.len(), fl.reports.len()), (5, b["records"].as_array().unwrap().len(), 1)); + assert_eq!(fl.reports[&digest].1, week["outcome"]); + assert_eq!(fl.report(start, end).unwrap().digest, digest); + // A record of a node no enrolment names, and an enrolment another organisation signed, are + // refused and not kept. + let outsider = vector(&doc, "signer_not_enrolled")["bundle"]["records"][8].clone(); + assert_eq!(fl.records(vec![outsider]).unwrap(), vec![Err(Reason::SignerNotEnrolled)]); + let other = SigningKey::from_bytes(&[9; 32]); + let e = f::Enrolment::new(other.verifying_key().to_bytes(), [7; 32], f::role::RELAY, 0, f::NO_END, "").sign(&other); + assert_eq!(reason(fl.enrol(&e.to_bytes()).unwrap_err()), Reason::WrongOrganisation); + drop(fl); + let _ = std::fs::remove_dir_all(&dir); +} + +#[test] +fn a_record_cut_short_is_cut_off_and_one_process_holds_the_directory() { + let doc = corpus(); + let b = &vector(&doc, "unmetered_only")["bundle"]; + let dir = scratch("torn"); + { + let mut fl = Fleet::open(&dir, organisation()).unwrap(); + assert!(Fleet::open(&dir, organisation()).is_err(), "a second process is refused the directory"); + enrol_all(&mut fl, b); + fl.records(b["records"].as_array().unwrap()[..2].to_vec()).unwrap(); + } + // A crash in the middle of an append: half a line after the last whole one. + let mut log = std::fs::OpenOptions::new().append(true).open(dir.join("records.jsonl")).unwrap(); + let half = b["records"][2].to_string(); + log.write_all(&half.as_bytes()[..half.len() / 2]).unwrap(); + drop(log); + let mut fl = Fleet::open(&dir, organisation()).unwrap(); + assert_eq!(fl.held.records.len(), 2, "the cut line is cut off"); + assert!(fl.records(vec![b["records"][2].clone()]).unwrap()[0].is_ok(), "and the record it held can be given again"); + drop(fl); + let fl = Fleet::open(&dir, organisation()).unwrap(); + assert_eq!(fl.held.records.len(), 3); + drop(fl); + let _ = std::fs::remove_dir_all(&dir); +} + +/// Every summary of the corpus's accepted vectors is what the reference relay's own types write: +/// its text, read into them and serialised again, is the line's byte for byte, and the relay's +/// own check verifies its signature. +#[test] +fn the_corpus_summaries_are_the_relays_own_form() { + let text = std::fs::read_to_string(wai_dir().join("live-conformance/fleet/vectors.json")).unwrap(); + let lines = f::corpus::summary_lines(&text); + assert!(lines.len() >= 7, "the week's summaries"); + for line in &lines { + let signed: SignedSessionSummary = serde_json::from_str(line).unwrap_or_else(|e| panic!("{e}: {line}")); + signed.verify().unwrap_or_else(|e| panic!("the relay's check: {e}")); + assert_eq!(&serde_json::to_string(&signed).unwrap(), line, "the relay writes the line byte for byte"); + let (s, _) = f::split_line(line).unwrap(); + let summary: SessionSummary = serde_json::from_str(s).unwrap(); + assert_eq!(serde_json::to_string(&summary).unwrap(), s); + } +} + +/// A tiny HTTP server answering every request with `body`, `n` times, on a thread of its own. +fn serve_file(body: Vec, n: usize) -> String { + let l = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); + let addr = l.local_addr().unwrap(); + std::thread::spawn(move || { + for s in l.incoming().take(n) { + let mut s = s.unwrap(); + let mut req = [0u8; 4096]; + let _ = s.read(&mut req); + let _ = s.write_all(format!("HTTP/1.0 200 OK\r\nContent-Type: application/x-ndjson\r\nContent-Length: {}\r\n\r\n", body.len()).as_bytes()); + let _ = s.write_all(&body); + } + }); + format!("http://{addr}/var/log/sessions.jsonl") +} + +/// Summaries and a per-hop record signed by the reference relay's own code, from a session of +/// the corpus's lesson room: the summaries written to a file as the relay writes its summary file +/// and collected from it over HTTP by `wai-fleet collect` into a running service, the record +/// given with its ledger and the room's descriptor; the report states what they state. +#[test] +fn records_the_relay_signs_are_collected_and_reported() { + let doc = corpus(); + let measured = vector(&doc, "measured_only"); + let descriptor = measured["bundle"]["records"].as_array().unwrap().iter().find(|r| r["kind"] == "descriptor").unwrap().clone(); + let d = match f::read_record(&descriptor).unwrap() { + f::Record::Descriptor(d) => d, + _ => unreachable!(), + }; + let room = hex::encode(d.room); + let relay = SigningKey::from_bytes(&Sha256::digest(b"wai-fleet test relay").into()); + let relay_hex = hex::encode(relay.verifying_key().to_bytes()); + let t0_ms = d.t0 / 1000; + let video = format!("{room}-{}-video--0", "ab".repeat(32)); + let summary = |session: u64, opened: u64, closed: u64, tally: Tally| SessionSummary { + format: FORMAT.into(), + relay_key: relay_hex.clone(), + session, + transport: "quic".into(), + remote: "198.51.100.1:5000".into(), + draft: "moqt-22".into(), + opened_unix_ms: t0_ms + opened, + closed_unix_ms: t0_ms + closed, + close_code: Some(0), + relay_energy: RelayEnergy::unmetered(), + tally, + }; + let mut publisher = Tally::default(); + publisher.publisher.objects_received = 50; + publisher.publisher.object_bytes_received = 64_000; + publisher.published(&video).objects_received = 50; + publisher.published(&video).object_bytes_received = 64_000; + let mut viewer = Tally::default(); + viewer.subscriber.objects_forwarded = 48; + viewer.subscriber.object_bytes_forwarded = 61_440; + viewer.track(&video).objects_forwarded = 48; + viewer.track(&video).object_bytes_forwarded = 61_440; + viewer.track(&video).fetch_objects = 2; + viewer.track(&video).fetch_bytes = 2_560; + viewer.subscriber.layer_spans.push(LayerSpan { room: room.clone(), class: 0, from_unix_us: (t0_ms + 1_000) * 1000, to_unix_us: (t0_ms + 9_000) * 1000 }); + let summaries = [summary(1, 0, 10_000, publisher), summary(2, 1_000, 9_000, viewer)]; + // The summary file, one line each, as the relay appends it (its session.rs). + let file: String = summaries.iter().map(|s| serde_json::to_string(&SignedSessionSummary::sign(s.clone(), &relay)).unwrap() + "\n").collect(); + let rec = joule_moq_relay::metering::hop_record(&summaries, d.room, d.t0, &relay, None); + rec.verify().unwrap(); + + let dir = scratch("relay"); + let org = organisation(); + let mut fl = Fleet::open(&dir, org.clone()).unwrap(); + let e = f::Enrolment::new(org.verifying_key().to_bytes(), relay.verifying_key().to_bytes(), f::role::RELAY, d.t0, f::NO_END, "test relay").sign(&org); + fl.enrol(&e.to_bytes()).unwrap(); + let hop = json!({"kind": "hop", "record": hex::encode(rec.to_bytes()), "ledger": hex::encode(rec.ledger_bytes())}); + assert_eq!(fl.records(vec![hop.clone()]).unwrap(), vec![Err(Reason::DescriptorMissing)], "a record before its room's descriptor"); + let results = fl.records(vec![descriptor, hop]).unwrap(); + assert!(results.iter().all(Result::is_ok), "{results:?}"); + + // A running service, and `wai-fleet collect` reading the summary file from an address. + let shared = crate::http::Shared { fleet: std::sync::Arc::new(tokio::sync::Mutex::new(fl)), verifiers: std::sync::Arc::new(tokio::sync::Semaphore::new(2)), organisation: org.verifying_key().to_bytes() }; + let fleet = shared.fleet.clone(); + let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); + let base = format!("http://{}", listener.local_addr().unwrap()); + listener.set_nonblocking(true).unwrap(); + std::thread::spawn(move || { + let rt = tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap(); + rt.block_on(async move { + let l = tokio::net::TcpListener::from_std(listener).unwrap(); + axum::serve(l, crate::http::router(shared)).await.unwrap(); + }) + }); + let source = serve_file(file.into_bytes(), 2); + assert_eq!(crate::collect(&base, &source).unwrap(), 0); + // Collected twice: the second time, each line is refused as held already. + assert_eq!(crate::collect(&base, &source).unwrap(), 0); + let rt = tokio::runtime::Builder::new_current_thread().enable_all().build().unwrap(); + let mut fl = rt.block_on(fleet.lock_owned()); + assert_eq!(fl.held.records.len(), 4, "the descriptor, the per-hop record and the two summaries, each once"); + let m = fl.report(d.t0, d.t0 + 86_400_000_000).unwrap(); + let o = &m.outcome; + assert_eq!(o["outcome"], "accept", "{o}"); + let node = &o["nodes"][0]; + assert_eq!((node["sessions"].as_u64(), node["bytes_in"].as_u64(), node["bytes_out"].as_u64()), (Some(2), Some(64_000), Some(61_440 + 2_560))); + assert_eq!((node["hop_bytes_in"].as_u64(), node["hop_bytes_out"].as_u64()), (Some(64_000), Some(61_440 + 2_560)), "the relay's record recomputes from its summaries"); + assert_eq!(node["energy"]["sessions"]["coverage"], "unmetered"); + assert_eq!(node["energy"]["hops"]["coverage"], "unmetered", "the relay's meter is off here"); + let r = &o["rooms"][0]; + assert_eq!((r["room"].as_str(), r["sessions"].as_u64(), r["t0"].as_u64()), (Some(room.as_str()), Some(1), Some(d.t0))); + assert_eq!(r["subscriber_us"].as_u64(), Some(8_000_000)); + drop(fl); + let _ = std::fs::remove_dir_all(&dir); +} diff --git a/wai/wai-rs/src/fleet.rs b/wai/wai-rs/src/fleet.rs index 016c6d03a..42af6ff41 100644 --- a/wai/wai-rs/src/fleet.rs +++ b/wai/wai-rs/src/fleet.rs @@ -1438,9 +1438,9 @@ impl Held { Held { organisation, ..Held::default() } } - /// Admit an enrolment's bytes (§3): it reads and verifies, the organisation signed it, and - /// its node holds no enrolment yet. - pub fn enrol(&mut self, b: &[u8]) -> Result<&Enrolment, Reason> { + /// An enrolment's bytes checked (§3): it reads and verifies, the organisation signed it, + /// and its node holds no enrolment yet. Nothing is kept. + pub fn check_enrolment(&self, b: &[u8]) -> Result { let e = Enrolment::parse(b)?; if e.organisation != self.organisation { return Err(Reason::WrongOrganisation); @@ -1448,25 +1448,48 @@ impl Held { if self.enrolments.iter().any(|x| x.node == e.node) { return Err(Reason::EnrolmentDuplicate); } - self.enrolments.push(e); - Ok(self.enrolments.last().expect("pushed")) + Ok(e) } - /// Admit a record's carriage (§9): read and verified, of an enrolled signer of its role, - /// placed and within its enrolment, and counted once against every record held. - pub fn admit(&mut self, carriage: &Value) -> Result<(u8, [u8; 32]), Reason> { + /// Keep an enrolment [`Held::check_enrolment`] admitted. + pub fn hold_enrolment(&mut self, e: Enrolment) -> &Enrolment { + self.enrolments.push(e); + self.enrolments.last().expect("pushed") + } + + /// Check an enrolment and keep it. + pub fn enrol(&mut self, b: &[u8]) -> Result<&Enrolment, Reason> { + let e = self.check_enrolment(b)?; + Ok(self.hold_enrolment(e)) + } + + /// A record's carriage checked as §9 admits one: read and verified, of an enrolled signer of + /// its role, placed and within its enrolment, and counted once against every record held. + /// Nothing is kept. + pub fn check(&self, carriage: &Value) -> Result { let r = read_record(carriage)?; if let Some(signer) = r.signer() { place(&r, signer, &self.enrolments, &self.t0s, None)?; } self.seen.check(&r)?; + Ok(r) + } + + /// Keep a record [`Held::check`] admitted, with its carriage: its kind and identity. + pub fn hold(&mut self, r: Record, carriage: Value) -> (u8, [u8; 32]) { self.seen.add(&r); if let Record::Descriptor(d) = &r { self.t0s.insert(d.room, d.t0); } let head = r.head(); - self.records.push((r, carriage.clone())); - Ok(head) + self.records.push((r, carriage)); + head + } + + /// Check a record and keep it. + pub fn admit(&mut self, carriage: &Value) -> Result<(u8, [u8; 32]), Reason> { + let r = self.check(carriage)?; + Ok(self.hold(r, carriage.clone())) } /// The instant of a held record, `None` for a descriptor and for a record in no period. -- 2.54.0 (Apple Git-157) From b0f25e48a12b3feec78167fb58453a89eedb977f Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Tue, 27 Oct 2026 15:36:44 -0400 Subject: [PATCH 3/5] wai: the fleet's operations, enrolment.create, enrolment.list, report.create and report.export, and wai verify of a fleet bundle wai enrolment create signs a node's enrolment with the organisation key and writes it, or gives it to a fleet service with --target; wai enrolment list; wai report create has a fleet service sign the report of a period; wai report export verifies a report's bundle here before writing it. Each prints the toolchain's JSON envelope when standard output is not a terminal, exits by the toolchain's table, takes --dry-run when it writes, and waits for --confirm before it changes a service or replaces a file. wai verify checks *.wai-fleet.json bundles beside receipt indexes. The quickstart build carries the fleet feature. Co-Authored-By: Claude Opus 5.5 --- wai/wai-rs/Cargo.toml | 10 +- wai/wai-rs/src/bin/wai_cli/dx/fleet.rs | 408 ++++++++++++++++++++++++ wai/wai-rs/src/bin/wai_cli/dx/mod.rs | 10 +- wai/wai-rs/src/bin/wai_cli/dx/verify.rs | 79 ++++- wai/wai-rs/tests/cli_fleet.rs | 182 +++++++++++ 5 files changed, 676 insertions(+), 13 deletions(-) create mode 100644 wai/wai-rs/src/bin/wai_cli/dx/fleet.rs create mode 100644 wai/wai-rs/tests/cli_fleet.rs diff --git a/wai/wai-rs/Cargo.toml b/wai/wai-rs/Cargo.toml index 7d596dc2d..399dfe27d 100644 --- a/wai/wai-rs/Cargo.toml +++ b/wai/wai-rs/Cargo.toml @@ -155,10 +155,11 @@ ffi = [] # The quickstart's `wai` is built with it alone (`--no-default-features --features floor`). floor = ["dep:image", "dep:claxon", "dep:zstd"] # What the quickstart's `wai` holds: the floor, `wai hello` and `wai verify` (a receipt -# sealed and checked as http-delivery §8 lays receipts out), and `wai mcp`, the server +# sealed and checked as http-delivery §8 lays receipts out, and a fleet report's bundle as +# extensions/fleet.md §7 verifies it), and `wai mcp`, the server # `wai setup-agent` registers. Pure Rust and the floor's zstd: no system library. `wai create`, # `wai dev` and `wai setup-agent` need no feature. -quickstart = ["floor", "http", "receipt_claims", "mcp", "dep:getrandom"] +quickstart = ["floor", "http", "receipt_claims", "mcp", "fleet", "dep:getrandom"] # Pulls in the ONNX runtime + zstd unpack so the native sink can # decode `wai.neural.<...>` envelopes. Off by default — the bare # container + zeroth codecs build with no ML dep chain. @@ -1498,6 +1499,11 @@ name = "cli_dx" path = "tests/cli_dx.rs" required-features = ["quickstart"] +[[test]] +name = "cli_fleet" +path = "tests/cli_fleet.rs" +required-features = ["quickstart"] + [[test]] name = "jpegai_decode_symbols" path = "tests/jpegai_decode_symbols.rs" diff --git a/wai/wai-rs/src/bin/wai_cli/dx/fleet.rs b/wai/wai-rs/src/bin/wai_cli/dx/fleet.rs new file mode 100644 index 000000000..9d780cf05 --- /dev/null +++ b/wai/wai-rs/src/bin/wai_cli/dx/fleet.rs @@ -0,0 +1,408 @@ +//! The fleet's operations (extensions/fleet.md §9), on the toolchain's rules: `wai enrolment +//! create` (`enrolment.create`), `wai enrolment list` (`enrolment.list`), `wai report create` +//! (`report.create`) and `wai report export` (`report.export`). A bundle is checked by `wai verify`. +//! +//! - Output: text on a terminal; the JSON envelope (`{"wai": "envelope/1", "op", "ok", ...}`) with +//! `--json` or when standard output is not a terminal. Data to standard output. +//! - Errors: `{code, message, hint, retryable}`; a refusal by the fleet's text has that text's +//! reason as its code (`enrolment_duplicate`, `signer_not_enrolled`, ...). +//! - Exit statuses: 0 done, 1 refused, 2 usage, 3 permission, 4 confirmation required, 5 not +//! found, 6 the service unavailable (retry), 7 internal. +//! - Every operation that writes takes `--dry-run`, which writes and sends nothing and says what +//! it would. One that changes a service (`--target`), or replaces a file, waits for +//! `--confirm` (asked for on a terminal); without it, it exits 4 with the confirming command. +//! +//! A target is a fleet service's `http://` address (`wai-fleet serve`, which listens on a +//! loopback address unless told otherwise). + +use serde_json::{json, Value}; +use std::io::{IsTerminal, Read, Write}; + +pub const ENROLMENT_USAGE: &str = "wai enrolment create --role --key [--label L] [--from µs] [--until µs] [--out F] [--target URL] [--dry-run] [--confirm] [--json]\n a node's enrolment, signed with the organisation key; with --target, given to a fleet service\n (enrolment.create). wai enrolment list --target URL [--json]: the fleet's nodes (enrolment.list)"; +pub const REPORT_USAGE: &str = "wai report create --target URL --start µs --end µs [--dry-run] [--confirm] [--json]\n the fleet report of a period, signed by a fleet service (report.create).\n wai report export --target URL [--out F] [--dry-run] [--confirm] [--json]: its bundle,\n verified here and written to a file (report.export)"; + +const DONE: u8 = 0; +const REFUSED: u8 = 1; +const USAGE: u8 = 2; +#[cfg_attr(not(feature = "fleet"), allow(dead_code))] +const PERMISSION: u8 = 3; +const CONFIRM: u8 = 4; +const NOT_FOUND: u8 = 5; +const UNAVAILABLE: u8 = 6; +const INTERNAL: u8 = 7; + +/// How one operation reports. +struct Out { + op: &'static str, + json: bool, +} + +/// Why an operation stops. +struct Fail { + exit: u8, + code: String, + message: String, + hint: String, + retryable: bool, +} + +fn fail(exit: u8, code: &str, message: impl Into, hint: impl Into) -> Fail { + Fail { exit, code: code.into(), message: message.into(), hint: hint.into(), retryable: exit == UNAVAILABLE } +} + +fn usage(message: impl Into, hint: &str) -> Fail { + fail(USAGE, "usage", message, hint) +} + +impl Out { + fn new(op: &'static str, args: &[String]) -> Out { + Out { op, json: super::flag(args, "--json") || !std::io::stdout().is_terminal() } + } + + fn envelope(&self, ok: bool) -> serde_json::Map { + let mut m = serde_json::Map::new(); + m.insert("wai".into(), json!("envelope/1")); + m.insert("op".into(), json!(self.op)); + m.insert("ok".into(), json!(ok)); + m + } + + fn done(&self, data: Value, text: &str) -> u8 { + if self.json { + let mut m = self.envelope(true); + m.insert("data".into(), data); + println!("{}", Value::Object(m)); + } else { + println!("{text}"); + } + DONE + } + + fn fail(&self, f: Fail) -> u8 { + if self.json { + let mut m = self.envelope(false); + m.insert("error".into(), json!({"code": f.code, "message": f.message, "hint": f.hint, "retryable": f.retryable})); + println!("{}", Value::Object(m)); + } else { + eprintln!("wai: {} ({})\n {}", f.message, f.code, f.hint); + } + f.exit + } + + /// The proposed changes, and the command that confirms them: status 4, nothing changed. + fn confirmation(&self, proposed: Value, confirm: String) -> u8 { + if self.json { + let mut m = self.envelope(false); + m.insert("error".into(), json!({"code": "confirmation-required", "message": "a change waits for confirmation", "hint": "re-run with --confirm", "retryable": false})); + m.insert("proposed".into(), proposed); + m.insert("confirm".into(), json!(confirm)); + println!("{}", Value::Object(m)); + } else { + eprintln!("wai: a change waits for confirmation:\n {proposed}\n to make it: {confirm}"); + } + CONFIRM + } + + /// A dry run: what would be done, and nothing done. + fn dry_run(&self, proposed: Value) -> u8 { + let text = format!("dry run, nothing written or sent: {proposed}"); + self.done(json!({"dry_run": true, "proposed": proposed}), &text) + } +} + +/// Whether a change is confirmed: by `--confirm`, or by a person answering `y` on a terminal. +fn confirmed(args: &[String], out: &Out, what: &str) -> bool { + if super::flag(args, "--confirm") { + return true; + } + if out.json || !std::io::stdin().is_terminal() || !std::io::stdout().is_terminal() { + return false; + } + eprint!("{what} [y/N] "); + let _ = std::io::stderr().flush(); + let mut line = String::new(); + std::io::stdin().read_line(&mut line).is_ok() && line.trim().eq_ignore_ascii_case("y") +} + +/// The command line again, with `--confirm`. +fn confirm_command(words: &str, args: &[String]) -> String { + let rest: Vec = args.iter().filter(|a| *a != "--json").map(|a| if a.chars().all(|c| c.is_ascii_alphanumeric() || "-_./:".contains(c)) { a.clone() } else { format!("'{}'", a.replace('\'', "'\\''")) }).collect(); + format!("wai {words} {} --confirm", rest.join(" ")) +} + +// --------------------------------------------------------------------------------------- +// A fleet service, over HTTP/1.0 +// --------------------------------------------------------------------------------------- + +/// One request to a fleet service at `target` (`http://host:port`), and its answer: the +/// status and the body read as JSON. +fn call(target: &str, method: &str, path: &str, body: Option<&Value>) -> Result<(u16, Value), Fail> { + let Some(rest) = target.strip_prefix("http://") else { + return Err(usage(format!("{target}: a fleet service's http:// address"), "give --target http://HOST:PORT, the address wai-fleet serve listens on")); + }; + let authority = rest.split('/').next().unwrap_or(""); + let host = authority.rsplit_once(':').map_or(authority, |(h, _)| h); + let addr = if authority.contains(':') { authority.to_string() } else { format!("{authority}:80") }; + let unavailable = |e: String| fail(UNAVAILABLE, "target-unavailable", format!("{target}: {e}"), "start the fleet service, or check its address"); + use std::net::ToSocketAddrs; + let sock = addr.to_socket_addrs().map_err(|e| unavailable(e.to_string()))?.next().ok_or_else(|| unavailable("no address".into()))?; + let mut s = std::net::TcpStream::connect_timeout(&sock, std::time::Duration::from_secs(10)).map_err(|e| unavailable(e.to_string()))?; + let _ = s.set_read_timeout(Some(std::time::Duration::from_secs(300))); + let payload = body.map(|b| b.to_string()).unwrap_or_default(); + let mut req = format!("{method} {path} HTTP/1.0\r\nHost: {host}\r\nUser-Agent: wai\r\nConnection: close\r\n"); + if body.is_some() { + req.push_str(&format!("Content-Type: application/json\r\nContent-Length: {}\r\n", payload.len())); + } + req.push_str("\r\n"); + req.push_str(&payload); + s.write_all(req.as_bytes()).map_err(|e| unavailable(e.to_string()))?; + let mut all = Vec::new(); + s.take(512 << 20).read_to_end(&mut all).map_err(|e| unavailable(e.to_string()))?; + let at = all.windows(4).position(|w| w == b"\r\n\r\n").ok_or_else(|| unavailable("no HTTP answer".into()))?; + let head = String::from_utf8_lossy(&all[..at]); + let status = head.split(' ').nth(1).and_then(|c| c.parse::().ok()).ok_or_else(|| unavailable("no status".into()))?; + let v = serde_json::from_slice(&all[at + 4..]).unwrap_or_else(|_| json!({"text": String::from_utf8_lossy(&all[at + 4..])})); + Ok((status, v)) +} + +/// An answer that is not a success, as the toolchain's failure. +fn answer_fail(status: u16, v: &Value) -> Fail { + match status { + 422 => { + let r = v["reason"].as_str().unwrap_or("refused"); + fail(REFUSED, r, format!("the fleet service refused it: {r}"), "see extensions/fleet.md §10 for the reason") + } + 404 => fail(NOT_FOUND, "not-found", v["error"].as_str().unwrap_or("not found").to_string(), "list what the service holds"), + 400 => usage(v["error"].as_str().unwrap_or("a bad request").to_string(), "see the operation's usage"), + _ => fail(INTERNAL, "service-error", format!("HTTP {status}: {v}"), "see the fleet service's log"), + } +} + +#[cfg_attr(not(feature = "fleet"), allow(dead_code))] +fn hex(b: &[u8]) -> String { + b.iter().map(|x| format!("{x:02x}")).collect() +} + +#[cfg_attr(not(feature = "fleet"), allow(dead_code))] +fn unhex(s: &str) -> Option> { + if !s.len().is_multiple_of(2) { + return None; + } + (0..s.len()).step_by(2).map(|i| u8::from_str_radix(s.get(i..i + 2)?, 16).ok()).collect() +} + +fn number(args: &[String], flag: &str, default: u64) -> Result { + match super::opt(args, flag) { + None => Ok(default), + Some(v) => v.parse().map_err(|_| usage(format!("{flag} {v}: microseconds since 1970, an integer"), "give a number of microseconds")), + } +} + +// --------------------------------------------------------------------------------------- +// enrolment.create, enrolment.list +// --------------------------------------------------------------------------------------- + +/// `wai enrolment create|list`. +pub fn enrolment(args: &[String]) -> u8 { + match args.first().map(String::as_str) { + Some("create") => { + let out = Out::new("enrolment.create", args); + match enrolment_create(&args[1..], &out) { + Ok(c) => c, + Err(f) => out.fail(f), + } + } + Some("list") => { + let out = Out::new("enrolment.list", args); + match enrolment_list(&args[1..], &out) { + Ok(c) => c, + Err(f) => out.fail(f), + } + } + _ => Out::new("enrolment.create", args).fail(usage(ENROLMENT_USAGE, "wai enrolment create … or wai enrolment list …")), + } +} + +#[cfg(not(feature = "fleet"))] +fn enrolment_create(_: &[String], _: &Out) -> Result { + Err(fail(USAGE, "feature-missing", "`wai enrolment create` needs a build with the feature `fleet`", "cargo install --path wai/wai-rs --no-default-features --features quickstart")) +} + +#[cfg(feature = "fleet")] +fn enrolment_create(args: &[String], out: &Out) -> Result { + use wai::fleet::{role, Enrolment, NO_END}; + let with_value = ["--role", "--key", "--label", "--from", "--until", "--out", "--target"]; + let pos = super::positional(args, &with_value); + let node: [u8; 32] = pos.first().and_then(|s| unhex(s)).and_then(|b| b.try_into().ok()).ok_or_else(|| usage("the node's key: 64 hexadecimal digits", ENROLMENT_USAGE))?; + let role_arg = super::opt(args, "--role").ok_or_else(|| usage("--role: relay, compositor, ingest, room, ledger or audit", ENROLMENT_USAGE))?; + let r = role::code(role_arg).or_else(|| role_arg.parse::().ok().filter(|r| role::name(*r).is_some())).ok_or_else(|| usage(format!("--role {role_arg}: relay, compositor, ingest, room, ledger or audit"), ENROLMENT_USAGE))?; + let key_path = super::opt(args, "--key").ok_or_else(|| usage("--key: the organisation key's file (32 bytes, or 64 hexadecimal digits)", ENROLMENT_USAGE))?; + let raw = std::fs::read(key_path).map_err(|e| match e.kind() { + std::io::ErrorKind::NotFound => fail(NOT_FOUND, "not-found", format!("{key_path}: {e}"), "give the organisation key's file"), + std::io::ErrorKind::PermissionDenied => fail(PERMISSION, "permission-denied", format!("{key_path}: {e}"), "the key's owner runs this"), + _ => fail(INTERNAL, "io-error", format!("{key_path}: {e}"), "check the file"), + })?; + let seed: [u8; 32] = if raw.len() == 32 { raw.try_into().expect("32") } else { std::str::from_utf8(&raw).ok().and_then(|s| unhex(s.trim())).and_then(|b| b.try_into().ok()).ok_or_else(|| usage(format!("{key_path}: 32 bytes, or 64 hexadecimal digits"), "the organisation key's seed"))? }; + let key = ed25519_dalek::SigningKey::from_bytes(&seed); + let label = super::opt(args, "--label").unwrap_or(""); + let (from, until) = (number(args, "--from", 0)?, number(args, "--until", NO_END)?); + let e = Enrolment::new(key.verifying_key().to_bytes(), node, r, from, until, label).sign(&key); + let bytes = e.to_bytes(); + // Its own rules, before anything is written or sent. + Enrolment::parse(&bytes).map_err(|x| fail(USAGE, x.code(), format!("the enrolment is refused: {x}"), "extensions/fleet.md §3.3: from below until, a label of at most 64 bytes, a node that is not the organisation"))?; + let target = super::opt(args, "--target"); + let file = super::opt(args, "--out").map(str::to_string).or_else(|| target.is_none().then(|| format!("{}.wfe", &hex(&node)[..16]))); + let data = json!({ + "node": hex(&node), "role": role::name(r), "label": label, "from": from, "until": until, + "organisation": hex(&key.verifying_key().to_bytes()), "digest": hex(&e.digest()), "enrolment": hex(&bytes), "file": file, "target": target, + }); + let mut proposed = Vec::new(); + if let Some(f) = &file { + proposed.push(json!({"action": "write", "file": f, "bytes": bytes.len(), "replaces": std::path::Path::new(f).exists()})); + } + if let Some(t) = target { + proposed.push(json!({"action": "enrol", "target": t, "node": hex(&node), "role": role::name(r)})); + } + if super::flag(args, "--dry-run") { + return Ok(out.dry_run(Value::Array(proposed))); + } + let replaces = file.as_ref().is_some_and(|f| std::path::Path::new(f).exists()); + if (target.is_some() || replaces) && !confirmed(args, out, &format!("{}?", proposed.iter().map(Value::to_string).collect::>().join("; "))) { + return Ok(out.confirmation(Value::Array(proposed), confirm_command("enrolment create", args))); + } + if let Some(f) = &file { + std::fs::write(f, &bytes).map_err(|e| fail(if e.kind() == std::io::ErrorKind::PermissionDenied { PERMISSION } else { INTERNAL }, "io-error", format!("{f}: {e}"), "check the directory"))?; + } + if let Some(t) = target { + let (status, v) = call(t, "POST", "/v1/fleet/enrolments", Some(&json!({"enrolment": hex(&bytes)})))?; + if status != 201 { + return Err(answer_fail(status, &v)); + } + } + let text = format!( + "enrolled {} as {} ({:?}), digest {}{}{}", + &hex(&node)[..16], + role::name(r).unwrap_or("?"), + label, + &hex(&e.digest())[..16], + file.as_ref().map(|f| format!("; written to {f}")).unwrap_or_default(), + target.map(|t| format!("; held by {t}")).unwrap_or_default() + ); + Ok(out.done(data, &text)) +} + +fn enrolment_list(args: &[String], out: &Out) -> Result { + let target = super::opt(args, "--target").ok_or_else(|| usage("--target: the fleet service's http:// address", ENROLMENT_USAGE))?; + let (status, v) = call(target, "GET", "/v1/fleet/enrolments", None)?; + if status != 200 { + return Err(answer_fail(status, &v)); + } + let list = v["enrolments"].as_array().cloned().unwrap_or_default(); + let mut text = format!("{} node(s) enrolled at {target}", list.len()); + for e in &list { + text.push_str(&format!( + "\n {}… {:<10} {:<16} records {}", + &e["node"].as_str().unwrap_or("")[..16.min(e["node"].as_str().unwrap_or("").len())], + e["role"].as_str().unwrap_or("?"), + e["label"].as_str().unwrap_or(""), + e["records"] + )); + } + Ok(out.done(json!({"enrolments": list}), &text)) +} + +// --------------------------------------------------------------------------------------- +// report.create, report.export +// --------------------------------------------------------------------------------------- + +/// `wai report create|export`. +pub fn report(args: &[String]) -> u8 { + match args.first().map(String::as_str) { + Some("create") => { + let out = Out::new("report.create", args); + match report_create(&args[1..], &out) { + Ok(c) => c, + Err(f) => out.fail(f), + } + } + Some("export") => { + let out = Out::new("report.export", args); + match report_export(&args[1..], &out) { + Ok(c) => c, + Err(f) => out.fail(f), + } + } + _ => Out::new("report.create", args).fail(usage(REPORT_USAGE, "wai report create … or wai report export …")), + } +} + +/// A report's outcome, for a person: its period, its lines and each scope's coverage. +fn summarise(o: &Value) -> String { + let cov = |e: &Value| format!("sessions {}, hops {}", e["sessions"]["coverage"].as_str().unwrap_or("?"), e["hops"]["coverage"].as_str().unwrap_or("?")); + let mut t = format!("report {} of [{}, {}): {} node line(s), {} room line(s), {} record(s)", &o["digest"].as_str().unwrap_or("")[..16.min(o["digest"].as_str().unwrap_or("").len())], o["start"], o["end"], o["nodes"].as_array().map_or(0, Vec::len), o["rooms"].as_array().map_or(0, Vec::len), o["records"]); + for n in o["nodes"].as_array().into_iter().flatten() { + t.push_str(&format!("\n node {:<16} {:<10} sessions {} links {} bytes in {} out {}; energy: {}", n["label"].as_str().unwrap_or(""), n["role"].as_str().unwrap_or(""), n["sessions"], n["links"], n["bytes_in"], n["bytes_out"], cov(&n["energy"]))); + } + for e in o["enrolments"].as_array().into_iter().flatten().filter(|e| e["silent"] == true) { + t.push_str(&format!("\n node {:<16} {:<10} silent: no record in the period", e["label"].as_str().unwrap_or(""), e["role"].as_str().unwrap_or(""))); + } + t.push_str(&format!("\n fleet energy: {} (a partial total is not the fleet's energy)", cov(&o["totals"]["energy"]))); + t +} + +fn report_create(args: &[String], out: &Out) -> Result { + let target = super::opt(args, "--target").ok_or_else(|| usage("--target: the fleet service's http:// address", REPORT_USAGE))?; + let start = number(args, "--start", 0)?; + let end = number(args, "--end", 0)?; + if super::opt(args, "--start").is_none() || super::opt(args, "--end").is_none() || start >= end { + return Err(usage("--start and --end: the period, in microseconds since 1970, start below end", REPORT_USAGE)); + } + let proposed = json!([{"action": "sign a report", "target": target, "start": start, "end": end}]); + if super::flag(args, "--dry-run") { + return Ok(out.dry_run(proposed)); + } + if !confirmed(args, out, &format!("have {target} sign the report of [{start}, {end})?")) { + return Ok(out.confirmation(proposed, confirm_command("report create", args))); + } + let (status, v) = call(target, "POST", "/v1/fleet/reports", Some(&json!({"start": start, "end": end})))?; + if status != 201 { + return Err(answer_fail(status, &v)); + } + let o = &v["outcome"]; + let text = summarise(o); + Ok(out.done(json!({"report": v["report"], "outcome": o}), &text)) +} + +#[cfg(not(feature = "fleet"))] +fn report_export(_: &[String], _: &Out) -> Result { + Err(fail(USAGE, "feature-missing", "`wai report export` needs a build with the feature `fleet`", "cargo install --path wai/wai-rs --no-default-features --features quickstart")) +} + +#[cfg(feature = "fleet")] +fn report_export(args: &[String], out: &Out) -> Result { + let target = super::opt(args, "--target").ok_or_else(|| usage("--target: the fleet service's http:// address", REPORT_USAGE))?; + let pos = super::positional(args, &["--target", "--out"]); + let digest = pos.first().filter(|d| d.len() == 64 && unhex(d).is_some()).ok_or_else(|| usage("the report's digest: 64 hexadecimal digits", REPORT_USAGE))?; + let file = super::opt(args, "--out").map(str::to_string).unwrap_or_else(|| format!("{}{}", &digest[..16], wai::fleet::BUNDLE_SUFFIX)); + let replaces = std::path::Path::new(&file).exists(); + let proposed = json!([{"action": "write", "file": file, "replaces": replaces}]); + if super::flag(args, "--dry-run") { + return Ok(out.dry_run(proposed)); + } + let (status, v) = call(target, "GET", &format!("/v1/fleet/reports/{digest}"), None)?; + if status != 200 { + return Err(answer_fail(status, &v)); + } + // The bundle verified here, by this build, before it is written: the service is not trusted. + let o = wai::fleet::outcome_json(&wai::fleet::verify(&v["bundle"])); + if o["outcome"] != "accept" || o["digest"] != json!(digest) { + return Err(fail(REFUSED, o["reason"].as_str().unwrap_or("report_mismatch"), format!("the service's bundle does not verify: {o}"), "report it to the fleet's operator")); + } + if replaces && !confirmed(args, out, &format!("replace {file}?")) { + return Ok(out.confirmation(proposed, confirm_command("report export", args))); + } + let text_out = serde_json::to_string_pretty(&v["bundle"]).expect("JSON") + "\n"; + std::fs::write(&file, text_out).map_err(|e| fail(if e.kind() == std::io::ErrorKind::PermissionDenied { PERMISSION } else { INTERNAL }, "io-error", format!("{file}: {e}"), "check the directory"))?; + let text = format!("{}\nwritten to {file}; check it anywhere with `wai verify {file}`", summarise(&o)); + Ok(out.done(json!({"file": file, "outcome": o}), &text)) +} diff --git a/wai/wai-rs/src/bin/wai_cli/dx/mod.rs b/wai/wai-rs/src/bin/wai_cli/dx/mod.rs index 3c0c778a7..6c257725f 100644 --- a/wai/wai-rs/src/bin/wai_cli/dx/mod.rs +++ b/wai/wai-rs/src/bin/wai_cli/dx/mod.rs @@ -4,12 +4,15 @@ //! - `create`: a new project from one of the examples (`wai/examples/`), or from an app made //! with Create (`--from app.oui`, a build with `app`); //! - `dev`: a relay, a room service and the room page on one origin, on this machine; -//! - `verify`: the receipts under a directory, checked offline; +//! - `verify`: the receipts under a directory, and fleet report bundles, checked offline; //! - `app` (`app.guide`, `app.check`; a build with `app`): an app made with Create, its guide //! and its check; //! - `mcp` (`agent.mcp`): WAI's operations as tools for a coding agent, a Model Context //! Protocol server on standard input and output, in toolsets (`../mcp/`); -//! - `setup-agent` (`agent.setup`): a project made ready for coding agents (`../setup_agent.rs`). +//! - `setup-agent` (`agent.setup`): a project made ready for coding agents (`../setup_agent.rs`); +//! - `enrolment` (`enrolment.create`, `enrolment.list`) and `report` (`report.create`, +//! `report.export`): a fleet's nodes enrolled and its reports, against a fleet service +//! (extensions/fleet.md §9; `fleet.rs`). //! //! A verb is named in this table and nowhere else: renaming or regrouping one is a line //! here. The project file a template writes (`wai.json`) is read by [`project`] alone. @@ -19,6 +22,7 @@ pub mod project; mod app; mod create; mod dev; +mod fleet; mod hello; mod verify; @@ -57,6 +61,8 @@ pub const VERBS: &[Verb] = &[ Verb { name: "app", usage: app::USAGE, run: Run::Checks(app::main) }, Verb { name: MCP, usage: MCP_USAGE, run: Run::Checks(mcp_main) }, Verb { name: "setup-agent", usage: setup_agent::USAGE, run: Run::Status(setup_agent::main) }, + Verb { name: "enrolment", usage: fleet::ENROLMENT_USAGE, run: Run::Status(fleet::enrolment) }, + Verb { name: "report", usage: fleet::REPORT_USAGE, run: Run::Status(fleet::report) }, ]; const MCP_USAGE: &str = "wai mcp [--toolset core,dev,app] [--read-only] [--project DIR] [--spec-root DIR] [--room-bin BIN]\n WAI's operations as tools for a coding agent: a Model Context Protocol server on standard\n input and output (a build with `mcp`)"; diff --git a/wai/wai-rs/src/bin/wai_cli/dx/verify.rs b/wai/wai-rs/src/bin/wai_cli/dx/verify.rs index 7264eb4be..238b8d1ff 100644 --- a/wai/wai-rs/src/bin/wai_cli/dx/verify.rs +++ b/wai/wai-rs/src/bin/wai_cli/dx/verify.rs @@ -7,8 +7,11 @@ //! //! A signature proves the bytes were signed by the key the receipt names. Which party holds //! that key is a key log's to say (http-delivery §8.4); this command names the key. +//! +//! A fleet report's bundle (`*.wai-fleet.json`, extensions/fleet.md §7) under a path is verified +//! too, in a build with `fleet`: the report recomputed from its enrolments and records. -pub const USAGE: &str = "wai verify ... the receipts under each path (receipt indexes *.wai.receipts), checked offline"; +pub const USAGE: &str = "wai verify ... the receipts under each path (receipt indexes *.wai.receipts) and fleet report\n bundles (*.wai-fleet.json), checked offline"; #[cfg(not(feature = "quickstart"))] pub fn main(_: &[String]) -> Result { @@ -25,10 +28,12 @@ pub fn main(args: &[String]) -> Result { if paths.is_empty() { return Err(USAGE.into()); } - fn walk(p: &Path, out: &mut Vec, depth: usize) -> Result<(), String> { + fn walk(p: &Path, out: &mut Vec, bundles: &mut Vec, depth: usize) -> Result<(), String> { if p.is_file() { if p.to_string_lossy().ends_with(".wai.receipts") { out.push(p.to_path_buf()); + } else if p.to_string_lossy().ends_with(".wai-fleet.json") { + bundles.push(p.to_path_buf()); } return Ok(()); } @@ -44,16 +49,16 @@ pub fn main(args: &[String]) -> Result { if e.is_dir() && e.file_name().is_some_and(|n| n == "rcpt") { continue; } - walk(&e, out, depth + 1)?; + walk(&e, out, bundles, depth + 1)?; } Ok(()) } - let mut indexes = Vec::new(); + let (mut indexes, mut bundles) = (Vec::new(), Vec::new()); for p in &paths { - walk(Path::new(p), &mut indexes, 0)?; + walk(Path::new(p), &mut indexes, &mut bundles, 0)?; } - if indexes.is_empty() { - return Err(format!("no receipt index (*.wai.receipts) under {}", paths.join(", "))); + if indexes.is_empty() && bundles.is_empty() { + return Err(format!("no receipt index (*.wai.receipts) and no fleet bundle (*.wai-fleet.json) under {}", paths.join(", "))); } let mut all = true; for ix in &indexes { @@ -64,11 +69,67 @@ pub fn main(args: &[String]) -> Result { } all &= ok; } - let n = indexes.len(); - println!("wai verify: {} receipt index{} {}", n, if n == 1 { "" } else { "es" }, if all { "verified" } else { "with a refusal (above)" }); + for b in &bundles { + println!("{}", b.display()); + let (ok, lines) = check_bundle_file(b)?; + for l in lines { + println!(" {l}"); + } + all &= ok; + } + let (n, m) = (indexes.len(), bundles.len()); + let mut what = Vec::new(); + if n > 0 { + what.push(format!("{n} receipt index{}", if n == 1 { "" } else { "es" })); + } + if m > 0 { + what.push(format!("{m} fleet bundle{}", if m == 1 { "" } else { "s" })); + } + println!("wai verify: {} {}", what.join(" and "), if all { "verified" } else { "with a refusal (above)" }); Ok(all) } +/// One fleet report bundle (extensions/fleet.md §7): whether it verified, and a line for its +/// report and for each node, room and scope of energy. +#[cfg(all(feature = "quickstart", feature = "fleet"))] +pub(crate) fn check_bundle_file(path: &std::path::Path) -> Result<(bool, Vec), String> { + let text = std::fs::read_to_string(path).map_err(|e| format!("{}: {e}", path.display()))?; + let bundle: serde_json::Value = match serde_json::from_str(&text) { + Ok(v) => v, + Err(e) => return Ok((false, vec![format!("FAIL the bundle is not JSON: {e}")])), + }; + let o = wai::fleet::outcome_json(&wai::fleet::verify(&bundle)); + if o["outcome"] != "accept" { + return Ok((false, vec![format!("FAIL fleet report: {} at {}", o["reason"].as_str().unwrap_or("?"), o["at"])])); + } + let short = |v: &serde_json::Value| v.as_str().map(|s| s[..16.min(s.len())].to_string()).unwrap_or_default(); + let cov = |e: &serde_json::Value| format!("sessions {}, hops {}", e["sessions"]["coverage"].as_str().unwrap_or("?"), e["hops"]["coverage"].as_str().unwrap_or("?")); + let mut lines = vec![format!( + "ok fleet report {}… of organisation {}…, [{}, {}): {} record(s), every line recomputed", + short(&o["digest"]), + short(&o["organisation"]), + o["start"], + o["end"], + o["records"] + )]; + for n in o["nodes"].as_array().into_iter().flatten() { + lines.push(format!("ok node {} ({}): {} session(s), {} link(s); energy {}", n["label"].as_str().unwrap_or(""), n["role"].as_str().unwrap_or(""), n["sessions"], n["links"], cov(&n["energy"]))); + } + for e in o["enrolments"].as_array().into_iter().flatten().filter(|e| e["silent"] == true) { + lines.push(format!("ok node {} ({}): silent, no record in the period", e["label"].as_str().unwrap_or(""), e["role"].as_str().unwrap_or(""))); + } + for r in o["rooms"].as_array().into_iter().flatten() { + lines.push(format!("ok room {}…: {} hop record(s); energy {}", short(&r["room"]), r["hops"], cov(&r["energy"]))); + } + lines.push(format!("ok fleet energy {} (a partial total is not the fleet's energy)", cov(&o["totals"]["energy"]))); + Ok((true, lines)) +} + +#[cfg(all(feature = "quickstart", not(feature = "fleet")))] +pub(crate) fn check_bundle_file(path: &std::path::Path) -> Result<(bool, Vec), String> { + Ok((false, vec![format!("FAIL {}: a fleet bundle is verified by a build with the feature `fleet`", path.display())])) +} + /// One receipt index, checked: whether every item and claim it lists held, and a line for /// each. #[cfg(feature = "quickstart")] diff --git a/wai/wai-rs/tests/cli_fleet.rs b/wai/wai-rs/tests/cli_fleet.rs new file mode 100644 index 000000000..ab2b78456 --- /dev/null +++ b/wai/wai-rs/tests/cli_fleet.rs @@ -0,0 +1,182 @@ +//! The fleet's operations through the `wai` binary (extensions/fleet.md §9), as an agent runs +//! them, on the toolchain's rules: the JSON envelope when standard output is not a terminal, the +//! exit statuses, `--dry-run` that writes and sends nothing, and `--confirm` before a fleet +//! service is changed or a file replaced; a refusal of the service named by the fleet's reason; +//! a report's bundle verified here before it is written; and `wai verify` checking a bundle +//! offline and refusing it altered. The fleet service is played by a server in the test that +//! answers as `wai-fleet` does. +#![cfg(feature = "quickstart")] + +use std::io::{Read, Write}; +use std::path::{Path, PathBuf}; +use std::process::{Command, Output}; +use std::sync::mpsc; + +use serde_json::{json, Value}; + +fn tmp(name: &str) -> PathBuf { + let d = std::env::temp_dir().join(format!("wai-cli-fleet-{name}-{}", std::process::id())); + let _ = std::fs::remove_dir_all(&d); + std::fs::create_dir_all(&d).unwrap(); + d +} + +fn wai(dir: &Path, args: &[&str]) -> Output { + Command::new(env!("CARGO_BIN_EXE_wai")).current_dir(dir).args(args).output().expect("wai runs") +} + +/// The envelope a run printed (its standard output is not a terminal here). +fn envelope(o: &Output) -> Value { + serde_json::from_slice(&o.stdout).unwrap_or_else(|e| panic!("{e}: {}{}", String::from_utf8_lossy(&o.stdout), String::from_utf8_lossy(&o.stderr))) +} + +fn corpus() -> Value { + let p = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../live-conformance/fleet/vectors.json"); + serde_json::from_str(&std::fs::read_to_string(p).unwrap()).unwrap() +} + +fn vector(name: &str) -> Value { + corpus()["vectors"].as_array().unwrap().iter().find(|v| v["name"] == name).unwrap().clone() +} + +/// A server answering each request with the next of `answers` (status and JSON body), and +/// passing on each request's first line and body. +fn service(answers: Vec<(u16, Value)>) -> (String, mpsc::Receiver<(String, String)>) { + let l = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); + let addr = format!("http://{}", l.local_addr().unwrap()); + let (tx, rx) = mpsc::channel(); + std::thread::spawn(move || { + for (status, body) in answers { + let (mut s, _) = l.accept().unwrap(); + let mut buf = Vec::new(); + let mut chunk = [0u8; 65536]; + // The head, then as much body as it states. + loop { + let n = s.read(&mut chunk).unwrap(); + buf.extend_from_slice(&chunk[..n]); + if let Some(at) = buf.windows(4).position(|w| w == b"\r\n\r\n") { + let head = String::from_utf8_lossy(&buf[..at]).to_string(); + let len = head.lines().find_map(|l| l.to_ascii_lowercase().strip_prefix("content-length: ").and_then(|v| v.parse::().ok())).unwrap_or(0); + while buf.len() < at + 4 + len { + let n = s.read(&mut chunk).unwrap(); + buf.extend_from_slice(&chunk[..n]); + } + let first = head.lines().next().unwrap_or("").to_string(); + tx.send((first, String::from_utf8_lossy(&buf[at + 4..]).to_string())).unwrap(); + break; + } + if n == 0 { + break; + } + } + let b = body.to_string(); + let _ = s.write_all(format!("HTTP/1.1 {status} X\r\ncontent-type: application/json\r\ncontent-length: {}\r\n\r\n{b}", b.len()).as_bytes()); + } + }); + (addr, rx) +} + +const NODE: &str = "1111111111111111111111111111111111111111111111111111111111111111"; + +#[test] +fn enrolment_create_signs_writes_and_waits_for_confirmation() { + let d = tmp("enrol"); + std::fs::write(d.join("org.key"), "07".repeat(32)).unwrap(); + // A dry run writes nothing. + let o = wai(&d, &["enrolment", "create", NODE, "--role", "relay", "--key", "org.key", "--label", "home", "--out", "n.wfe", "--dry-run"]); + assert_eq!(o.status.code(), Some(0)); + let e = envelope(&o); + assert_eq!((e["op"].as_str(), e["ok"].as_bool(), e["data"]["dry_run"].as_bool()), (Some("enrolment.create"), Some(true), Some(true))); + assert!(!d.join("n.wfe").exists(), "a dry run writes nothing"); + // The enrolment, written: it reads and its signature verifies. + let o = wai(&d, &["enrolment", "create", NODE, "--role", "relay", "--key", "org.key", "--label", "home", "--out", "n.wfe"]); + assert_eq!(o.status.code(), Some(0), "{}", String::from_utf8_lossy(&o.stderr)); + let e = envelope(&o); + let b = std::fs::read(d.join("n.wfe")).unwrap(); + let parsed = wai::fleet::Enrolment::parse(&b).unwrap(); + assert_eq!((wai::fleet::hex(&parsed.node), parsed.role, parsed.label_text()), (NODE.to_string(), 1, "home".to_string())); + assert_eq!(e["data"]["digest"], json!(wai::fleet::hex(&parsed.digest()))); + // Replacing it waits for --confirm: exit 4, with the command that confirms. + let o = wai(&d, &["enrolment", "create", NODE, "--role", "ingest", "--key", "org.key", "--out", "n.wfe"]); + assert_eq!(o.status.code(), Some(4)); + let e = envelope(&o); + assert_eq!(e["error"]["code"], "confirmation-required"); + assert!(e["confirm"].as_str().unwrap().ends_with("--confirm")); + assert_eq!(std::fs::read(d.join("n.wfe")).unwrap(), b, "nothing changed"); + // Its own rules refuse it before anything is written: a node that is the organisation. + let org = wai::fleet::hex(&ed25519_dalek::SigningKey::from_bytes(&[7; 32]).verifying_key().to_bytes()); + let o = wai(&d, &["enrolment", "create", &org, "--role", "relay", "--key", "org.key", "--out", "self.wfe"]); + assert_eq!((o.status.code(), envelope(&o)["error"]["code"].as_str()), (Some(2), Some("enrolment_invalid"))); + // Usage. + assert_eq!(wai(&d, &["enrolment", "create", NODE, "--key", "org.key"]).status.code(), Some(2), "no role"); + assert_eq!(wai(&d, &["enrolment", "create", NODE, "--role", "relay", "--key", "absent.key"]).status.code(), Some(5), "no key file"); +} + +#[test] +fn enrolment_create_against_a_service() { + let d = tmp("enrol-target"); + std::fs::write(d.join("org.key"), [7u8; 32]).unwrap(); + let (url, rx) = service(vec![(201, json!({"node": NODE, "role": "relay", "digest": "00"})), (422, json!({"outcome": "refuse", "reason": "enrolment_duplicate"}))]); + // A service is not changed without --confirm. + let o = wai(&d, &["enrolment", "create", NODE, "--role", "relay", "--key", "org.key", "--target", &url]); + assert_eq!(o.status.code(), Some(4)); + let o = wai(&d, &["enrolment", "create", NODE, "--role", "relay", "--key", "org.key", "--target", &url, "--confirm"]); + assert_eq!(o.status.code(), Some(0), "{}", String::from_utf8_lossy(&o.stdout)); + let (line, body) = rx.recv().unwrap(); + assert_eq!(line, "POST /v1/fleet/enrolments HTTP/1.0"); + let sent = wai::fleet::unhex(serde_json::from_str::(&body).unwrap()["enrolment"].as_str().unwrap()).unwrap(); + assert!(wai::fleet::Enrolment::parse(&sent).is_ok(), "the service is given a signed enrolment"); + assert!(!d.join(format!("{}.wfe", &NODE[..16])).exists(), "with --target, a file only with --out"); + // The service's refusal is named by the fleet's reason. + let o = wai(&d, &["enrolment", "create", NODE, "--role", "relay", "--key", "org.key", "--target", &url, "--confirm"]); + assert_eq!((o.status.code(), envelope(&o)["error"]["code"].as_str()), (Some(1), Some("enrolment_duplicate"))); + // No service there: unavailable, and worth a retry. + let o = wai(&d, &["enrolment", "list", "--target", "http://127.0.0.1:9"]); + let e = envelope(&o); + assert_eq!((o.status.code(), e["error"]["code"].as_str(), e["error"]["retryable"].as_bool()), (Some(6), Some("target-unavailable"), Some(true))); +} + +#[test] +fn report_create_and_export_and_verify() { + let d = tmp("report"); + let week = vector("a_week"); + let digest = week["outcome"]["digest"].as_str().unwrap().to_string(); + let (start, end) = (week["outcome"]["start"].to_string(), week["outcome"]["end"].to_string()); + let mut altered = week["bundle"].clone(); + let mut r = wai::fleet::unhex(altered["report"].as_str().unwrap()).unwrap(); + let n = r.len() - 1; + r[n] ^= 1; + altered["report"] = json!(wai::fleet::hex(&r)); + let (url, rx) = service(vec![ + (201, json!({"report": digest, "outcome": week["outcome"], "bundle": week["bundle"]})), + (200, json!({"report": digest, "outcome": week["outcome"], "bundle": week["bundle"]})), + (200, json!({"report": digest, "outcome": week["outcome"], "bundle": altered})), + ]); + assert_eq!(wai(&d, &["report", "create", "--target", &url, "--start", &start]).status.code(), Some(2), "no end"); + let o = wai(&d, &["report", "create", "--target", &url, "--start", &start, "--end", &end, "--dry-run"]); + assert_eq!((o.status.code(), envelope(&o)["data"]["dry_run"].as_bool()), (Some(0), Some(true))); + assert_eq!(wai(&d, &["report", "create", "--target", &url, "--start", &start, "--end", &end]).status.code(), Some(4)); + let o = wai(&d, &["report", "create", "--target", &url, "--start", &start, "--end", &end, "--confirm"]); + assert_eq!(o.status.code(), Some(0)); + assert_eq!(envelope(&o)["data"]["outcome"]["totals"]["energy"]["hops"]["coverage"], "partial"); + assert_eq!(rx.recv().unwrap().0, "POST /v1/fleet/reports HTTP/1.0"); + // Exported: verified here, then written. + let o = wai(&d, &["report", "export", &digest, "--target", &url, "--out", "week.wai-fleet.json"]); + assert_eq!(o.status.code(), Some(0), "{}", String::from_utf8_lossy(&o.stdout)); + assert_eq!(rx.recv().unwrap().0, format!("GET /v1/fleet/reports/{digest} HTTP/1.0")); + let written: Value = serde_json::from_str(&std::fs::read_to_string(d.join("week.wai-fleet.json")).unwrap()).unwrap(); + assert_eq!(written, week["bundle"]); + // A bundle the service altered is not written. + let o = wai(&d, &["report", "export", &digest, "--target", &url, "--out", "altered.wai-fleet.json"]); + assert_eq!((o.status.code(), envelope(&o)["error"]["code"].as_str()), (Some(1), Some("bad_signature"))); + assert!(!d.join("altered.wai-fleet.json").exists()); + // `wai verify` checks the bundle offline, and refuses it altered. + let o = wai(&d, &["verify", "week.wai-fleet.json"]); + let t = String::from_utf8_lossy(&o.stdout); + assert!(o.status.success(), "{t}"); + assert!(t.contains("every line recomputed") && t.contains("silent") && t.contains("hops partial"), "{t}"); + std::fs::write(d.join("bad.wai-fleet.json"), altered.to_string()).unwrap(); + let o = wai(&d, &["verify", "bad.wai-fleet.json"]); + assert_eq!(o.status.code(), Some(1)); + assert!(String::from_utf8_lossy(&o.stdout).contains("FAIL fleet report: bad_signature")); +} -- 2.54.0 (Apple Git-157) From 44378c92df48999ec6c4a82874bd7ff375e2d06d Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Tue, 27 Oct 2026 15:39:52 -0400 Subject: [PATCH 4/5] =?UTF-8?q?wai.delivery.fleet=20in=20the=20registry,?= =?UTF-8?q?=20SPEC=20=C2=A75=20and=20the=20changelog;=20the=20fleet's=20st?= =?UTF-8?q?eps=20in=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The record and its wire identifiers (WFE1, WFR1, the bundle's kind and file suffix) in the registry and its export; SPEC §5's paragraph; the changelog's entry. wai-conformance.yml: the extension in its paths, the feature in its lists, tests/fleet.rs and tests/cli_fleet.rs, and a step that runs the module's tests and fleet_verify.py. wai-fleet.yml: the service's tests, clippy and its smoke checks over HTTP. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/wai-conformance.yml | 34 ++++++- .github/workflows/wai-fleet.yml | 130 ++++++++++++++++++++++++++ wai/CHANGELOG.md | 30 ++++++ wai/REGISTRY.md | 5 + wai/SPEC.md | 18 ++++ wai/extensions/fleet.md | 9 +- wai/registry/capabilities.json | 42 +++++++++ wai/vocab/v2.ttl | 7 ++ wai/wai-rs/src/codecs/registry.rs | 8 ++ 9 files changed, 275 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/wai-fleet.yml diff --git a/.github/workflows/wai-conformance.yml b/.github/workflows/wai-conformance.yml index b73db1b79..73f5a4c05 100644 --- a/.github/workflows/wai-conformance.yml +++ b/.github/workflows/wai-conformance.yml @@ -195,6 +195,10 @@ on: # reports, stream_audit_verify.py reads that table, and the registry's wire identifiers test # reads its sections. - 'wai/extensions/stream-audit.md' + # tests/fleet.rs requires this extension's §10 to list the codes the reference reports, + # fleet_verify.py reads that table, and the registry's wire identifiers test reads its + # sections. Its corpus is generated from the metering corpus, under the paths above. + - 'wai/extensions/fleet.md' # tests/native_sink.rs requires this extension's §8 to list exactly the reasons its # corpus reaches, and native_sink_verify.py reads that table. - 'wai/extensions/native-sink.md' @@ -597,7 +601,7 @@ jobs: working-directory: wai/wai-rs run: | cargo test --no-default-features --features floor --test floor - cargo test --no-default-features --features quickstart --bin wai --test floor --test cli_dx + cargo test --no-default-features --features quickstart --bin wai --test floor --test cli_dx --test cli_fleet # tests/cli_http.rs runs `wai http publish`, `codecs`, `origin` and `bench` as a user # does: objects named by their content hash with their head proofs, a sequence's union # and floor, the origin's headers, ranges and If-Range on loopback, and a fetch by @@ -1141,7 +1145,7 @@ jobs: name: independent verifiers · claims, JWP, key discovery and integer payloads (Python) runs-on: linux-arm64 env: - WAI_FEATURES: key_discovery,http,video_manifest,stage_measure,live_events,live_room,capture_take,live_compose,live_record,timed_text,access_services,live_metering,energy_steering,live_moderation,dred_exact,live_ads,live_provenance,synthesis,synthesis_mark,neural_int,exact_upscale,robustness,ai_usage,contribution,settlement,browser_sink,receipt_claims,takedown,influence,direction,co_performance,age_assurance,bearer_receipts,exploration,co_watch,telemetry_aggregate,exact_tonemap,splat_exact,live_watermark,derive_edge,sink_energy,key_release,stitched_presentation,prior_wire,scene_map,avatar_face,receipt_ledger,stream_audit,native_sink,platform_encode,remote_desktop,stream_termination,live_world,format_probe,live_messaging + WAI_FEATURES: key_discovery,http,video_manifest,stage_measure,live_events,live_room,capture_take,live_compose,live_record,timed_text,access_services,live_metering,energy_steering,live_moderation,dred_exact,live_ads,live_provenance,synthesis,synthesis_mark,neural_int,exact_upscale,robustness,ai_usage,contribution,settlement,browser_sink,receipt_claims,takedown,influence,direction,co_performance,age_assurance,bearer_receipts,exploration,co_watch,telemetry_aggregate,exact_tonemap,splat_exact,live_watermark,derive_edge,sink_energy,key_release,stitched_presentation,prior_wire,scene_map,avatar_face,receipt_ledger,stream_audit,fleet,native_sink,platform_encode,remote_desktop,stream_termination,live_world,format_probe,live_messaging WAI_PQ_FEATURES: synthesis,pq_signatures WAI_RELEASE_FEATURES: dred_exact,synthesis_mark,robustness,avatar_face steps: @@ -1234,7 +1238,7 @@ jobs: --test telemetry_aggregate --test exact_tonemap --test splat_exact --test live_watermark \ --test derive_edge --test det_cost_bin --test sink_energy --test key_release \ --test stitched_presentation --test prior_wire --test scene_map --test receipt_ledger \ - --test stream_audit --test native_sink --test platform_encode --test remote_desktop \ + --test stream_audit --test fleet --test native_sink --test platform_encode --test remote_desktop \ --test stream_termination --test live_world --test format_probe --test live_messaging cargo test --release --no-run --no-default-features --features "$WAI_RELEASE_FEATURES" \ --test dred_exact --test dred_exact_measure --test synthesis_mark --test robustness \ @@ -1969,6 +1973,28 @@ jobs: (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib stream_audit::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test stream_audit) python3 -I live-conformance/stream_audit_verify.py live-conformance/audit + # wai.delivery.fleet (extensions/fleet.md): the reference module's unit tests (the enrolment's + # rules, a summary line split only in the relay's form, a row summed across classes told from + # a wrong one, the four coverages) and tests/fleet.rs (vectors.json regenerates byte for byte + # from its seeds and the metering corpus and no other file is there; wai-rs gives every + # vector its stated outcome; every reason of §10 and every reused code refuses a vector; the + # accepted vectors state measured, unmetered and partial energy as §5.4 does; the week's + # records held as a service holds them sign the corpus's report byte for byte; §10 lists + # exactly the reference's codes); then the corpus's second implementation, fleet_verify.py, + # written from the extension's text and sharing no code with wai-rs, which reads per-hop + # records with live_metering_verify.py, checks every signature with WAI's strict Ed25519 + # rule, recomputes every line, row, unmetered count and citation, requires every mutated + # copy of the corpus to fail, and drops each of its own checks in turn and requires the + # corpus to catch the weakened verifier; standard library only, run isolated (-I). The + # service and its smoke checks over HTTP run in wai-fleet.yml. + - name: fleet · wai-rs and fleet_verify.py + working-directory: wai + shell: bash + run: | + set -euo pipefail + (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib fleet::) + (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test fleet) + python3 -I live-conformance/fleet_verify.py live-conformance/fleet # The native sink (extensions/native-sink.md): the reference module's unit tests (dates, # durations and attribute lists read as a player reads them, origins serialized as RFC 6454 # does, names that state a content hash and names that do not, the acknowledgements @@ -2602,7 +2628,7 @@ jobs: takedown influence direction co_performance age_assurance bearer_receipts exploration co_watch \ telemetry_aggregate exact_tonemap splat_exact live_watermark derive_edge pq_signatures \ synthesis,pq_signatures sink_energy key_release stitched_presentation prior_wire \ - prior_wire,neural_int scene_map avatar_face receipt_ledger stream_audit native_sink \ + prior_wire,neural_int scene_map avatar_face receipt_ledger stream_audit fleet native_sink \ platform_encode remote_desktop stream_termination live_world format_probe live_messaging; do echo "::group::$f" cargo check --no-default-features --features "$f" --tests diff --git a/.github/workflows/wai-fleet.yml b/.github/workflows/wai-fleet.yml new file mode 100644 index 000000000..70c6de2ef --- /dev/null +++ b/.github/workflows/wai-fleet.yml @@ -0,0 +1,130 @@ +name: wai-fleet service + +# A WAI fleet as a service (wai/wai-fleet, extensions/fleet.md §9): its tests (the corpus's report +# signed byte for byte, the directory recovered after a restart, a line a crash cut short cut off, +# one process per directory, every summary of the corpus read and written again by the reference +# relay's own types, and records the relay's own code signs collected from a file over HTTP), +# clippy with warnings as errors, and its smoke checks over HTTP against an instance started here +# with the corpus's organisation key, the report's bundle checked by fleet_verify.py. On Linux; +# on the macOS runner (a host the service would be deployed to) the release build and the smoke +# checks, without the tests, which build the reference relay. + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: [main] + paths: + - 'wai/wai-rs/**' + - 'wai/wai-fleet/**' + - 'wai/live-conformance/**' + - 'wai/claim-conformance/**' + - 'wai/extensions/fleet.md' + - 'joule-code/joule-code-rs/crates/joule-moq-relay/**' + - 'joule-code/joule-code-rs/crates/joule-moq/**' + - 'joule-code/joule-code-rs/crates/jwp/**' + - 'joule-code/joule-code-rs/vendor/wtransport/**' + - 'rust-toolchain.toml' + - '.github/workflows/wai-fleet.yml' + pull_request: + paths: + - 'wai/wai-rs/**' + - 'wai/wai-fleet/**' + - 'wai/live-conformance/**' + - 'wai/claim-conformance/**' + - 'wai/extensions/fleet.md' + - 'joule-code/joule-code-rs/crates/joule-moq-relay/**' + - 'joule-code/joule-code-rs/crates/joule-moq/**' + - 'joule-code/joule-code-rs/crates/jwp/**' + - 'joule-code/joule-code-rs/vendor/wtransport/**' + - 'rust-toolchain.toml' + - '.github/workflows/wai-fleet.yml' + +jobs: + relevant: + name: does this change touch it + runs-on: linux-arm64 + outputs: + run: ${{ steps.gate.outputs.run }} + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - id: gate + run: | + set -euo pipefail + r=$(python3 scripts/pr-touches-paths.py .github/workflows/wai-fleet.yml \ + "${{ github.event.pull_request.base.sha }}" \ + "${{ github.event.pull_request.head.sha }}") + echo "this change touches wai-fleet: $r" + echo "run=$r" >> "$GITHUB_OUTPUT" + + service-linux: + name: service · linux + needs: relevant + if: needs.relevant.outputs.run == 'true' + runs-on: linux + timeout-minutes: 60 + steps: + - uses: actions/checkout@v5 + - name: Install Rust 1.98.0 + shell: bash + run: | + export PATH="$HOME/.cargo/bin:$PATH" + command -v rustup >/dev/null 2>&1 || \ + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0 + rustup toolchain install 1.98.0 --profile minimal --component clippy + rustup default 1.98.0 + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + - name: Tests and clippy + shell: bash + working-directory: wai/wai-fleet + run: | + set -euo pipefail + cargo test --locked --release 2>&1 | tee "$RUNNER_TEMP/test.log" + grep -qE '^test result: ok\. [1-9][0-9]* passed; 0 failed' "$RUNNER_TEMP/test.log" || { echo "::error::no test ran"; exit 1; } + cargo clippy --locked --release --all-targets -- -D warnings + - name: The smoke checks over HTTP + shell: bash + working-directory: wai/wai-fleet + run: | + set -euo pipefail + cargo build --locked --release + dir="$RUNNER_TEMP/fleet"; key="$RUNNER_TEMP/organisation.key"; rm -rf "$dir" "$key" + # The corpus's organisation key, from its fixed seed (a test key, never a deployment's). + python3 -I -c 'import hashlib,sys; sys.stdout.buffer.write(hashlib.sha256(b"wai:fleet/corpus/key\x00organisation").digest())' > "$key" + WAI_FLEET_KEY="$key" WAI_FLEET_DIR="$dir" WAI_FLEET_ADDR=127.0.0.1:18252 \ + "${CARGO_TARGET_DIR:-target}/release/wai-fleet" serve 2> "$RUNNER_TEMP/service.log" & + pid=$! + trap 'kill $pid 2>/dev/null || true; cat "$RUNNER_TEMP/service.log"' EXIT + for _ in $(seq 1 50); do curl -s -o /dev/null http://127.0.0.1:18252/v1/fleet/health && break; sleep 0.2; done + bash smoke.sh http://127.0.0.1:18252 + + service-macos: + name: service · macos + needs: relevant + if: needs.relevant.outputs.run == 'true' + runs-on: macos + timeout-minutes: 60 + steps: + - uses: actions/checkout@v5 + # launchd's PATH omits cargo on the macOS host runner. + - name: Put cargo on PATH + shell: bash + run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + - name: The smoke checks over HTTP + shell: bash + working-directory: wai/wai-fleet + run: | + set -euo pipefail + nice -n 10 cargo build --locked --release + dir="$RUNNER_TEMP/fleet"; key="$RUNNER_TEMP/organisation.key"; rm -rf "$dir" "$key" + python3 -I -c 'import hashlib,sys; sys.stdout.buffer.write(hashlib.sha256(b"wai:fleet/corpus/key\x00organisation").digest())' > "$key" + WAI_FLEET_KEY="$key" WAI_FLEET_DIR="$dir" WAI_FLEET_ADDR=127.0.0.1:18252 \ + "${CARGO_TARGET_DIR:-target}/release/wai-fleet" serve 2> "$RUNNER_TEMP/service.log" & + pid=$! + trap 'kill $pid 2>/dev/null || true; cat "$RUNNER_TEMP/service.log"' EXIT + for _ in $(seq 1 50); do curl -s -o /dev/null http://127.0.0.1:18252/v1/fleet/health && break; sleep 0.2; done + bash smoke.sh http://127.0.0.1:18252 diff --git a/wai/CHANGELOG.md b/wai/CHANGELOG.md index fb10ec080..18148e6ac 100644 --- a/wai/CHANGELOG.md +++ b/wai/CHANGELOG.md @@ -6,6 +6,36 @@ wire format may change and such changes are recorded here. ## v0.4.0 — current +### Fleet: an organisation's nodes enrolled by their keys, their records verified, and a report it signs for a period + +- **The text** ([`extensions/fleet.md`](extensions/fleet.md), `wai.delivery.fleet`): the + organisation's enrolment of a node, `WFE1` (its key, its role, a label, the span it holds); the + records a node contributes as it signs them: a relay's session summaries + (`joule-moq-relay/session-summary/2`, read in the relay's own form and verified by its own + signature), every hop's per-hop records with their ledgers, and the room descriptors that place + those in time; each record's instant, its period and its enrolment, and one thing counted once; + the fleet report, `WFR1`, with a line per node and per room, sessions, links and bytes, and energy + per scope and acquisition class, never summed across either, every unmetered figure counted as + unmetered and a total over a mix stated partial; citations; the bundle a verifier recomputes the + report from; and the reasons, among them `unmetered_summed` for a report that drops an unmetered + figure or counts it as a figure of zero joules, and `line_unsourced` for a line no record gives. +- **`wai-rs`** (feature `fleet`): the enrolment, the records, the figures, the report and the + bundle's verification; `wai_fleet_vectors` and `tests/fleet.rs`. +- **`wai-fleet`** ([`wai-fleet/`](wai-fleet/)): the fleet as an HTTP service over a directory it + owns, the enrolments and records in append-only logs, every report kept with its bundle; and + `wai-fleet collect`, which gives each line of a node's summary file, a path or an `http` or + `https` address, to a running service. +- **Operations**: `wai enrolment create` and `wai enrolment list` (`enrolment.create`, + `enrolment.list`), `wai report create` and `wai report export` (`report.create`, + `report.export`), on the toolchain's agent rules; `wai verify` checks `*.wai-fleet.json` bundles. + The quickstart build carries the feature. +- **The corpus** ([`live-conformance/fleet/`](live-conformance/fleet/)): a week of two relays + cascading, a compositor and an ingest gateway, with records taken from the metering corpus, the + reference relay's recorded per-hop record among them; a fleet whose energy is whole, one whose + energy is unmetered, and one enrolled and silent; and a control of one defect for each reason. + Its second implementation, `live-conformance/fleet_verify.py`, gives every vector the same + outcome, fails every mutated copy, and catches each of its own checks dropped. + ### Create: a WAI app described, built as a model writes it, and made a project by `wai create --from app.oui` - **The widgets** ([`wai-app`](wai-app/), a library with no binary): a joule-ui registry of WAI diff --git a/wai/REGISTRY.md b/wai/REGISTRY.md index 7960cb909..c145e716b 100644 --- a/wai/REGISTRY.md +++ b/wai/REGISTRY.md @@ -185,6 +185,7 @@ and a role are fixed once registered. | `wai.bearer.receipts` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | | `wai.capture.take` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | | `wai.delivery.audit` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | +| `wai.delivery.fleet` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | | `wai.delivery.ledger` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | | `wai.delivery.settlement` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | | `wai.derive.crop` | derivation | registered | — | — | patent-pool | — | — | §5 Prior artifacts, general tensors and derivation operations | @@ -343,6 +344,7 @@ and a role are fixed once registered. |---|---|---|---| | `#WAI-LAYER` | playlist-tag | defined | http-delivery §10.4 | | `.wai` | path | defined | http-delivery §5.2 | +| `.wai-fleet.json` | path | defined | fleet §7.1 | | `.wai.hp` | path | defined | http-delivery §6.2 | | `.wai.receipts` | path | defined | http-delivery §8.2 | | `/.well-known/wai-grants/` | well-known | defined | http-delivery §8.4 | @@ -391,6 +393,8 @@ and a role are fixed once registered. | `WDS1` | magic | defined | remote-desktop §3.3 | | `WEP1` | magic | defined | live-events §5 | | `WEV1` | magic | defined | live-events §3.1 | +| `WFE1` | magic | defined | fleet §3.1 | +| `WFR1` | magic | defined | fleet §6.1 | | `WGM1` | magic | defined | exact-tonemap §4.1 | | `WHP1` | magic | defined | http-delivery §6.2 | | `WJR1` | magic | defined | jwp-receipts §2.7.3 | @@ -511,6 +515,7 @@ and a role are fixed once registered. | `wai-detection` | document-kind | defined | synthesis §7.3 | | `wai-directed` | document-kind | defined | direction §8.1 | | `wai-distance` | document-kind | defined | exploration §6.3 | +| `wai-fleet-bundle` | document-kind | defined | fleet §7.1 | | `wai-influence-report` | document-kind | defined | influence §7.1 | | `wai-int/1` | scheme | defined | prior-carriage §10 | | `wai-key-status` | document-kind | defined | jwp-receipts §7.9 | diff --git a/wai/SPEC.md b/wai/SPEC.md index 983742356..25c74cc8e 100644 --- a/wai/SPEC.md +++ b/wai/SPEC.md @@ -1542,6 +1542,24 @@ and stalls once 50 sessions hold them, acknowledged bytes per origin and object role and class, never summed across classes. Anyone holding the bundles recomputes the report byte for byte. No price, tariff or amount: [`extensions/stream-audit.md`](extensions/stream-audit.md). +And for **an organisation's fleet** — `wai.delivery.fleet`: the organisation signs an enrolment, +`WFE1`, for each node it runs, naming it by its signing key with its role (a relay, a compositor, +an ingest gateway, a room service, a ledger or an audit collector), a label and the span it holds. +Each node contributes the records it already signs, as it signs them: a relay's session summaries, +one line of its summary file each, and every hop's per-hop records (`WMH1`) with their ledgers, +placed in time by the room descriptors whose digests they name. Each is verified against its +node's enrolled key, placed in a period by its instant, and counted once. For a period, the +organisation signs a fleet report, `WFR1`: one line per node, with its client sessions, its hop +links to other relays and their bytes, and its per-hop records and their bytes, never added to the +first; one line per room, with its hops, subscriber sessions and time, and bytes; the totals; and +for each line and the totals the energy its records state, per scope (the sessions' figures, the +hops' figures) and per acquisition class with the largest declared uncertainty, never summed across +either. Every unmetered figure is counted as unmetered, never as zero joules, so a total over +measured and unmetered figures says it is partial, and a node that signed nothing in the period is +listed as silent. Each line cites the records it came from, by the identity the receipt ledger +gives a per-hop record. A verifier given the report with its enrolments and records, a bundle, +recomputes every line. No accounts, no billing: [`extensions/fleet.md`](extensions/fleet.md). + And for **a native host's player** — the native sink: an application that plays through its platform's own player, which decodes on the platform's media engine, routes the player's requests through the sink, which verifies a media playlist against its playlist receipt and the chain of its diff --git a/wai/extensions/fleet.md b/wai/extensions/fleet.md index b03689340..c02cdbc9f 100644 --- a/wai/extensions/fleet.md +++ b/wai/extensions/fleet.md @@ -74,7 +74,7 @@ signed record a WAI tool emits and verifies. It names no payload format and is n | `organisation` | 32 | the organisation key, which signs the enrolment | | `node` | 32 | the node key | | `role` | 1 | the node's role (§2) | -| `from`, `until` | 8 each | u64: the span the enrolment holds, [`from`, `until`); `until` is 2^64 − 1 for a span with no end | +| `from`, `until` | 8 each | u64: the span the enrolment holds, from `from` (included) to `until` (excluded); `until` is 2^64 − 1 for a span with no end | | `label` | 1 + *n* | a u8 *n*, then *n* bytes of UTF-8 (RFC 3629): the node's name in reports, empty for none | | `sig` | 64 | §3.2 | @@ -223,7 +223,7 @@ Each summary and each per-hop record has an **instant**: A record is **in** a period when its instant is at or after the period's `start` and before its `end`; otherwise it is refused `outside_period`. It is **within its enrolment** when its instant -is in its signer's [`from`, `until`): otherwise `outside_enrolment`. So of consecutive periods, +is at or after its signer's `from` and before its `until`: otherwise `outside_enrolment`. So of consecutive periods, each record is in exactly one. ### 4.6 One thing once @@ -233,8 +233,9 @@ Of two records, the later is refused: - `record_duplicate` when both have one kind and one identity; - `record_overlap` when both are summaries of one relay with one `session` and one `opened_unix_ms` (one session summarised twice), or both are per-hop records of one hop and one - room whose spans share an instant, [*s*₁, *e*₁) and [*s*₂, *e*₂) with *s*₁ < *e*₂ and - *s*₂ < *e*₁ (live-metering §3.8: a hop's parts of one room session do not overlap). + room whose spans share an instant, spans from *s*₁ to *e*₁ and from *s*₂ to *e*₂, each end + excluded, with *s*₁ < *e*₂ and *s*₂ < *e*₁ (live-metering §3.8: a hop's parts of one room session + do not overlap). ## 5. The figures diff --git a/wai/registry/capabilities.json b/wai/registry/capabilities.json index 077d64152..3cd6b599a 100644 --- a/wai/registry/capabilities.json +++ b/wai/registry/capabilities.json @@ -376,6 +376,20 @@ "edition": null, "registered": "2026-10-25" }, + { + "capability": "wai.delivery.fleet", + "kind": "record", + "status": "registered", + "media": null, + "role": null, + "tier": null, + "licence": null, + "replicate": null, + "sets": [], + "spec_section": "§5 Interactive, temporal & computed content", + "edition": null, + "registered": "2026-10-27" + }, { "capability": "wai.delivery.ledger", "kind": "record", @@ -2485,6 +2499,13 @@ "section": "§5.2", "status": "defined" }, + { + "name": ".wai-fleet.json", + "kind": "path", + "document": "extensions/fleet.md", + "section": "§7.1", + "status": "defined" + }, { "name": ".wai.hp", "kind": "path", @@ -2821,6 +2842,20 @@ "section": "§3.1", "status": "defined" }, + { + "name": "WFE1", + "kind": "magic", + "document": "extensions/fleet.md", + "section": "§3.1", + "status": "defined" + }, + { + "name": "WFR1", + "kind": "magic", + "document": "extensions/fleet.md", + "section": "§6.1", + "status": "defined" + }, { "name": "WGM1", "kind": "magic", @@ -3661,6 +3696,13 @@ "section": "§6.3", "status": "defined" }, + { + "name": "wai-fleet-bundle", + "kind": "document-kind", + "document": "extensions/fleet.md", + "section": "§7.1", + "status": "defined" + }, { "name": "wai-influence-report", "kind": "document-kind", diff --git a/wai/vocab/v2.ttl b/wai/vocab/v2.ttl index c03ecfb65..93f610d10 100644 --- a/wai/vocab/v2.ttl +++ b/wai/vocab/v2.ttl @@ -359,6 +359,13 @@ wai:wai.delivery.audit a wai:Capability ; wai:specSection "§5 Interactive, temporal & computed content" ; wai:registeredOn "2026-10-25"^^xsd:date . +wai:wai.delivery.fleet a wai:Capability ; + rdfs:label "wai.delivery.fleet" ; + wai:kind wai:kind-record ; + wai:status wai:status-registered ; + wai:specSection "§5 Interactive, temporal & computed content" ; + wai:registeredOn "2026-10-27"^^xsd:date . + wai:wai.delivery.ledger a wai:Capability ; rdfs:label "wai.delivery.ledger" ; wai:kind wai:kind-record ; diff --git a/wai/wai-rs/src/codecs/registry.rs b/wai/wai-rs/src/codecs/registry.rs index 123681a62..c23a3a7ce 100644 --- a/wai/wai-rs/src/codecs/registry.rs +++ b/wai/wai-rs/src/codecs/registry.rs @@ -238,6 +238,7 @@ pub const CAP_MEDIA_CONTRIBUTION: &str = "wai.media.contribution"; pub const CAP_DELIVERY_SETTLEMENT: &str = "wai.delivery.settlement"; pub const CAP_DELIVERY_LEDGER: &str = "wai.delivery.ledger"; pub const CAP_DELIVERY_AUDIT: &str = "wai.delivery.audit"; +pub const CAP_DELIVERY_FLEET: &str = "wai.delivery.fleet"; pub const CAP_MEDIA_TAKEDOWN: &str = "wai.media.takedown"; pub const CAP_LIVE_COPERFORMANCE: &str = "wai.live.coperformance"; pub const CAP_MEDIA_INFLUENCE: &str = "wai.media.influence"; @@ -363,6 +364,7 @@ const ROWS: &[(&str, &str, Option<&str>, &str)] = &[ (CAP_DELIVERY_SETTLEMENT, S_INTERACTIVE, None, "2026-10-21"), (CAP_DELIVERY_LEDGER, S_INTERACTIVE, None, "2026-10-25"), (CAP_DELIVERY_AUDIT, S_INTERACTIVE, None, "2026-10-25"), + (CAP_DELIVERY_FLEET, S_INTERACTIVE, None, "2026-10-27"), (CAP_MEDIA_TAKEDOWN, S_INTERACTIVE, None, "2026-10-21"), (CAP_LIVE_COPERFORMANCE, S_INTERACTIVE, None, "2026-10-21"), (CAP_MEDIA_INFLUENCE, S_INTERACTIVE, None, "2026-10-21"), @@ -455,6 +457,7 @@ const RECORDS: &[&str] = &[ CAP_DELIVERY_SETTLEMENT, CAP_DELIVERY_LEDGER, CAP_DELIVERY_AUDIT, + CAP_DELIVERY_FLEET, CAP_MEDIA_TAKEDOWN, CAP_LIVE_COPERFORMANCE, CAP_MEDIA_INFLUENCE, @@ -652,6 +655,7 @@ const CONTRIBUTION: &str = "extensions/contribution.md"; const SETTLEMENT: &str = "extensions/settlement.md"; const LEDGER: &str = "extensions/receipt-ledger.md"; const STREAM_AUDIT: &str = "extensions/stream-audit.md"; +const FLEET: &str = "extensions/fleet.md"; const BROWSER_SINK: &str = "extensions/browser-sink.md"; const TAKEDOWN: &str = "extensions/takedown.md"; const INFLUENCE: &str = "extensions/influence.md"; @@ -822,6 +826,10 @@ pub const WIRE_IDENTIFIERS: &[WireIdentifier] = &[ wire("WLT1", WireKind::Magic, LEDGER, "§4.1", WireStatus::Defined), wire("WLI1", WireKind::Magic, LEDGER, "§6.1", WireStatus::Defined), wire("WAS1", WireKind::Magic, STREAM_AUDIT, "§5.1", WireStatus::Defined), + wire("WFE1", WireKind::Magic, FLEET, "§3.1", WireStatus::Defined), + wire("WFR1", WireKind::Magic, FLEET, "§6.1", WireStatus::Defined), + wire("wai-fleet-bundle", WireKind::DocumentKind, FLEET, "§7.1", WireStatus::Defined), + wire(".wai-fleet.json", WireKind::Path, FLEET, "§7.1", WireStatus::Defined), wire("contentBinding", WireKind::FrameMetadata, BROWSER_SINK, "§7.1", WireStatus::Proposed), wire("wai-takedown-clocks", WireKind::DocumentKind, TAKEDOWN, "§4", WireStatus::Defined), wire("wai-takedown-policy", WireKind::DocumentKind, TAKEDOWN, "§5.1", WireStatus::Defined), -- 2.54.0 (Apple Git-157) From 872502e8ebb151b1da8adb9bc960527053d7e9f5 Mon Sep 17 00:00:00 2001 From: Transaction Science Date: Tue, 27 Oct 2026 16:09:41 -0400 Subject: [PATCH 5/5] =?UTF-8?q?fleet=5Fverify.py:=20=C2=A710=20names=20eve?= =?UTF-8?q?ry=20reason=20the=20corpus=20raises?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A falsification (§10's report_mismatch row deleted) was caught by tests/fleet.rs and not by the second implementation, which required every listed reason to appear in the corpus but not every raised reason to be listed. Co-Authored-By: Claude Opus 5.5 --- wai/live-conformance/fleet_verify.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/wai/live-conformance/fleet_verify.py b/wai/live-conformance/fleet_verify.py index 4959d298b..0b5aa23b4 100644 --- a/wai/live-conformance/fleet_verify.py +++ b/wai/live-conformance/fleet_verify.py @@ -16,7 +16,8 @@ live metering, written from that text alone (§4.3). Everything else is here: order, and the outcome of §7.3. For every vector it requires the outcome the corpus states; of the corpus, that every reason of -§10 and every code it reuses appears in it and that no other file is there. Then it mutates +§10 and every code it reuses appears in it, that §10 names every reason it raises, and that no other +file is there. Then it mutates copies of the corpus, one defect each, and requires every copy to fail; and it drops each of its own checks in turn and requires the corpus to catch the weakened verifier. @@ -814,6 +815,10 @@ def main(corpus_dir): fails.append("no vector is refused %s" % missing) print("%s every reason of §10 and every code it reuses refuses a vector (%d added, %d reused)" % ("PASS" if not missing else "FAIL", len(added), len(reused))) + unlisted = sorted(r for r in seen if r is not None and r not in added + reused) + if unlisted: + fails.append("§10 does not name %s, which the corpus raises" % unlisted) + print("%s §10 names every reason the corpus raises" % ("PASS" if not unlisted else "FAIL")) copies = mutations(doc) weak = [name for name, m in copies if not check(m, quiet=True)] print("%s every mutated copy of the corpus fails (%d copies)" % ("PASS" if not weak else "FAIL", len(copies))) -- 2.54.0 (Apple Git-157)