<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-moq-live-agent-interaction-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Live Agent over MoQ">Live Agent Interaction over MoQ</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-moq-live-agent-interaction-00"/>
    <author initials="Y." surname="Liu" fullname="刘彦梅" asciiFullname="Yanmei Liu">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="D." surname="Liu" fullname="Dapeng Liu">
      <organization>Alibaba Cloud</organization>
      <address>
        <email>max.ldp@alibaba-inc.com</email>
      </address>
    </author>
    <date/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 41?>

<t>This document defines a protocol for real-time interactive communication
between users and AI agents over Media over QUIC Transport (MOQT).
It specifies how streaming inference outputs (ASR transcripts, LLM tokens,
TTS audio) map to the MOQT object model, defines a turn-taking control
protocol with barge-in support for voice interactions, and establishes
track structure conventions for live agent sessions. The protocol operates
as an application-layer profile on top of MOQT without modifying transport
semantics.</t>
    </abstract>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large Language Models (LLMs) and multimodal AI systems have enabled a new
class of interactive applications where users communicate with AI agents
in real-time through voice and text. These "live agent" interactions
share characteristics with both traditional media streaming and
conversational protocols, but fit neatly into neither category.</t>
      <section anchor="use-cases">
        <name>Motivation and Use Cases</name>
        <t>The following application scenarios motivate the design of a dedicated
protocol profile for live agent interaction over MOQT:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Voice AI Assistants</strong>: A user speaks naturally to an AI agent and
receives spoken responses in real-time. The agent performs streaming
ASR on user audio, generates a response via LLM, and synthesizes
speech (TTS) delivered with sub-second latency. The user may
interrupt the agent mid-response (barge-in), requiring immediate
cessation of agent output. This demands continuous bidirectional
audio streaming, low time-to-first-audio latency, graceful
interruption handling, and the ability to deliver partial text
results ahead of audio for perceived responsiveness.</t>
          </li>
          <li>
            <t><strong>Real-Time Customer Service Agents</strong>: In live commerce or customer
support deployments, an AI agent handles simultaneous voice or text
interactions with customers, accessing external tools (inventory
lookup, order status, payment processing) and relaying structured
results alongside natural language responses. This demands reliable
delivery of tool results alongside best-effort audio delivery,
relay-based fan-out for scaling to thousands of concurrent sessions,
and per-session isolation with independent priority and timeout
policies.</t>
          </li>
          <li>
            <t><strong>Multimodal Scene-Aware Agents</strong>: A user points their device camera
at a real-world scene (e.g., a landmark, exhibit, or street sign)
while speaking to an AI agent that acts as a digital tour guide. The
agent subscribes to the user's audio and video input tracks,
performs visual understanding and speech recognition jointly, and
publishes spoken narration, text annotations, and contextual
information about the scene. This demands concurrent processing of
multiple input modalities (audio + video), low-latency multimodal
fusion at the agent backend, multiple independent output tracks with
heterogeneous delivery requirements (reliable text vs. best-effort
audio), and partial reliability where stale video frames or audio
segments may be dropped without retransmission.</t>
          </li>
        </ul>
        <section anchor="why-existing-approaches-are-insufficient">
          <name>Why Existing Approaches Are Insufficient</name>
          <t>Live agent interactions impose strict latency budgets: users expect
sub-second time-to-first-token and time-to-first-audio for the
interaction to feel comparable to natural conversational turn-taking. HTTP-based streaming approaches
(SSE, WebSocket) operate over TCP, where head-of-line blocking,
connection-level flow control, and lack of stream multiplexing make it
difficult to meet these latency targets — particularly when multiple
output modalities (text, audio, tool results) must be delivered
concurrently with independent priority and reliability requirements.
Furthermore, these approaches cannot express per-object delivery
timeouts or relay-assisted fan-out at the transport level, forcing
application-layer workarounds that add complexity and latency.
Purpose-built AI inference APIs operate in request-response or
unidirectional streaming modes without support for concurrent input
processing, turn management, or barge-in.</t>
          <t>Media over QUIC Transport addresses these limitations at the transport
layer: QUIC's stream multiplexing eliminates head-of-line blocking
between modalities, MOQT's priority system ensures latency-critical
signals (barge-in, user audio) are scheduled first, and delivery
timeouts allow stale data to be discarded without blocking fresh output.
The relay infrastructure provides scalability without per-connection
state at the agent backend. However, MOQT lacks application-layer
conventions for mapping AI inference semantics onto these primitives.
This document fills that gap.</t>
        </section>
      </section>
      <section anchor="properties">
        <name>Distinguishing Properties</name>
        <t>A live agent interaction has the following distinguishing properties:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Asymmetric streaming</strong>: User input is continuous (audio stream),
while agent output is incremental and multi-modal (text tokens,
synthesized audio, tool results).</t>
          </li>
          <li>
            <t><strong>Turn-based with interruption</strong>: Unlike media broadcast, the
interaction follows a dialogue structure where either party can
take or yield the floor.</t>
          </li>
          <li>
            <t><strong>Latency-critical incremental delivery</strong>: Users perceive agent
responsiveness through time-to-first-token and time-to-first-audio,
requiring sub-second delivery of partial results.</t>
          </li>
          <li>
            <t><strong>Heterogeneous reliability requirements</strong>: Within a single turn,
partial ASR transcripts are ephemeral (can be superseded), final
transcripts are authoritative, TTS audio is time-bounded, and tool
results must be delivered reliably.</t>
          </li>
        </ul>
        <t>Media over QUIC Transport <xref target="MOQT"/> provides a publish/subscribe protocol
with features well-suited to these requirements: prioritized delivery,
partial reliability through delivery timeouts, group-based object
organization, and relay infrastructure for scalability. However, MOQT
defines no application-layer semantics for mapping inference streams
to its object model, nor for managing conversational turn-taking.</t>
        <t>This document specifies:</t>
        <ul spacing="normal">
          <li>
            <t>A mapping of streaming inference outputs to the MOQT object data
model (<xref target="inference-delivery"/>).</t>
          </li>
          <li>
            <t>A turn control protocol for managing dialogue state and handling
barge-in interruptions (<xref target="turn-control"/>).</t>
          </li>
          <li>
            <t>Track structure conventions and naming for live agent sessions
(<xref target="track-structure"/>).</t>
          </li>
          <li>
            <t>Delivery policies appropriate for each stream type
(<xref target="delivery-policies"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="architecture">
        <name>Architecture Overview</name>
        <section anchor="protocol-scope-and-layering">
          <name>Protocol Scope and Layering</name>
          <t>This document defines an application-layer profile that operates on top
of MOQT <xref target="MOQT"/> without modifying its transport semantics. The
relationship to the MoQ protocol suite is illustrated below:</t>
          <figure anchor="fig-layering">
            <name>Protocol Layering</name>
            <artwork><![CDATA[
+-------------------------------------------------------------------+
|              Application Layer (Live Agent Interaction)            |
|                                                                   |
|  Maps conversational structure (turns, steps, frames) onto the    |
|  MOQT object hierarchy; adds turn-taking control via signals.     |
+-------------------------------------------------------------------+
         |                    |                      |
         v                    v                      v
+------------------+  +-----------------+  +-------------------+
| MoQ Transport    |  | LOC Container   |  | MoQ Secure        |
| (MOQT)           |  | (Audio/Video)   |  | Objects (E2E)     |
| - Object Model   |  | - Codec framing |  | - Encryption      |
| - Pub/Sub        |  | - Timing        |  | - Authentication  |
| - Relay          |  |                 |  |                   |
| - Priority       |  |                 |  |                   |
| - Delivery       |  |                 |  |                   |
+------------------+  +-----------------+  +-------------------+
         |
         v
+-------------------------------------------------------------------+
|                QUIC / WebTransport                                 |
|  - Stream multiplexing    - Datagram extension                    |
|  - TLS 1.3 encryption    - Congestion control                    |
|  - 0-RTT resumption      - Flow control                          |
+-------------------------------------------------------------------+
]]></artwork>
          </figure>
          <t>The following table summarizes how live agent domain concepts map to
MOQT primitives:</t>
          <table anchor="tab-concept-mapping">
            <name>Domain Concept to MOQT Mapping</name>
            <thead>
              <tr>
                <th align="left">Domain Concept</th>
                <th align="left">MOQT Primitive</th>
                <th align="left">Semantics</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Conversation Turn</td>
                <td align="left">Group</td>
                <td align="left">Atomic dialogue unit; GROUP_ORDER descending prioritizes latest turn</td>
              </tr>
              <tr>
                <td align="left">Inference Step</td>
                <td align="left">Subgroup</td>
                <td align="left">A sentence, audio segment, or tool call within a turn</td>
              </tr>
              <tr>
                <td align="left">Token Batch / Audio Frame</td>
                <td align="left">Object</td>
                <td align="left">Minimum delivery unit; subject to OBJECT_DELIVERY_TIMEOUT</td>
              </tr>
              <tr>
                <td align="left">Stream Modality</td>
                <td align="left">Track</td>
                <td align="left">Independent subscribe, priority, and reliability per modality</td>
              </tr>
              <tr>
                <td align="left">Barge-in Signal</td>
                <td align="left">Datagram</td>
                <td align="left">Highest priority (0x00); bypasses head-of-line blocking</td>
              </tr>
              <tr>
                <td align="left">Turn Control</td>
                <td align="left">Control Track</td>
                <td align="left">Reliable delivery of state-machine transitions</td>
              </tr>
            </tbody>
          </table>
          <t>This document:</t>
          <ul spacing="normal">
            <li>
              <t>USES the MOQT object model (Track, Group, Subgroup, Object) to
represent conversational structure.</t>
            </li>
            <li>
              <t>USES LOC <xref target="LOC"/> as the container format for audio payloads.</t>
            </li>
            <li>
              <t>USES MOQT native mechanisms (SUBSCRIBE, priority, delivery timeouts,
GROUP_ORDER) for QoS enforcement.</t>
            </li>
            <li>
              <t><bcp14>MAY</bcp14> USE Secure Objects <xref target="SECURE-OBJECTS"/> for end-to-end encryption
of agent output through untrusted relays.</t>
            </li>
            <li>
              <t>DOES NOT define new transport-layer framing or modify MOQT wire
format.</t>
            </li>
          </ul>
        </section>
        <section anchor="design-principles">
          <name>Design Principles</name>
          <t>The protocol is guided by the following architectural principles:</t>
          <dl>
            <dt>Native MOQT Integration:</dt>
            <dd>
              <t>Map application semantics directly to the MOQT object hierarchy
rather than introducing intermediate framing layers. This ensures
MOQT relays can perform correct scheduling, timeout-based discard,
and caching without understanding application-layer payload formats.</t>
            </dd>
            <dt>Relay Transparency:</dt>
            <dd>
              <t>All protocol operations <bcp14>MUST</bcp14> work through unmodified MOQT relays.
The relay sees standard Tracks, Groups, Subgroups, and Objects with
associated priorities and timeouts. No relay-side payload inspection
is required.</t>
            </dd>
            <dt>Asymmetric by Design:</dt>
            <dd>
              <t>The protocol explicitly models the user-to-agent asymmetry: user
input is continuous and latency-critical for the agent; agent output
is incremental, multi-modal, and interruptible. This asymmetry is
reflected in priority assignment, timeout configuration, and track
structure.</t>
            </dd>
            <dt>Latency Budget Awareness:</dt>
            <dd>
              <t>Every protocol mechanism is evaluated against its contribution to
end-to-end latency. Zero additional round-trips for session setup
(reuse MOQT session). Datagram delivery for time-critical signals.
Batching strategies that bound flush latency.</t>
            </dd>
            <dt>Partial Reliability as a Feature:</dt>
            <dd>
              <t>Not all data within a turn has equal value. The protocol assigns
per-track and per-subgroup delivery timeouts that allow the transport
to discard stale data (old audio frames, superseded partial
transcripts) while guaranteeing delivery of authoritative results
(final text, tool outputs).</t>
            </dd>
            <dt>Modality Agnostic:</dt>
            <dd>
              <t>The protocol does not mandate specific codecs, model architectures,
or inference pipelines. It defines structural conventions
(Group=Turn, Subgroup=inference step) that apply regardless of
whether the agent produces text, audio, video, or structured data.</t>
            </dd>
          </dl>
        </section>
        <section anchor="protocol-components">
          <name>Protocol Components</name>
          <t>This document comprises four logical components:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Inference Stream Delivery</strong> (<xref target="inference-delivery"/>): Defines how
streaming outputs from ASR, LLM, and TTS pipelines map to the MOQT
object data model. Covers text token batching, audio segmentation,
tool result framing, and cross-track synchronization.</t>
            </li>
            <li>
              <t><strong>Turn Control Protocol</strong> (<xref target="turn-control"/>): Defines the
conversational state machine, control signal format, barge-in
handling, VAD integration, and priority assignment for managing
dialogue flow.</t>
            </li>
            <li>
              <t><strong>Track Structure and Naming</strong> (<xref target="track-structure"/>): Defines
namespace conventions, standard track names, and catalog integration
for live agent sessions.</t>
            </li>
            <li>
              <t><strong>Delivery Policies</strong> (<xref target="delivery-policies"/>): Specifies per-track
timeout configurations, transport selection guidelines (Datagram vs
Stream), and relay caching behavior.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="conventions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>The following terms are used in this document:</t>
        <dl>
          <dt>Live Agent Session:</dt>
          <dd>
            <t>A stateful interaction between a user endpoint and an AI agent
backend, conducted over one or more MOQT sessions.</t>
          </dd>
          <dt>Turn:</dt>
          <dd>
            <t>A contiguous period during which one party (user or agent) holds
the conversational floor. Mapped to a MOQT Group.</t>
          </dd>
          <dt>Inference Stream:</dt>
          <dd>
            <t>A sequence of incremental outputs from an AI model (e.g., LLM
tokens, ASR transcripts, TTS audio chunks).</t>
          </dd>
          <dt>Barge-in:</dt>
          <dd>
            <t>An event where the user begins speaking while the agent is still
producing output, causing the agent to yield the floor.</t>
          </dd>
          <dt>Partial Result:</dt>
          <dd>
            <t>An intermediate inference output that may be superseded by
subsequent results (e.g., partial ASR transcript).</t>
          </dd>
          <dt>Final Result:</dt>
          <dd>
            <t>A definitive inference output that will not be further modified.</t>
          </dd>
        </dl>
      </section>
      <section anchor="deployment-topologies">
        <name>Deployment Examples</name>
        <t>This protocol is compatible with multiple deployment topologies. Two
examples are illustrated below.</t>
        <section anchor="example-1-with-moq-relay">
          <name>Example 1: With MoQ Relay</name>
          <figure anchor="fig-relay-topology">
            <name>Deployment with MoQ Relay</name>
            <artwork><![CDATA[
User Device             MoQ Relay              Agent Backend
(App/Browser)          (Cache/Fan-out)        (Omni-LLM)
     |                      |                       |
     |===== QUIC/WebTransport session =============>|
     |                      |                       |
     |--- Audio Track ----->|-------- fwd --------->|
     |--- Video Track ----->|-------- fwd --------->|
     |                      |                       |
     |<-- Audio Track ------|<------ publish -------|
     |<-- Text Track -------|<------ publish -------|
     |<-- Tool Results -----|<------ publish -------|
     |                      |                       |
     |--- Control Signals ->|-------- fwd --------->|
     |<-- Control Signals --|<------ publish -------|
]]></artwork>
          </figure>
          <t>The relay forwards user input to the agent and fans out agent output
to subscribers. This topology is suited for scenarios requiring:</t>
          <ul spacing="normal">
            <li>
              <t>Multiple subscribers to a single agent session (monitoring,
recording, accessibility overlays).</t>
            </li>
            <li>
              <t>Geographic distribution where relays are placed close to users.</t>
            </li>
            <li>
              <t>Caching of agent output for late-joining clients.</t>
            </li>
          </ul>
        </section>
        <section anchor="example-2-without-relay">
          <name>Example 2: Without Relay</name>
          <figure anchor="fig-direct-topology">
            <name>Deployment without Relay</name>
            <artwork><![CDATA[
User Device                                    Agent Backend
(App/Browser)                                  (Omni-LLM)
     |                                              |
     |===== QUIC/WebTransport session =============>|
     |                                              |
     |--- Audio Track ----------------------------->|
     |--- Video Track ----------------------------->|
     |                                              |
     |<-- Audio Track ------------------------------|
     |<-- Text Track -------------------------------|
     |<-- Tool Results -----------------------------|
     |                                              |
     |--- Control Signals ------------------------->|
     |<-- Control Signals --------------------------|
]]></artwork>
          </figure>
          <t>The client connects directly to the agent backend. This topology is
suited for scenarios requiring:</t>
          <ul spacing="normal">
            <li>
              <t>Minimal latency (no intermediate hop).</t>
            </li>
            <li>
              <t>Simpler deployment without relay infrastructure.</t>
            </li>
            <li>
              <t>Single-subscriber sessions (1:1 user-to-agent interactions).</t>
            </li>
          </ul>
        </section>
        <section anchor="protocol-compatibility">
          <name>Protocol Compatibility</name>
          <t>This specification operates correctly under both topologies. The
application-layer semantics (track structure, turn control, object
model mapping) are identical regardless of whether a MoQ relay is
present:</t>
          <ul spacing="normal">
            <li>
              <t>With relay: the relay handles subscription management,
priority-based scheduling, and delivery timeout enforcement
transparently.</t>
            </li>
            <li>
              <t>Without relay: the agent backend itself implements MOQT session
handling. Priority and timeout semantics still apply to the QUIC
streams between client and agent.</t>
            </li>
          </ul>
          <t>Deployments <bcp14>MAY</bcp14> combine both topologies, for example using direct
connections for latency-sensitive single-user sessions while routing
multi-subscriber sessions through relays.</t>
        </section>
      </section>
    </section>
    <section anchor="inference-delivery">
      <name>Object Model Mapping for Inference Streams</name>
      <t>This section defines how streaming inference outputs map to the MOQT
object data model defined in <xref section="2" sectionFormat="of" target="MOQT"/>.</t>
      <section anchor="mapping-principles">
        <name>Mapping Principles</name>
        <t>The MOQT object hierarchy consists of Track &gt; Group &gt; Subgroup &gt; Object.
This document assigns conversational semantics to each level:</t>
        <table anchor="tab-mapping">
          <name>Object Model Semantic Mapping</name>
          <thead>
            <tr>
              <th align="left">MOQT Level</th>
              <th align="left">Live Agent Semantic</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Track</td>
              <td align="left">Stream type (audio, text, control)</td>
              <td align="left">Independent subscription unit</td>
            </tr>
            <tr>
              <td align="left">Group</td>
              <td align="left">Conversation turn</td>
              <td align="left">Atomic unit of dialogue; enables turn-level operations</td>
            </tr>
            <tr>
              <td align="left">Subgroup</td>
              <td align="left">Inference step within a turn</td>
              <td align="left">Logical segment: a sentence, an audio segment, a tool call</td>
            </tr>
            <tr>
              <td align="left">Object</td>
              <td align="left">Atomic delivery unit</td>
              <td align="left">Smallest independently decodable/renderable item</td>
            </tr>
          </tbody>
        </table>
        <t>This mapping enables:</t>
        <ul spacing="normal">
          <li>
            <t>Subscribing to a specific turn onwards (Group-based filtering).</t>
          </li>
          <li>
            <t>Dropping an entire stale turn when interrupted (Group-level discard).</t>
          </li>
          <li>
            <t>Prioritizing recent turns over old ones (GROUP_ORDER = descending).</t>
          </li>
          <li>
            <t>Independent reliability per inference step (Subgroup-level timeouts).</t>
          </li>
        </ul>
      </section>
      <section anchor="text-output">
        <name>Agent Text Output Track</name>
        <t>The agent text output track carries streaming LLM token output.</t>
        <section anchor="object-structure">
          <name>Object Structure</name>
          <t>Each Object in the text output track carries a <strong>token batch</strong>: one or
more sequential tokens generated within a single flush interval.</t>
          <figure anchor="fig-text-object">
            <name>Text Output Object Format</name>
            <artwork><![CDATA[
Text Output Object Payload:
+--------+--------+-------------------------------------------+
| Field  | Type   | Description                               |
+--------+--------+-------------------------------------------+
| flags  | uint8  | 0x01=partial, 0x02=final, 0x04=cancelled  |
| seq    | varint | Sequence number within subgroup           |
| count  | varint | Number of tokens in this batch            |
| tokens | UTF-8  | Concatenated token text                   |
+--------+--------+-------------------------------------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="text-batching">
          <name>Batching Strategy</name>
          <t>Implementations <bcp14>SHOULD</bcp14> batch tokens to amortize per-object overhead.
The following strategies are <bcp14>RECOMMENDED</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Time-based</strong>: Flush every 50ms, collecting all tokens generated in
that interval into a single Object.</t>
            </li>
            <li>
              <t><strong>Size-based</strong>: Flush when accumulated token text reaches 128 bytes.</t>
            </li>
            <li>
              <t><strong>Semantic-based</strong>: Flush at sentence boundaries or punctuation marks.</t>
            </li>
          </ul>
          <t>An implementation <bcp14>MUST</bcp14> flush immediately when:</t>
          <ul spacing="normal">
            <li>
              <t>The inference step completes (flags = 0x02, final).</t>
            </li>
            <li>
              <t>A barge-in interrupt is received (flags = 0x04, cancelled).</t>
            </li>
            <li>
              <t>The subgroup ends (last object in subgroup).</t>
            </li>
          </ul>
        </section>
        <section anchor="partial-final">
          <name>Partial and Final Semantics</name>
          <t>Within a Subgroup (inference step), Objects are delivered incrementally:</t>
          <ul spacing="normal">
            <li>
              <t>Objects with flags=0x01 (partial) represent tokens generated so far.
A subscriber <bcp14>MAY</bcp14> render them immediately for real-time display but
<bcp14>MUST</bcp14> be prepared for them to be superseded.</t>
            </li>
            <li>
              <t>An Object with flags=0x02 (final) indicates the inference step is
complete. The subscriber <bcp14>SHOULD</bcp14> treat the concatenation of all
Objects in the Subgroup as the definitive output.</t>
            </li>
            <li>
              <t>An Object with flags=0x04 (cancelled) indicates the inference step
was interrupted (e.g., by barge-in). The subscriber <bcp14>SHOULD</bcp14> discard
or visually mark the incomplete output.</t>
            </li>
          </ul>
        </section>
        <section anchor="group-lifecycle">
          <name>Group Lifecycle</name>
          <t>A new Group is created when:</t>
          <ul spacing="normal">
            <li>
              <t>The agent begins responding to a new user turn.</t>
            </li>
            <li>
              <t>The turn counter increments (see <xref target="turn-state-machine"/>).</t>
            </li>
          </ul>
          <t>The Group is closed (LARGEST_OBJECT property set) when:</t>
          <ul spacing="normal">
            <li>
              <t>The agent completes its full response for this turn.</t>
            </li>
            <li>
              <t>The agent is interrupted by barge-in (final Object has cancelled flag).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="audio-output">
        <name>Agent Audio Output Track</name>
        <t>The agent audio output track carries TTS-synthesized audio. Audio
payloads <bcp14>SHOULD</bcp14> use the LOC container format <xref target="LOC"/> for encoding.</t>
        <section anchor="object-structure-1">
          <name>Object Structure</name>
          <t>Each Object carries one audio segment (typically 20-60ms of audio).
The LOC header provides codec identification and timing. This document
adds an optional extension header for text alignment:</t>
          <figure anchor="fig-audio-object">
            <name>Audio Output Object Format</name>
            <artwork><![CDATA[
Audio Output Object Payload:
+------------------+--------+--------------------------------------+
| Field            | Type   | Description                          |
+------------------+--------+--------------------------------------+
| loc_header       | LOC    | Standard LOC audio header            |
| audio_data       | bytes  | Encoded audio samples                |
| align_seq (opt)  | varint | Corresponding text object seq number |
| align_offset(opt)| varint | Character offset within text object  |
+------------------+--------+--------------------------------------+
]]></artwork>
          </figure>
          <t>The optional alignment fields enable the subscriber to synchronize
text highlighting with audio playback (e.g., karaoke-style display).</t>
        </section>
        <section anchor="subgroup-semantics-for-audio">
          <name>Subgroup Semantics for Audio</name>
          <t>Each Subgroup in the audio track corresponds to one utterance or
sentence boundary in the agent's response. This enables:</t>
          <ul spacing="normal">
            <li>
              <t>Dropping a complete sentence if delivery is too late
(SUBGROUP_DELIVERY_TIMEOUT).</t>
            </li>
            <li>
              <t>Rendering audio sentence-by-sentence with natural pauses.</t>
            </li>
            <li>
              <t>Aligning with text Subgroups at sentence granularity.</t>
            </li>
          </ul>
        </section>
        <section anchor="cross-track-sync">
          <name>Cross-Track Synchronization</name>
          <t>The agent text track and agent audio track use the same Group ID for
the same conversational turn. Within a turn:</t>
          <ul spacing="normal">
            <li>
              <t>Text Subgroup N corresponds to Audio Subgroup N (same sentence).</t>
            </li>
            <li>
              <t>The <tt>align_seq</tt> field in audio Objects references the text Object
sequence number being spoken at that audio moment.</t>
            </li>
          </ul>
          <t>This enables a subscriber receiving both tracks to:</t>
          <ul spacing="normal">
            <li>
              <t>Display text as it arrives (lower latency than audio).</t>
            </li>
            <li>
              <t>Highlight the currently-spoken text segment during audio playback.</t>
            </li>
            <li>
              <t>Fall back to text-only if audio delivery times out.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="audio-input">
        <name>User Audio Input Track</name>
        <t>The user publishes a continuous audio input track.</t>
        <section anchor="object-structure-2">
          <name>Object Structure</name>
          <t>Each Object carries a fixed-duration audio frame (typically 20ms)
using the LOC container format.</t>
        </section>
        <section anchor="group-semantics">
          <name>Group Semantics</name>
          <t>Groups in the user audio track are segmented by voice activity:</t>
          <ul spacing="normal">
            <li>
              <t>A new Group begins when the user starts speaking (VAD trigger).</t>
            </li>
            <li>
              <t>The Group ends when the user stops speaking (silence detection).</t>
            </li>
          </ul>
          <t>This enables the agent backend to:</t>
          <ul spacing="normal">
            <li>
              <t>Subscribe starting from the latest Group (skip silence gaps).</t>
            </li>
            <li>
              <t>Process each utterance as a unit.</t>
            </li>
            <li>
              <t>Implement endpoint detection without additional signaling.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="tool-output">
        <name>Tool Output Track</name>
        <t>The agent <bcp14>MAY</bcp14> publish a tool output track for structured results from
tool/function calls.</t>
        <section anchor="object-structure-3">
          <name>Object Structure</name>
          <figure anchor="fig-tool-object">
            <name>Tool Output Object Format</name>
            <artwork><![CDATA[
Tool Output Object Payload:
+-----------+--------+------------------------------------------+
| Field     | Type   | Description                              |
+-----------+--------+------------------------------------------+
| flags     | uint8  | 0x01=invocation, 0x02=result, 0x04=error |
| tool_id   | varint | Tool/function identifier                 |
| call_id   | varint | Unique call instance identifier          |
| payload   | bytes  | JSON-encoded tool call or result         |
+-----------+--------+------------------------------------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="delivery-requirements">
          <name>Delivery Requirements</name>
          <t>Tool outputs <bcp14>MUST</bcp14> be delivered reliably (no delivery timeout). Tool
invocation and result Objects are always flagged final (0x02). The
subscriber <bcp14>MUST NOT</bcp14> discard tool results due to lateness.</t>
        </section>
      </section>
    </section>
    <section anchor="turn-control">
      <name>Turn Control Protocol</name>
      <t>This section defines the control protocol for managing conversational
turns between the user and agent.</t>
      <section anchor="turn-state-machine">
        <name>Turn State Machine</name>
        <t>A live agent session maintains the following turn states:</t>
        <figure anchor="fig-state-machine">
          <name>Turn State Machine</name>
          <artwork><![CDATA[
                    speech_start
         +--------+----------->+---------+
         |  IDLE  |            |  USER   |
         |        |<-----------+ SPEAKING|
         +---+----+ speech_end +----+----+
             ^                      |
             |                      | (agent begins inference)
             |                      v
             |               +------+------+
             | turn_complete |   AGENT     |
             +--------------+  PROCESSING |
             |               +------+------+
             |                      |
             |                      | (first output produced)
             |                      v
             |               +------+------+
             | turn_complete |   AGENT     |<---+
             +--------------+  SPEAKING   |    | (output continues)
                             +------+------+----+
                                    |
                    barge_in        |
                  +--------+       |
                  |  USER  |<------+
                  |SPEAKING|
                  +--------+
]]></artwork>
        </figure>
        <t>State transitions:</t>
        <ul spacing="normal">
          <li>
            <t><strong>IDLE → USER_SPEAKING</strong>: User audio VAD detects speech onset.</t>
          </li>
          <li>
            <t><strong>USER_SPEAKING → AGENT_PROCESSING</strong>: User speech ends (silence
timeout or explicit end-of-turn signal).</t>
          </li>
          <li>
            <t><strong>AGENT_PROCESSING → AGENT_SPEAKING</strong>: Agent produces first output
Object in any output track.</t>
          </li>
          <li>
            <t><strong>AGENT_SPEAKING → IDLE</strong>: Agent completes response (closes Group
in all output tracks).</t>
          </li>
          <li>
            <t><strong>AGENT_SPEAKING → USER_SPEAKING</strong>: Barge-in event (user starts
speaking while agent is outputting).</t>
          </li>
        </ul>
      </section>
      <section anchor="control-track">
        <name>Control Track</name>
        <t>Turn control signals are exchanged on a dedicated bidirectional control
track pair (one per direction). Control Objects use the following format:</t>
        <figure anchor="fig-control-object">
          <name>Control Signal Format</name>
          <artwork><![CDATA[
Control Object Payload:
+-----------+--------+------------------------------------------+
| Field     | Type   | Description                              |
+-----------+--------+------------------------------------------+
| signal    | varint | Signal type (see below)                  |
| turn_id   | varint | Current turn Group ID                    |
| timestamp | varint | Sender wall-clock time (ms since epoch)  |
| payload   | bytes  | Signal-specific data (may be empty)      |
+-----------+--------+------------------------------------------+

Signal Types:
  0x01 = SPEECH_START     (user → agent)
  0x02 = SPEECH_END       (user → agent)
  0x03 = BARGE_IN         (user → agent)
  0x04 = TURN_STARTED     (agent → user)
  0x05 = TURN_COMPLETE    (agent → user)
  0x06 = INTERRUPT_ACK    (agent → user)
  0x07 = THINKING         (agent → user)
]]></artwork>
        </figure>
      </section>
      <section anchor="barge-in">
        <name>Barge-in Handling</name>
        <t>Barge-in is the critical interaction where a user interrupts the agent's
ongoing output. The protocol defines the following sequence:</t>
        <figure anchor="fig-barge-in">
          <name>Barge-in Sequence</name>
          <artwork><![CDATA[
User Device                                  Agent Backend
     |                                            |
     |  [user starts speaking over agent output]  |
     |                                            |
     |-- Control: BARGE_IN (turn_id=N) ---------> |
     |          (via Datagram, highest priority)   |
     |                                            |
     |       [agent stops TTS, notes position]    |
     |                                            |
     |<- Control: INTERRUPT_ACK (turn_id=N) ----- |
     |     payload: {interrupted_group: N,        |
     |              interrupted_subgroup: M,      |
     |              interrupted_object: K}        |
     |                                            |
     |  [agent closes Group N with cancelled flag]|
     |                                            |
     |<- Text Object: flags=cancelled ----------- |
     |<- Audio: subgroup FIN -------------------- |
     |                                            |
     |  [agent begins processing new user input]  |
     |                                            |
]]></artwork>
        </figure>
        <section anchor="barge-in-signal-delivery">
          <name>Barge-in Signal Delivery</name>
          <t>The BARGE_IN signal has the following delivery requirements:</t>
          <ul spacing="normal">
            <li>
              <t><bcp14>MUST</bcp14> be sent via MOQT Datagram for minimum latency.</t>
            </li>
            <li>
              <t><bcp14>MUST</bcp14> be assigned the highest publisher priority (0x00).</t>
            </li>
            <li>
              <t><bcp14>SHOULD</bcp14> be sent immediately upon local VAD detection, without
waiting for speech_end.</t>
            </li>
            <li>
              <t>The agent <bcp14>MUST</bcp14> process BARGE_IN within one processing cycle
(target: &lt; 50ms from receipt to output cessation).</t>
            </li>
          </ul>
        </section>
        <section anchor="agent-interrupt-behavior">
          <name>Agent Interrupt Behavior</name>
          <t>Upon receiving BARGE_IN, the agent <bcp14>MUST</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Cease generating new output Objects for the current turn.</t>
            </li>
            <li>
              <t>Close the current output Group with a cancelled Object
(flags=0x04 in text track, stream FIN in audio track).</t>
            </li>
            <li>
              <t>Send INTERRUPT_ACK with the position where output stopped.</t>
            </li>
            <li>
              <t>Transition to processing the new user input.</t>
            </li>
          </ol>
          <t>The agent <bcp14>SHOULD NOT</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Abruptly truncate mid-audio-frame (finish current audio Object).</t>
            </li>
            <li>
              <t>Discard context from the interrupted response (the agent has it
in its context window for the next turn).</t>
            </li>
          </ul>
        </section>
        <section anchor="client-interrupt-behavior">
          <name>Client Interrupt Behavior</name>
          <t>Upon sending BARGE_IN, the client <bcp14>SHOULD</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Immediately stop audio playback of the agent's output.</t>
            </li>
            <li>
              <t>Visually indicate the response was interrupted (e.g., fade text).</t>
            </li>
            <li>
              <t>Begin capturing and publishing user audio for the new turn.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="vad">
        <name>VAD Integration</name>
        <t>Speech activity detection events drive the turn state machine. This
document does not mandate a specific detection algorithm (traditional
energy-based VAD, neural VAD, or other approaches) but defines the
signaling semantics:</t>
        <ul spacing="normal">
          <li>
            <t><strong>SPEECH_START</strong>: Published when the implementation determines that
the user has begun speaking.</t>
          </li>
          <li>
            <t><strong>SPEECH_END</strong>: Published when the implementation determines that
the user has finished speaking.</t>
          </li>
          <li>
            <t><strong>BARGE_IN</strong>: Published when SPEECH_START occurs during
AGENT_SPEAKING state. This is a composite signal (implies
SPEECH_START + interrupt request).</t>
          </li>
        </ul>
        <t>VAD signals are sent on the user→agent control track. Implementations
<bcp14>MAY</bcp14> perform VAD on the client, on the relay, or on the agent backend.
When VAD is performed on the client, it <bcp14>SHOULD</bcp14> be sent as Datagram for
lowest latency.</t>
      </section>
      <section anchor="priority">
        <name>Priority Assignment</name>
        <t>The following priority assignments are <bcp14>RECOMMENDED</bcp14> for live agent
sessions (lower numeric value = higher priority):</t>
        <table anchor="tab-priority">
          <name>Recommended Priority Assignment</name>
          <thead>
            <tr>
              <th align="left">Track/Signal</th>
              <th align="left">Priority</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Control signals (BARGE_IN)</td>
              <td align="left">0x00</td>
              <td align="left">Must preempt all other traffic</td>
            </tr>
            <tr>
              <td align="left">Control signals (other)</td>
              <td align="left">0x01</td>
              <td align="left">Turn management is time-critical</td>
            </tr>
            <tr>
              <td align="left">User audio input</td>
              <td align="left">0x02</td>
              <td align="left">Agent cannot process without input</td>
            </tr>
            <tr>
              <td align="left">Agent audio output</td>
              <td align="left">0x03</td>
              <td align="left">Primary user-perceived output</td>
            </tr>
            <tr>
              <td align="left">Agent text output</td>
              <td align="left">0x04</td>
              <td align="left">Secondary output (lower bandwidth)</td>
            </tr>
            <tr>
              <td align="left">Tool results</td>
              <td align="left">0x05</td>
              <td align="left">Non-time-critical structured data</td>
            </tr>
          </tbody>
        </table>
        <t>Within agent output tracks, GROUP_ORDER <bcp14>SHOULD</bcp14> be set to descending
(deliver newest group first) so that relay congestion drops stale
turns rather than current ones.</t>
      </section>
    </section>
    <section anchor="track-structure">
      <name>Track Structure and Naming</name>
      <section anchor="namespace">
        <name>Namespace Convention</name>
        <t>A live agent session uses the following namespace structure:</t>
        <artwork><![CDATA[
Track Namespace: moqt://{authority}/agent/{session-id}/
]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>{authority}</tt> is the domain of the agent service.</t>
          </li>
          <li>
            <t><tt>{session-id}</tt> is a unique session identifier (<bcp14>RECOMMENDED</bcp14>: UUIDv7).</t>
          </li>
        </ul>
      </section>
      <section anchor="track-names">
        <name>Track Names</name>
        <t>The following track names are defined within a session namespace:</t>
        <table anchor="tab-tracks">
          <name>Standard Track Names</name>
          <thead>
            <tr>
              <th align="left">Track Name</th>
              <th align="left">Direction</th>
              <th align="left">Content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">input/audio</td>
              <td align="left">User → Agent</td>
              <td align="left">User microphone audio (LOC)</td>
            </tr>
            <tr>
              <td align="left">input/text</td>
              <td align="left">User → Agent</td>
              <td align="left">User text messages</td>
            </tr>
            <tr>
              <td align="left">output/audio</td>
              <td align="left">Agent → User</td>
              <td align="left">TTS synthesized audio (LOC)</td>
            </tr>
            <tr>
              <td align="left">output/text</td>
              <td align="left">Agent → User</td>
              <td align="left">Streaming LLM text tokens</td>
            </tr>
            <tr>
              <td align="left">output/tool</td>
              <td align="left">Agent → User</td>
              <td align="left">Tool invocations and results</td>
            </tr>
            <tr>
              <td align="left">control/user</td>
              <td align="left">User → Agent</td>
              <td align="left">User control signals</td>
            </tr>
            <tr>
              <td align="left">control/agent</td>
              <td align="left">Agent → User</td>
              <td align="left">Agent control signals</td>
            </tr>
          </tbody>
        </table>
        <t>Additional tracks <bcp14>MAY</bcp14> be defined for:</t>
        <ul spacing="normal">
          <li>
            <t><tt>input/video</tt>: User camera input.</t>
          </li>
          <li>
            <t><tt>output/video</tt>: Agent avatar or visual output.</t>
          </li>
          <li>
            <t><tt>meta/catalog</tt>: Session catalog in MSF format <xref target="MSF"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="catalog">
        <name>Catalog Integration</name>
        <t>A live agent session <bcp14>SHOULD</bcp14> publish a catalog track conforming to the
MOQT Streaming Format <xref target="MSF"/>. The catalog declares:</t>
        <ul spacing="normal">
          <li>
            <t>Available tracks and their codec parameters.</t>
          </li>
          <li>
            <t>Agent capabilities (supported input modalities, languages).</t>
          </li>
          <li>
            <t>Session metadata (model identifier, context window size).</t>
          </li>
        </ul>
        <t>The catalog enables late-joining subscribers and relay-assisted
discovery of session characteristics.</t>
      </section>
    </section>
    <section anchor="delivery-policies">
      <name>Delivery Policies</name>
      <section anchor="transport-selection">
        <name>Datagram vs Stream Selection</name>
        <table anchor="tab-transport">
          <name>Transport Selection Guidelines</name>
          <thead>
            <tr>
              <th align="left">Track</th>
              <th align="left">Default Transport</th>
              <th align="left">Fallback</th>
              <th align="left">Condition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">control/* (BARGE_IN)</td>
              <td align="left">Datagram</td>
              <td align="left">Stream</td>
              <td align="left">Signal &lt; MTU</td>
            </tr>
            <tr>
              <td align="left">control/* (other)</td>
              <td align="left">Stream</td>
              <td align="left">—</td>
              <td align="left">Reliable delivery needed</td>
            </tr>
            <tr>
              <td align="left">input/audio</td>
              <td align="left">Stream</td>
              <td align="left">Datagram</td>
              <td align="left">If partial reliability desired</td>
            </tr>
            <tr>
              <td align="left">output/audio</td>
              <td align="left">Stream</td>
              <td align="left">Datagram</td>
              <td align="left">For loss-tolerant low-latency</td>
            </tr>
            <tr>
              <td align="left">output/text</td>
              <td align="left">Stream</td>
              <td align="left">—</td>
              <td align="left">Must be reliable</td>
            </tr>
            <tr>
              <td align="left">output/tool</td>
              <td align="left">Stream</td>
              <td align="left">—</td>
              <td align="left">Must be reliable</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="relay">
      <name>Relay Considerations</name>
      <section anchor="relay-transparency">
        <name>Relay Transparency</name>
        <t>This protocol is designed to operate through standard MOQT relays
without relay modification. Relays treat live agent traffic as normal
MOQT objects with the following beneficial behaviors:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Priority-based scheduling</strong>: Relays respect publisher priority,
ensuring control signals and user audio are forwarded first under
congestion.</t>
          </li>
          <li>
            <t><strong>Timeout-based expiry</strong>: Relays discard Objects that exceed their
delivery timeout, preventing stale audio from consuming bandwidth.</t>
          </li>
          <li>
            <t><strong>Group-order delivery</strong>: With descending group order, relays under
congestion naturally shed older turns.</t>
          </li>
        </ul>
      </section>
      <section anchor="caching">
        <name>Caching Behavior</name>
        <t>Relays <bcp14>MAY</bcp14> cache agent output Objects for the duration specified by
the MAX_CACHE_DURATION track property. This enables:</t>
        <ul spacing="normal">
          <li>
            <t>Late-joining clients to receive the current turn's output.</t>
          </li>
          <li>
            <t>Reconnecting clients to resume from where they left off.</t>
          </li>
        </ul>
        <t>Relays <bcp14>SHOULD NOT</bcp14> cache:</t>
        <ul spacing="normal">
          <li>
            <t>Control track Objects (they are ephemeral state transitions).</t>
          </li>
          <li>
            <t>User audio input (privacy-sensitive, single-consumer).</t>
          </li>
        </ul>
      </section>
      <section anchor="multi-subscriber">
        <name>Multi-Subscriber Scenarios</name>
        <t>A single agent session <bcp14>MAY</bcp14> have multiple subscribers to output tracks
(e.g., accessibility tools, monitoring, recording). The relay
naturally fans out agent output to all subscribers without additional
agent-side overhead.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="authentication-and-authorization">
        <name>Authentication and Authorization</name>
        <t>Live agent sessions <bcp14>MUST</bcp14> authenticate both the user and agent
endpoints. The MOQT AUTHORIZATION_TOKEN parameter (<xref section="10.2.2" sectionFormat="of" target="MOQT"/>) <bcp14>SHOULD</bcp14> be used for per-track authorization.</t>
        <t>User audio input tracks contain sensitive biometric data and <bcp14>MUST</bcp14> be
restricted to the intended agent subscriber. Relays <bcp14>MUST</bcp14> enforce
subscription authorization for input tracks.</t>
      </section>
      <section anchor="end-to-end-encryption">
        <name>End-to-End Encryption</name>
        <t>For deployments where relay operators are not fully trusted, agent
output tracks <bcp14>MAY</bcp14> use end-to-end encryption as defined in
<xref target="SECURE-OBJECTS"/>. Control tracks <bcp14>SHOULD NOT</bcp14> be E2E encrypted as
relay-level inspection may be needed for priority enforcement.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <ul spacing="normal">
          <li>
            <t>User audio <bcp14>MUST NOT</bcp14> be cached by relays beyond the immediate
delivery requirement.</t>
          </li>
          <li>
            <t>Session IDs <bcp14>MUST</bcp14> be cryptographically random (UUIDv7 with random
component) to prevent session correlation attacks.</t>
          </li>
          <li>
            <t>Control signals (VAD events, barge-in) leak interaction timing
metadata. Implementations <bcp14>MAY</bcp14> add padding to control track Objects
to mitigate traffic analysis.</t>
          </li>
        </ul>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <ul spacing="normal">
          <li>
            <t>Barge-in signals are high-priority and processed immediately.
Implementations <bcp14>MUST</bcp14> rate-limit barge-in signals per session
(<bcp14>RECOMMENDED</bcp14>: maximum 10 per second) to prevent priority inversion
attacks.</t>
          </li>
          <li>
            <t>Relays <bcp14>SHOULD</bcp14> enforce per-session bandwidth quotas to prevent a
single agent session from starving other traffic.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="moqt-track-property-registrations">
        <name>MOQT Track Property Registrations</name>
        <t>This document registers the following track properties in the "MOQT
Track Properties" registry:</t>
        <table anchor="tab-properties">
          <name>Track Property Registrations</name>
          <thead>
            <tr>
              <th align="left">Property Name</th>
              <th align="left">Property ID</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AGENT_SESSION_ROLE</td>
              <td align="left">TBD</td>
              <td align="left">varint</td>
              <td align="left">0=user, 1=agent</td>
            </tr>
            <tr>
              <td align="left">TURN_GROUP_ORDER</td>
              <td align="left">TBD</td>
              <td align="left">varint</td>
              <td align="left">Confirms Group=Turn mapping</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="control-signal-type-registry">
        <name>Control Signal Type Registry</name>
        <t>IANA is requested to create a "Live Agent Control Signal Types"
registry under the "Media over QUIC (MoQ)" group. The registration
procedure is Specification Required.</t>
        <t>Initial registrations:</t>
        <table anchor="tab-signals">
          <name>Control Signal Type Registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Signal Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x01</td>
              <td align="left">SPEECH_START</td>
              <td align="left">
                <xref target="vad"/></td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">SPEECH_END</td>
              <td align="left">
                <xref target="vad"/></td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">BARGE_IN</td>
              <td align="left">
                <xref target="barge-in"/></td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">TURN_STARTED</td>
              <td align="left">
                <xref target="turn-state-machine"/></td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">TURN_COMPLETE</td>
              <td align="left">
                <xref target="turn-state-machine"/></td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">INTERRUPT_ACK</td>
              <td align="left">
                <xref target="barge-in"/></td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">THINKING</td>
              <td align="left">
                <xref target="control-track"/></td>
            </tr>
          </tbody>
        </table>
        <t>Values 0x08-0xFF are available for assignment.</t>
      </section>
      <section anchor="object-payload-flags-registry">
        <name>Object Payload Flags Registry</name>
        <t>IANA is requested to create a "Live Agent Object Flags" registry.</t>
        <t>Initial registrations:</t>
        <table anchor="tab-flags">
          <name>Object Flags Registry</name>
          <thead>
            <tr>
              <th align="left">Bit</th>
              <th align="left">Flag Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">PARTIAL</td>
              <td align="left">Object is intermediate, may be superseded</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">FINAL</td>
              <td align="left">Object is definitive</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">CANCELLED</td>
              <td align="left">Object indicates interruption</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MOQT">
          <front>
            <title>Media over QUIC Transport</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="12" month="May" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-18"/>
        </reference>
        <reference anchor="LOC">
          <front>
            <title>Low Overhead Media Container</title>
            <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
              <organization>Microsoft</organization>
            </author>
            <date day="15" month="March" year="2026"/>
            <abstract>
              <t>   This specification describes a Low Overhead Media Container (LOC)
   format for encoded and encrypted audio and video media data to be
   used primarily for interactive Media over QUIC Transport (MOQT).  It
   may be used in the MOQT Streaming Format (MSF) specification, which
   defines a catalog format for publishers to declare and describe their
   LOC tracks and for subscribers to consume them.  Examples are also
   provided for building media applications using LOC and MOQT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-02"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MSF">
          <front>
            <title>MOQT Streaming Format</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the MOQT Streaming Format, designed to
   operate on Media Over QUIC Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-01"/>
        </reference>
        <reference anchor="SECURE-OBJECTS">
          <front>
            <title>End-to-End Secure Objects for Media over QUIC Transport</title>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies an end-to-end authenticated encryption scheme
   for application objects transmitted via Media over QUIC (MoQ)
   Transport.  The scheme enables original publishers that share a
   symmetric key with end subscribers, to ensuring that MoQ relays are
   unable to decrypt object contents.  Additionally, subscribers can
   verify the integrity and authenticity of received objects, confirming
   that the content has not been modified in transit.  Additionally it
   allows MoQ parameters to be protected so the publisher can select if
   they are readable and/or modifiable by relays.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-secure-objects-00"/>
        </reference>
        <reference anchor="A2A">
          <front>
            <title>Agent Protocol over MoQ</title>
            <author fullname="Dapeng Liu" initials="D." surname="Liu">
              <organization>Alibaba Cloud</organization>
            </author>
            <author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies a Agent-to-Agent communication framework
   enabling structured, low-latency, and semantically rich communication
   between autonomous agents over the Media over QUIC (MoQ) protocol.
   It leverages MoQ's efficient media transport capabilities while
   introducing a new application-layer framing mechanism to support
   control signaling, session management, and large data fragmentation.
   The design supports both intra-domain and inter-domain deployment,
   with an emphasis on interoperability, extensibility, and minimal
   overhead.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-agent-protocol-over-moq-00"/>
        </reference>
      </references>
    </references>
    <?line 985?>

<section anchor="examples">
      <name>Interaction Examples</name>
      <section anchor="basic-voice-conversation-turn">
        <name>Basic Voice Conversation Turn</name>
        <figure anchor="fig-basic-turn">
          <name>Basic Voice Turn Example</name>
          <artwork><![CDATA[
Time  User Device              Relay          Agent Backend
 |
 |    [User speaks: "What's the weather?"]
 |
 t0   PUBLISH input/audio Group=1 ------>-----> ASR processes
 t0   Control: SPEECH_START ----------->------>
 |
 t1   [User stops speaking]
 t1   Control: SPEECH_END ------------->------>
 |                                              LLM generates response
 t2                            <------<------- Control: TURN_STARTED
 t2                            <------<------- PUBLISH output/text
 |                                              Group=1, Subgroup=0
 |                                              Object 0: "The weather"
 |                                              Object 1: " in Hangzhou"
 |                                              Object 2: " is sunny,"
 t3                            <------<------- PUBLISH output/audio
 |                                              Group=1, Subgroup=0
 |                                              [TTS: "The weather in
 |                                               Hangzhou is sunny,"]
 |
 t4                            <------<------- Object (text, final):
 |                                              " 28°C today."
 t4                            <------<------- Control: TURN_COMPLETE
]]></artwork>
        </figure>
      </section>
      <section anchor="barge-in-during-agent-response">
        <name>Barge-in During Agent Response</name>
        <figure anchor="fig-barge-in-example">
          <name>Barge-in Example</name>
          <artwork><![CDATA[
Time  User Device              Relay          Agent Backend
 |
 |    [Agent is speaking: "The weather forecast shows..."]
 |    [Agent output: Group=1, currently at Subgroup=2]
 |
 t0   [User interrupts: "Stop, just tell me temperature"]
 t0   Control: BARGE_IN (turn=1) ----->------> received
 |
 t1                                            [stops TTS generation]
 t1                            <------<------- Control: INTERRUPT_ACK
 |                                              {interrupted: G=1,SG=2,O=5}
 t1                            <------<------- Text Object(cancelled)
 t1                            <------<------- Audio subgroup FIN
 |
 t2   PUBLISH input/audio Group=2 ---->------> ASR: "just tell me temp"
 t2   Control: SPEECH_START ---------->------>
 |
 t3   Control: SPEECH_END ------------>------>
 |                                              LLM: context includes
 |                                              interrupted response
 t4                            <------<------- Control: TURN_STARTED
 t4                            <------<------- Text Group=2: "It's 28°C."
 t4                            <------<------- Audio Group=2: [TTS]
 t5                            <------<------- Control: TURN_COMPLETE
]]></artwork>
        </figure>
      </section>
      <section anchor="concurrent-text-and-audio-delivery">
        <name>Concurrent Text and Audio Delivery</name>
        <figure anchor="fig-sync-example">
          <name>Cross-Track Synchronization Example</name>
          <artwork><![CDATA[
Time  Subscriber View (User Device)
 |
 t0   [Subscribe to output/text AND output/audio, same Group ID]
 |
 t1   Text Object arrives: "The answer is"     → render immediately
 t2   Text Object arrives: " forty-two."       → append to display
 |
 t3   Audio Object arrives: [TTS "The answer"] → begin playback
 |    Text highlighting: "The answer" underlined (via align_seq)
 |
 t4   Audio Object arrives: [TTS "is forty"]   → continue playback
 |    Text highlighting advances: "is forty"
 |
 t5   Audio Object arrives: [TTS "-two."]      → finish playback
 |    Text highlighting: "-two."
 |
 |    [Text arrived ~200ms before audio — user saw text first,
 |     then heard it spoken, with synchronized highlighting]
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="rationale">
      <name>Design Rationale</name>
      <section anchor="why-not-a-custom-frame-layer">
        <name>Why Not a Custom Frame Layer</name>
        <t>This document maps directly to the native MOQT object model rather
than introducing a custom frame layer because:</t>
        <ul spacing="normal">
          <li>
            <t>MOQT Groups/Subgroups already provide the sequencing and
boundaries needed for turns and inference steps.</t>
          </li>
          <li>
            <t>MOQT delivery timeouts and priorities operate at the Object level,
which is the right granularity for inference delivery.</t>
          </li>
          <li>
            <t>Standard MOQT relays can handle live agent traffic without
modification or frame parsing.</t>
          </li>
          <li>
            <t>Reusing the object model means existing MOQT tooling (monitoring,
debugging, relay management) works unchanged.</t>
          </li>
        </ul>
      </section>
      <section anchor="why-group-turn">
        <name>Why Group = Turn</name>
        <t>Alternatives considered:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Group = entire session</strong>: Loses the ability to discard stale
turns and prevents Group-level priority ordering.</t>
          </li>
          <li>
            <t><strong>Group = single inference step</strong>: Too fine-grained; creates
excessive Group metadata overhead and prevents turn-level
operations.</t>
          </li>
          <li>
            <t><strong>Group = time window (e.g., 1 second)</strong>: Arbitrary boundary that
doesn't align with application semantics; complicates barge-in.</t>
          </li>
        </ul>
        <t>Group = Turn provides the natural boundary for:
- What to discard when interrupted (the current turn).
- What to prioritize (the latest turn).
- What to cache for late-joiners (the most recent complete turn).</t>
      </section>
      <section anchor="why-separate-control-track">
        <name>Why Separate Control Track</name>
        <t>Embedding control signals in-band with media or text Objects was
considered but rejected because:</t>
        <ul spacing="normal">
          <li>
            <t>Control signals require different delivery characteristics (Datagram,
highest priority, reliable).</t>
          </li>
          <li>
            <t>Relays can apply priority to entire tracks but not to individual
Objects within a track.</t>
          </li>
          <li>
            <t>Subscribers may want control-only subscription (e.g., turn status
for UI state management without receiving media).</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="ack">
      <name>Acknowledgements</name>
      <t>The authors would like to thank the participants of the MoQ working
group for their contributions to the underlying transport protocol
that makes this work possible.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA919y3IjV5bYPr/imrVoQAWgWJTUraZUaqP4UHGaRVIEKLlH
US4lgAswuxKZ6MwEWWiyOrzxxKwdXnjp8MJr/4A38ykTMf4On9d9ZSZYD2li
IoaLKhLIvI9zz/t1+/1+VCVVqvfVaXKj1XChs0qdZJUu4mmV5JnKb3ShXubf
R/FkUuib4Dn73SyfZvESBpkV8bzqp8m6v8z/Av/f6H6Mj/YTN2R/dzeaxRU8
fXc4HB+9i6bwxyIvNvuqrGZRWRU6Xu6rk6PxcRQlq2JfVcW6rPZ2d3+/uxfF
8O2+2vlRT1SczXipma7UuIizcpUX1U50mxdvFkW+Xu2rl3qWxOoc1/n91clB
9EZv4NvZvn2vf4grjmBWGO11nOYZrGujy2iV7KufqnzaUyUMWuh5Cb9tlvjL
qyiK19V1XuxH/UipJCv31Z8GAJg1/DVfpynBAn5Xah+W+i//+D/+5f/+7//3
v/7rDn0Ul9MExt75U5wtdYJv4ed5sdhXwzSZxJMYFjcdwGd6GSfpvlomcf7n
ZJBulv8x5gcAmtPBNF+66Q/N9HwMh/FKZwv5KBj6IM3XM2/s+O0gna0aA0dZ
XizjCs4P9/Hy/PsxgKx/OEh0NaejrQy44evT84Pat2k+hc8R4vvq8vjg97tw
5FGSzYNBR8e1t5blHD4fHR1cXR71z5//3dHBeFR7pNTTdaH7+eTPelqV8PRw
b8iPIM4xqq2KHM4tT/uInvhWFPX7fRVPALMAA6NofJ2UClB2vUQknul5kulS
xcq8qGCdCtAs7VfJUiuLuoD3AJvlOksAYwGRo4mubrXO1LrURUnoODxRtIhS
aIPQLzfo55BUdRCm3UF0UqlypafJPIElXOe3itE/gdMDeOlCZ1Ot8nW1WsOY
neHoUhHkp0WyqgAjT09fqip/o7OyF43HIxWvZ0nehWNdwcequtZ0dorhpZb5
TKc9b8fVusj6VfwGp5vmWVXkaWShcJtU12oSFwsNaKHK9YoWjrC5yZOpB5cc
Zqfda6CiSZqU10A/COs3uJv1FGZByGU3ABh8mMZA3sCwUqUuS/x8oMawYDt/
voLhKxgqRtiqeLVKBfD9NN4ASOHJeZICeDLY7Erlc94srhsghrtN5hvcmkPW
EvAeFjEtB4wUy2Q2S3UUPUKGUOSzNW0nik5x2+o0zhZrWCPwOAAcwB/AXXZp
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
90GKQftSfocjm1xFfCTMUH7n4Z7hdO3ZiQFWIeLRoZQ4x1f93bfHx1zUZN1d
dE2fDXEwJw/TjdUxlcF9Cqaaai4cwPGKB3HoObXMwzes/9tnGC3Y1O78bsUr
5Elw0ifDU2Xb9pluIyJ2ei3N/e/Dbhh0ZoigxydntZG8DjVtLyHOHgzPDo5O
TwnbbAK+6U3j347eMoJBAS5MDJsChqdELhXYNsVvSYJ4moF3J4Bp22+yWUsQ
6z9QSW/jFlOJ32AetNqaTFpr01/LI72PONPsJ1MHEb8p99XOj9cx5ncgy7rV
FNT6w84rerrahacvrp6fnoxeBJ405s5PJXnuW/6XrlcwqkQpb9uUyICdeFjy
rfzHEz51ywvqjF/Jd/XhkPcEEswb7mOS6hRFM0w3KFdQAdPuPfSWFNOYAja3
Pp+xfewgBuKex/CjtyMn5N38tfvRYwhq7wKOjB1y7HzqOE9hHMW52ou/gvH8
yQPt0UDYpDjLNj0Ypvr8obfeA17C6H8T+P40Ho9C2FI7u48cxcLTA4mQ7xcP
vVYHiwC3wy1kuevY/kevZkftffVP/+cAZNIs3gx2PnYRIf0YOV/LeAUuyTVZ
NufV8U3SGIXD1osEDtkdy1zx0lD4r8hXh/ZqHGFbtdMFaa+n2D0Pb48qB4MB
HZT3KqPkvsMu22cD24BYVNvz2DNzS1e3AFOOgHX21J8xQACGHN5tCf8vyS0B
2iXOGbLmMGX/2VPJUjes1HYKdCz6g39+svn2NjU1z169b5StWBHoch+Nm35+
PcAY4Dv67tle7/zZl+8+dkVe9rnX5u5jR+GOJn46OoMYpcV2sbungtMBqQtn
3jjtHRnnfQI4lL+ft7xRl7G/RMTu28hqkk3T9Qz1hI8cpS2t9pexGSemP2oQ
wgE5EjiBE1SiiPl9PNsb+se7T4IBieTLT9/TFtbJnLBv+tPXiwZCxon9bSVu
QXtlhzSu1BUPOObpufx/SPSt6njctOvxK9f1xXrxOSg6BDzzZXIvbPD0yrEf
j/pM9yLhtHFWYq5aAvYO/mD+h3Tv9DxbQhntoyCTrjb96jYf7AikqbRuteLO
NaahmKOXoZcR7gbCM/TXtPOKxqGiEJtjLcg/rrc3C3azwz6FlPy/VCxl2011
nZx/aBVJybvaeSW7MdXs712Iimc3yN4QMnYUnvTL90zKIHzlQCiJ9B+wd37V
E6yMfjT+TP1tb3eX7mpAcSqeZoyJc6lbfMtJSRRH7RnugtERbPdX4H0S0lmL
i0L8PnOzYCGvwjp3eKxONw81OfNIKbKXybvE1btHhfmdie3H6w3fuawOgJXn
S3VM5QeneFdI3X24jFfNu1ky7xJ5qaDkvBZOVIwaF8DHoF3QTFzowLeSTDRe
3sdRRHdrYfnE6/uWFjqebUwzS+7ExsVGksiPtzK69sdeOIETJ/k2cL8DLDl3
abbmvdDebbLUgVOSB6STraAehTIw5s7XNkpCYkHtyrzedBLkMVObySi80JKE
QFfd840obWkGrqTIT0/AxC0G6CouSslyv9SuHVhwNkuNAUf9FlN/4HuaHMOW
1ForvJprpifrxUKimJQUYVOMu3TFPUbVpVx+YFGKueczcSEM8UoBRpSSb8aY
YbOefS+gD89quV+A3eMY0j/NTZJpbGOr4Z3cGKOwpysed/HiSqDJOvcpE8Cm
/5tJxTMfIgbOPc5zZB26DweJLPBrcXZhWAQzG2CRN0ZK2JQuE4ANl+Nuq8B2
wfa+inAhVGoueV8SVn5qghXUe6GYJIACgKO2x6NUO2C5SPYb6cEqRVPu2h9X
w/E1d24Qp5MRygPp/iaH5ZrFCnFT7YidkvIM+wp9N/5ZNC+CqGcfUHzfvGYI
669SmCRd1xrPcU5FcDkbBi/onWVeVuYmCdt8xdUrERaOsAk2km3QCSKKjpYT
zbGveo4MKCkYy5EbMNmRXvhtE0usM4ocDlPxTKHxK7r20rGxegRPAosAsznh
WuW4Ti0Vz122jARYL0zu2dyrrhecQp7BVwy5/PbckJSEZ3GpGBiucnI+wjGv
Y78Bt7shxXQDGXmpB+ghvY1dMiv3UAxC24K3tsJpjcSCx3d1YiuebH2CS7Uy
lYYE7y7HvobTN1l+C9bNQlpX3z2Sph3UGhVD6LDgfJ3OgEe+0SyN4oy7b1Ni
3TRZxRlfwEMpNvn3xK4wOiq595yWk0hmr9wmWBrBxtrPRuJjkshmkssiuRH2
DRFKUtLQWD9Y4gWqg+j/A1HYRUmgrQAA

-->

</rfc>
