<?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.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-coetzee-oauth-spt-txn-tokens-03" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="SPT-Txn Tokens">Transaction-Bound Authorization Tokens for Software and AI Agents (SPT-Txn)</title>
    <seriesInfo name="Internet-Draft" value="draft-coetzee-oauth-spt-txn-tokens-03"/>
    <author initials="R. J." surname="Coetzee" fullname="Rudolf J. Coetzee">
      <organization>Violet Sky Security SEZC</organization>
      <address>
        <postal>
          <country>Cayman Islands</country>
        </postal>
        <email>rudi@violetskysecurity.com</email>
        <uri>https://www.violetskysecurity.com</uri>
      </address>
    </author>
    <date year="2026" month="July" day="19"/>
    <area>Security</area>
    <workgroup>OAuth Working Group (individual submission)</workgroup>
    <keyword>oauth</keyword>
    <keyword>authorization</keyword>
    <keyword>ai-agent</keyword>
    <keyword>delegation</keyword>
    <keyword>attenuation</keyword>
    <keyword>intent-binding</keyword>
    <abstract>
      <?line 37?>

<t>Current authorization is role-scoped: an actor is granted a role whose
authority persists across every action it takes. This fails exactly when
actors fail -- under compromise, prompt injection, or goal hijacking -- because a
compromised actor retains full role authority. This document specifies
SPT-Txn, a family of transaction-bound authorization tokens in which authority
exists only inside a short-lived token bound to one declared action, on one
resource, under one jurisdictional policy, verified against how the requesting
workload was attested. Delegation across agents and tools is expressed as a
cryptographically sealed chain that can only narrow authority and is verifiable
offline. Each authorization decision emits a signed, tamper-evident receipt as
a byproduct of enforcement. This document specifies normative
intent binding, transaction receipts and their transparency log, attested
issuance via OAuth 2.0 Token Exchange, per-token status-list revocation, and
cryptographic algorithm agility including hybrid post-quantum signing. It also
hardens attested issuance in response to an adversarial security
review of the reference implementation: it makes an audience and a verifiable
expiry mandatory on the presented attestation, requires the issuer to bound the
delegated depth it grants, and clamps a token's lifetime to the attestation it
was minted on. The issuer-side requested-versus-permitted scope intersection is
retained; the enforcement point re-checks the chain independently.</t>
    </abstract>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>An autonomous software agent that holds a role-scoped credential holds, at every
moment, the full authority of that role. When the agent is manipulated -- by a
poisoned document it reads, an injected instruction in tool output, or a
compromised planning loop -- that full authority is available to the attacker.
Role scoping fails precisely at the moment agents fail.</t>
      <t>SPT-Txn inverts the model. Authority is not attached to an actor for a session;
it is minted per transaction, bound to a single declared action, and expires in
seconds. A compromised agent holds a token that is cryptographically useless for
any action other than the one it declared. This document specifies the token
family, its delegation and attenuation semantics, the binding of a token to a
declared intent, the evidence a decision emits, the issuance of tokens from
attested workload identity, per-token revocation, and algorithm agility.</t>
      <section anchor="changes-from-02">
        <name>Changes from -02</name>
        <t>This revision is a correction-and-consolidation release. The published -02
contained two substantive errors, both fixed here, and it is refocused on the
protocol wire format and its verification.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Terminology.</strong> The root token is named the <strong>Compliance Attestation Token
(CAT)</strong> throughout. Prior revisions called it a "Capability Acquisition Token"
and treated CAT and the Capability Token (CT) as synonyms; they are distinct
roles -- a CAT is the root, and a CT is a delegated attenuation of it.</t>
          </li>
          <li>
            <t><strong>RFC 9700.</strong> Prior revisions cited RFC 9700 as "Transaction Tokens" and
derived base claims from it. RFC 9700 is the OAuth 2.0 Security Best Current
Practice; the Transaction Tokens work is the separate
draft-ietf-oauth-transaction-tokens. This revision removes that conflation:
the token model is specified self-contained (<xref target="token-model"/>), not as an
extension of RFC 9700 claims.</t>
          </li>
          <li>
            <t><strong>Self-contained token model.</strong> The core claims and the base verification
steps are now specified in this document (<xref target="token-model"/>,
<xref target="base-verification"/>), with no dependency on an external base document.</t>
          </li>
          <li>
            <t><strong>Scope.</strong> Implementation- and deployment-specific material from -02 -- the
zero-knowledge circuit constructions, the multi-chain trust-registry
deployment notes, and the human-anchor escrow / threshold-custody mechanism --
is removed from the protocol specification. Those are deployment concerns, not
required to specify the token format or its verification; the identity root
and any lawful-access arrangement are explicitly out of scope
(<xref target="humananchor"/>).</t>
          </li>
          <li>
            <t><strong>New normative sections.</strong> Intent binding (<xref target="intent-binding"/>), transaction
receipts and their transparency log (<xref target="receipts"/>), attested issuance via
OAuth 2.0 Token Exchange (<xref target="attested-issuance"/>), and status-list revocation
(<xref target="status-list"/>), reflecting a public reference implementation. Attested
issuance is hardened following an adversarial review: a mandatory audience and
a verifiable expiry on the presented attestation, an issuer-side bound on
delegated depth, and a token lifetime clamped to its attestation.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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><strong>Actor</strong>: a human, workload, or AI agent that requests or holds authority.</t>
      <t><strong>Compliance Attestation Token (CAT)</strong>: the root authorization token for an
actor, establishing its maximum capability scope and delegation depth.</t>
      <t><strong>Capability Token (CT)</strong>: a delegated token, a strict attenuation of its
parent (a CAT or another CT).</t>
      <t><strong>Transaction Token (TXN)</strong>: a short-lived, sender-constrained token bound to a
single concrete transaction.</t>
      <t><strong>Policy Enforcement Point (PEP)</strong>: the component that verifies a presented
token against the actual request and permits or denies.</t>
      <t><strong>Intent</strong>: the declared action a token authorizes -- a tool/method identifier,
a canonicalized parameter digest, and a target resource.</t>
    </section>
    <section anchor="token-model">
      <name>Token Model</name>
      <t>An SPT-Txn deployment issues three token types forming a chain of decreasing
authority: CAT (root) -&gt; CT (zero or more delegation hops) -&gt; TXN (leaf,
per-transaction). All are signed JSON Web Tokens <xref target="RFC7519"/>. Verification is
offline: a PEP holding the presented tokens and a locally-cached trust-registry
snapshot establishes authority without contacting the issuer.</t>
      <section anchor="common-claims">
        <name>Common claims</name>
        <t>Every token carries:</t>
        <ul spacing="normal">
          <li>
            <t><tt>iss</tt> (string): the issuer identifier, resolvable in the trust registry to a
public key, a role, and a signing algorithm.</t>
          </li>
          <li>
            <t><tt>sub</tt> (string): the subject the token authorizes.</t>
          </li>
          <li>
            <t><tt>iat</tt>, <tt>exp</tt> (NumericDate): issued-at and expiry.</t>
          </li>
          <li>
            <t><tt>jti</tt> (string): a unique token identifier.</t>
          </li>
          <li>
            <t><tt>txn_token_type</tt> (string): one of <tt>CAT</tt>, <tt>CT</tt>, or <tt>TXN</tt>.</t>
          </li>
          <li>
            <t><tt>human_anchor</tt> (string): a privacy-preserving commitment to the authorizing
human (see <xref target="humananchor"/>).</t>
          </li>
          <li>
            <t><tt>holder_key</tt> (string): the holder's public key; the presenter <bcp14>MUST</bcp14> prove
possession of the corresponding private key when presenting the token (for
example via DPoP <xref target="RFC9449"/> or HTTP Message Signatures <xref target="RFC9421"/>).</t>
          </li>
        </ul>
        <t>A <strong>CAT</strong> additionally carries <tt>capability_scope</tt> (object), the maximum
authority, and <tt>delegation_depth_max</tt> (integer, zero or greater). It <bcp14>MAY</bcp14> carry
<tt>spt_attestation</tt> (the sealed attested-issuance evidence, <xref target="attested-issuance"/>)
and <tt>status</tt> (a status-list reference, <xref target="status-list"/>).</t>
        <t>A <strong>CT</strong> carries a <tt>capability_scope</tt> contained in its parent's,
<tt>delegation_depth_remaining</tt> (integer) decremented by exactly one from its parent
at each hop (<xref target="delegation"/>), a binding to the exact bytes of its parent (a hash),
and <bcp14>MAY</bcp14> carry <tt>status</tt>.</t>
        <t>A <strong>TXN</strong> additionally carries <tt>aud</tt> (the intended relying party), a
transaction-context hash binding it to one concrete transaction, and the intent
digest (<xref target="intent-binding"/>). Its <tt>exp</tt> <bcp14>SHOULD</bcp14> be short, on the order of seconds.</t>
      </section>
      <section anchor="humananchor">
        <name>humanAnchor</name>
        <t>The <tt>human_anchor</tt> claim is a commitment to the identity of the human who
authorized the root CAT. It carries no name and no PII. It is propagated
<strong>unchanged</strong> from the CAT into every downstream CT and TXN; a PEP <bcp14>MUST</bcp14> reject a
chain in which <tt>human_anchor</tt> is not byte-for-byte identical at every hop. An
issuer <bcp14>MAY</bcp14> freshly randomize the commitment per CAT issuance so anchors are
unlinkable across issuances.</t>
        <t>The <em>establishment</em> of the anchor -- proving it belongs to one genuine, unique
human -- is out of scope for this document. It is supplied by an identity root
behind an implementation-defined interface (for example a proof-of-personhood
credential); this document specifies only the claim, its propagation, and its
consistency requirement. No part of the token chain is dependent on any single
identity-root provider.</t>
      </section>
      <section anchor="base-verification">
        <name>Base verification</name>
        <t>A PEP verifies a presented chain offline, against a locally-cached trust-registry
snapshot, in the following steps. Each <bcp14>MUST</bcp14> fail closed:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Signature.</strong> Verify each token's signature under the issuer's registered key,
using the algorithm bound in the trust registry, not the token header
(downgrade resistance).</t>
          </li>
          <li>
            <t><strong>Temporal validity.</strong> Reject any token outside its <tt>iat</tt>/<tt>exp</tt> bounds, within
bounded clock skew.</t>
          </li>
          <li>
            <t><strong>Audience.</strong> For a TXN, verify <tt>aud</tt> matches this relying party.</t>
          </li>
          <li>
            <t><strong>Revocation.</strong> If a token carries <tt>status</tt>, check it against a cached
status list (<xref target="status-list"/>); an unavailable status snapshot fails closed.</t>
          </li>
          <li>
            <t><strong>Sender constraint.</strong> Verify the presenter possesses the key in <tt>holder_key</tt>
(for example a valid DPoP proof <xref target="RFC9449"/>).</t>
          </li>
          <li>
            <t><strong>Chain.</strong> Verify the full chain from the root CAT; each hop <bcp14>MUST</bcp14> commit to the
exact bytes of its parent, so no validly-signed token can be spliced under a
parent it was not delegated from (<xref target="delegation"/>).</t>
          </li>
          <li>
            <t><strong>Scope.</strong> Evaluate the request against the chain-intersection of every
<tt>capability_scope</tt> from root to leaf (<xref target="delegation"/>).</t>
          </li>
          <li>
            <t><strong>Context binding.</strong> Verify the TXN's transaction-context hash matches the
actual transaction and its bound intent digest (<xref target="intent-binding"/>).</t>
          </li>
        </ol>
        <t>These claims and steps are the base model; the sections that follow extend it
with delegation attenuation, intent binding, transaction receipts, attested
issuance, status-list revocation, and algorithm agility.</t>
      </section>
    </section>
    <section anchor="delegation">
      <name>Delegation and Attenuation</name>
      <t>A delegation chain is a sequence CAT -&gt; CT_1 -&gt; ... -&gt; CT_n. Each hop <bcp14>MUST</bcp14>
satisfy the following invariants, all enforceable offline:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Monotonic scope.</strong> For every hop, scope(child) is contained in
scope(parent). Scope dimensions are constraints: numeric dimensions are
ceilings, string and boolean dimensions require equality, list dimensions
require the subset relation, and object dimensions are contained recursively.</t>
        </li>
        <li>
          <t><strong>Effective scope is the chain intersection.</strong> A dimension present in a
parent but absent in a child is a <em>constraint that the child did not
restate</em>, not a relaxation. A PEP <bcp14>MUST</bcp14> evaluate a transaction against the
intersection of every scope from the root to the leaf, inheriting a dropped
dimension from its nearest ancestor that declares it. A hop that omits a
ceiling therefore cannot escape that ceiling.</t>
        </li>
        <li>
          <t><strong>Monotonic TTL.</strong> exp(child) <bcp14>MUST NOT</bcp14> exceed exp(parent). An implementation
<bcp14>MAY</bcp14> clamp a defaulted lifetime to the parent boundary but <bcp14>MUST</bcp14> reject an
explicitly requested lifetime that would exceed it.</t>
        </li>
        <li>
          <t><strong>Bounded depth.</strong> The root declares a maximum delegation depth. Each hop
decrements the remaining depth by exactly one. A hop at depth zero <bcp14>MUST</bcp14> be
rejected. Absent, non-integer, or negative depth <bcp14>MUST</bcp14> be rejected.</t>
        </li>
        <li>
          <t><strong>Full-chain verification.</strong> A PEP <bcp14>MUST</bcp14> verify the entire chain from the
root. There is no fast path for a "trusted" intermediate token. Each hop
commits to the exact bytes of its immediate parent (a hash), so no
validly-signed token can be spliced under a parent it was not delegated
from.</t>
        </li>
      </ol>
      <t>The caveat language <bcp14>MUST</bcp14> be provably narrowing: if it can express "allow X" as
well as "deny unless X", it is unsafe and <bcp14>MUST</bcp14> be restricted. Implementations
<bcp14>SHOULD</bcp14> verify monotonicity with property-based tests over randomly generated
chains asserting that authority never widens at any hop.</t>
    </section>
    <section anchor="intent-binding">
      <name>Intent Binding</name>
      <t>A Transaction Token <bcp14>MAY</bcp14> carry an intent digest that binds the token to a single
declared action. A PEP that enforces intent binding recomputes the digest over
the actual call and compares.</t>
      <section anchor="intent-structure">
        <name>Intent structure</name>
        <t>The declared intent is the JSON object:</t>
        <artwork><![CDATA[
{ "tool": <string>, "params": <object>, "target": <string> }
]]></artwork>
        <t>where <tt>tool</tt> is the tool or method identifier, <tt>params</tt> is the declared
parameter object, and <tt>target</tt> is the resource or service identity the action
executes against.</t>
      </section>
      <section anchor="canonicalization">
        <name>Canonicalization</name>
        <t>The intent digest is computed over the JSON Canonicalization Scheme
<xref target="RFC8785"/> serialization of the intent object, restricted to the accepted
subset in this section. Anything outside the subset <bcp14>MUST</bcp14> be rejected, never
normalized.</t>
        <ul spacing="normal">
          <li>
            <t>Object member names <bcp14>MUST</bcp14> be unique. A duplicate member <bcp14>MUST</bcp14> be rejected at
parse time (not resolved last-wins).</t>
          </li>
          <li>
            <t>Numbers <bcp14>MUST</bcp14> be integers with absolute value at most 2^53-1, expressed
without fraction or exponent and without negative zero. Monetary amounts and
other precise quantities <bcp14>MUST</bcp14> be represented as strings.</t>
          </li>
          <li>
            <t>Strings <bcp14>MUST</bcp14> be valid UTF-8 and <bcp14>MUST NOT</bcp14> contain U+FFFD.</t>
          </li>
          <li>
            <t>Object members are ordered by member name as sequences of UTF-16 code units,
per <xref target="RFC8785"/>.</t>
          </li>
          <li>
            <t>Nesting depth is bounded; exceeding the bound <bcp14>MUST</bcp14> fail closed.</t>
          </li>
        </ul>
        <t>A single canonicalization implementation <bcp14>MUST</bcp14> be shared by the issuer path (that
computes the bound digest) and the verifier path (that recomputes it). Two
implementations will diverge over time, and a divergence is a full
authorization bypass. Implementations <bcp14>MUST</bcp14> differentially test the
canonicalizer against an independent implementation and <bcp14>MUST</bcp14> fuzz it.</t>
      </section>
      <section anchor="digest-and-verification">
        <name>Digest and verification</name>
        <artwork><![CDATA[
intent_digest =
  base64url( SHA-256( "spt-txn-intent-v1" || 0x00 || JCS(intent) ) )
]]></artwork>
        <t>carried as the <tt>spt_intent_digest</tt> claim (base64url, unpadded). The PEP
recomputes the digest over the actual call and compares in constant time.
A mismatch <bcp14>MUST</bcp14> result in denial. A token presented to an intent-enforcing PEP
without an <tt>spt_intent_digest</tt> claim <bcp14>MUST</bcp14> be denied; absence never downgrades
enforcement.</t>
        <t>Intent binding is the direct mitigation for goal hijacking (OWASP ASI01
<xref target="OWASP-ASI"/>): an agent whose reasoning is manipulated mid-task holds a token
that is cryptographically useless for the hijacked action. It does not, and
does not claim to, evaluate whether the declared intent is itself wise; that is
the policy layer's responsibility.</t>
      </section>
    </section>
    <section anchor="receipts">
      <name>Transaction Receipts and Transparency Log</name>
      <t>An issuer or PEP that emits evidence <bcp14>MUST</bcp14> emit a signed Transaction Receipt at
the moment of each decision, including denials.</t>
      <section anchor="receipt-format">
        <name>Receipt format</name>
        <t>A receipt is a JSON object with: a version string; the PEP identity; a decision
of "PERMIT" or "DENY"; a class of "ok", "violation" (a check failed), or
"unavailable" (a dependency was unreachable); the rule path that fired; the
base64url SHA-256 hash of the presented token; the hash of the policy bundle
version evaluated; the bound intent digest if any; the jurisdiction profile;
a timestamp; and a nonce. The receipt is signed with the log signing key, which
<bcp14>MUST</bcp14> be separate from the token issuance key and rotate on a separate schedule.</t>
        <t>The signing input is <tt>"spt-txn-receipt-v1" || 0x00 || JCS(receipt-without-sig)</tt>,
using the same canonicalization as <xref target="canonicalization"/>. Receipts <bcp14>MUST NOT</bcp14> carry
payloads or personally identifiable information -- hashes and references only.</t>
        <t>Operators <bcp14>MUST</bcp14> be able to distinguish a "violation" (an attack) from an
"unavailable" (an outage); the two decision classes are therefore mandatory and
distinct.</t>
      </section>
      <section anchor="transparency-log">
        <name>Transparency log</name>
        <t>Receipts are appended to an append-only log whose periodic Merkle tree heads
<xref target="RFC6962"/> are signed and co-signed by at least one external witness. Any
single receipt is inclusion-provable against a signed tree head without
revealing the rest of the log. A compromised operator cannot produce a
consistent alternate history that a witness will co-sign.</t>
        <t>If the log is unreachable, a deployment <bcp14>MUST</bcp14> decide explicitly, and document,
whether decisions proceed with a durable append-only local buffer reconciled on
reconnect, or whether log-unavailability is a fail-closed condition. This <bcp14>MUST
NOT</bcp14> default silently.</t>
      </section>
    </section>
    <section anchor="attested-issuance">
      <name>Attested Issuance</name>
      <t>An issuer <bcp14>SHOULD</bcp14> issue tokens only from an attested identity, never a bearer
secret alone. Attested workload identity -- SPIFFE JWT-SVID or X.509-SVID
<xref target="SPIFFE"/>, a Kubernetes projected ServiceAccount token, or a cloud
workload-identity assertion (for example AWS IRSA, GCP Workload Identity
Federation, or an Azure federated credential) -- is presented as the subject
token of an OAuth 2.0 Token Exchange <xref target="RFC8693"/>. The issuer:</t>
      <ol spacing="normal" type="1"><li>
          <t>Verifies the attestation against the trust domain's keys (never the
workload's self-report). The signature algorithm <bcp14>MUST</bcp14> be constrained to an
allowlist; <tt>alg: none</tt> and unexpected algorithms <bcp14>MUST</bcp14> be rejected before any
verification key is selected. For SPIFFE SVID and cloud/federation methods an
audience <bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp14> bind the assertion to this exchange
endpoint; a missing audience on these methods <bcp14>MUST</bcp14> be rejected and <bcp14>MUST NOT</bcp14>
be treated as "any audience", so an assertion minted for another relying
party cannot be replayed here. A subject token that carries no verifiable
expiry (<tt>exp</tt>) <bcp14>MUST</bcp14> be rejected: a proof that never ages out is not a proof.</t>
        </li>
        <li>
          <t>Computes an evidence digest
<tt>base64url(SHA-256("spt-txn-attest-v1" || 0x00 || evidence))</tt> over the exact
presented evidence, and seals it, with the attested subject and method, into
the issued token as the <tt>spt_attestation</tt> claim. The raw subject token <bcp14>MUST
NOT</bcp14> be logged or forwarded downstream; only its evidence digest is retained.</t>
        </li>
        <li>
          <t>Grants scope as the intersection of the requested scope and the
policy-permitted scope for the attested principal, and bounds the delegated
depth it grants. An attestation establishes <em>identity</em>, not <em>entitlement</em>: a
requested scope is a ceiling, never an instruction, and <bcp14>MUST NOT</bcp14> widen
authority beyond what policy permits; an unbounded or arbitrarily large
requested delegation depth <bcp14>MUST NOT</bcp14> be honored. The enforcement point
independently re-evaluates the full chain intersection at execution
(<xref target="delegation"/>). Issuer-side intersection at mint and PEP-side enforcement
at execution are defense in depth, not alternatives.</t>
        </li>
      </ol>
      <t>The token's expiry <bcp14>MUST NOT</bcp14> exceed the attestation's own expiry; a token cannot
outlive the proof it was minted on. An implementation <bcp14>MAY</bcp14> clamp a defaulted
token lifetime down to the attestation boundary but <bcp14>MUST</bcp14> reject a request whose
token would outlive its proof. An issuer <bcp14>MAY</bcp14> enforce attestation-freshness
predicates (e.g. "actions of class X require attestation newer than D seconds"),
denying a stale proof with a decision class that distinguishes a freshness-
predicate violation from an unavailable dependency (<xref target="receipts"/>).</t>
    </section>
    <section anchor="status-list">
      <name>Status-List Revocation</name>
      <t>A CAT, CT, or TXN <bcp14>MAY</bcp14> carry a <tt>status</tt> claim referencing an entry in a Token
Status List <xref target="I-D.ietf-oauth-status-list"/>:</t>
      <artwork><![CDATA[
"status": { "status_list": { "idx": <uint>, "uri": <string> } }
]]></artwork>
      <t>A PEP configured for status checking <bcp14>MUST</bcp14>, for every token in the chain that
carries a <tt>status</tt> claim, resolve the signed Status List Token for the URI from
its local cache and read the status at the index. A status of INVALID
(revoked) or SUSPENDED <bcp14>MUST</bcp14> result in denial. An unresolvable, expired, or
unsigned list, or an out-of-range index, <bcp14>MUST</bcp14> fail closed (deny). The signed
list is consumed offline; a PEP <bcp14>MUST NOT</bcp14> fetch status in the hot authorization
path. Status-list revocation complements, and does not replace, immediate
key-cascade revocation of a delegating issuer.</t>
    </section>
    <section anchor="algorithm-agility">
      <name>Algorithm Agility</name>
      <t>The signature suite identifier <bcp14>MUST</bcp14> be covered by the signature. The signing
input is <tt>"spt-txn-env-v1" || 0x00 || suite_id || 0x00 || payload</tt>, so forcing
a weaker suite requires forging the very signature it is trying to weaken.
Unknown suites <bcp14>MUST</bcp14> be rejected by allowlist.</t>
      <t>A hybrid suite carrying both a classical (Ed25519) and a post-quantum (ML-DSA)
signature <bcp14>MUST</bcp14> carry both signatures; an envelope missing one <bcp14>MUST</bcp14> be rejected
as malformed in every mode, so a downgrade cannot be effected by omission. The
verification mode -- accept-either (transition) or require-both (strict) -- is
verifier configuration and <bcp14>MUST NOT</bcp14> be inferred from the token. A jurisdiction
profile <bcp14>MAY</bcp14> pin a minimum suite, checked before signature dispatch, so a valid
classical signature cannot pass a profile that requires hybrid.</t>
      <t>Because transaction tokens are short-lived, algorithm migration is unusually
cheap: a token outlives its algorithm by minutes, not years.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The dominant risk classes, in likelihood order, are: (1) canonicalization
mismatch between the issuer and verifier intent-digest paths, which is a full
authorization bypass and is addressed by <xref target="canonicalization"/>; (2) attenuation
bypass via a widening caveat or isolated child validation, addressed by
<xref target="delegation"/>, in particular the chain-intersection rule; (3) algorithm
downgrade, addressed by <xref target="algorithm-agility"/>; (4) replay, addressed by
nonce binding and single-use enforcement at the PEP with a fail-closed replay
cache; (5) parser vulnerabilities, addressed by strict parsing and continuous
fuzzing; (6) revocation gaps, addressed by <xref target="status-list"/>; (7) confused
deputy at the PEP, which <bcp14>MUST</bcp14> act strictly on the token's authority and <bcp14>MUST NOT</bcp14>
forward upstream credentials that outlive a single decision; and (8) authority
inflation at attested issuance -- an attestation proves identity, not
entitlement, so an issuer that treated a requested scope as a grant, or honored
an unbounded delegation depth, would let any attested low-privilege workload
mint arbitrary authority. This is addressed by <xref target="attested-issuance"/>: the issuer
intersects the requested scope with the policy-permitted scope (requested scope
is a ceiling), delegated depth is bounded at issuance, and the PEP independently
re-checks the chain intersection at execution. A cross-service replay of an
attestation minted for another relying party is addressed by the
mandatory-audience rule in the same section.</t>
      <t>Every error path in the trust boundary <bcp14>MUST</bcp14> deny, with a decision class
distinguishing violation from unavailability. Deny-by-default <bcp14>SHOULD</bcp14> be a
structural property of the implementation, such that a request that has not
received a decision cannot be constructed, rather than a runtime check a
refactor can silently remove.</t>
      <t>The system constrains an agent to its declared intent; it does not defend
against an agent that is authorized to perform a harmful action and does exactly
that, nor against a compromised issuer with signing-key access (mitigated
organizationally and detectably via the transparency log). Implementations <bcp14>MUST
NOT</bcp14> overclaim these boundaries.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests registration of the following JWT claims in the JSON Web
Token Claims registry: <tt>txn_token_type</tt>, <tt>human_anchor</tt>, <tt>holder_key</tt>,
<tt>capability_scope</tt>, <tt>delegation_depth_max</tt>, <tt>delegation_depth_remaining</tt>,
<tt>spt_intent_digest</tt>, and <tt>spt_attestation</tt>, together with the use of the
<tt>status</tt> claim per <xref target="I-D.ietf-oauth-status-list"/>. Full registration templates
will be provided in a subsequent revision.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-status-list">
          <front>
            <title>Token Status List (TSL)</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="21" month="June" year="2026"/>
            <abstract>
              <t>   This specification defines a status mechanism called Token Status
   List (TSL), data structures and processing rules for representing the
   status of tokens secured by JSON Object Signing and Encryption (JOSE)
   or CBOR Object Signing and Encryption (COSE), such as JWT, SD-JWT,
   CBOR Web Token, and ISO mdoc.  It also defines an extension point and
   a registry for future status mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-status-list-21"/>
        </reference>
        <reference anchor="SPIFFE" target="https://spiffe.io">
          <front>
            <title>SPIFFE: Secure Production Identity Framework for Everyone</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OWASP-ASI" target="https://owasp.org">
          <front>
            <title>OWASP Top 10 for Agentic AI Applications</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 489?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The transparency-log design follows the Certificate Transparency <xref target="RFC6962"/>
lineage. The attested-issuance profile builds on OAuth 2.0 Token Exchange
<xref target="RFC8693"/> and SPIFFE <xref target="SPIFFE"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5V863bbSJLmfzxFrvyjSS/BslxlV1nu6VmWbHerxhetpbr0
zum1QCIpokUCHCQgmaVxP8s+yzzZfHHJRAKkPLOn67RFIJEZGRkZ8cUlM03T
pCmatT0xR5d1Vrps0RRVmf5YtWVuZm2zquri94yemcvqxpbOLKvaXFTL5i6r
rcmo1ZmZXduycWZ0cX6ZXn4ux0dJNp/X9ha96iP9+ijJq0WZbTBeXmfLJl1U
tvnd2rTKMFbqtk3afC7ThhunT75NFlljr6t6d2Ls521SbOsT09Sta54+efLi
ydMENGQn5sIu2rpodsldVd9c11W7PTEfiHjzKx4U5bX5Mz00o6LMi9sib7O1
ce18UziHiY2TG7vDl/mJ+VcmY2KyeOL4WaQZzXBicru21/5p09iy1R9FiR9N
OqcRyuu/Ja4Baz5l66rEVHfWJd14l7stnp29vnyTbAuM2VSLiXFV3dR26fDX
bkN//C0RIk4SY1J0707Mx6n5aWpOhWN4bIxw8uhjm1frZfTyiN9W9XVW6iTQ
6peiWtvGXNzsAsPMxev/cyqNF1jxhvh8dJrtNllpztwaU3Dy1m6yYo13dZsX
/+uWO3I3O6fdTBfVRtrh54lZNc3WnXzzzd3d3fRg26Ss6g3IurU0u49vTp8e
H7/QP384/v47/+f3Pzw7MeaR+eniw3tzmpVVWSyytZfHi8XKbqwZ/XR6MdYP
nr/4lj+QxX86fSJiZ15/Xqyy8tpKs++fYTTu99dLefLiu+/kyavz6jwpyuWA
vucvnj/l96e2boplQVJpeL9sIYHlYue7eXrMzf5yeXlu3lnnIDbmorgus6at
LTZItm5sXXLXxtkytzV2QOmaOitKyA3N4yx9NS1ss/RbosG3Ll0XriFiLs7P
3rx5fcLM9htXn8mqWnNeV3nL29ic5RBKWuc3NSSFdgdv39e3tt5BMmXNmqy+
tk23bG5bLJd2WlR4++HX2cV5Ors464/Ij8HbrTl+wj2yAigWrAu22zUxCOO7
wwNUd5nbTiGdSZqmJpvT9BdNkpy2NZjZ9HefKZypIUOpW1Rbiz0K0URrjIkX
11iCxuYm4ybmblU5q/uGZr21tQPfHD6oK+eMpXkbUXGmaEDYjXVTc7lCV0sI
OFp8xtv1Dj3ZMuFh5I0BoS0tF/bJZltX2Mp2YuiPbYPN+Xe7EDUAsq4raJdV
8fdswZoHH87tImsdlGXSfZzrJGrbYOkxSLteyyQC+UoYFGa7Iba4rV1A9qBL
VKdCBYG4TQF6qyXUYqe+56y++3wUnQpiMbliserGSexnZlJVoiPQUuQgwji8
bCB2tyCVPzXSaVOhoYUiXKwh+rlyEzMv6XkCKa/aegHmCLuo7d+x8V1ecEPw
ZltBPnYTg8Wg6aCLa2JBY1bVnWlWFjz5t9a6Btxjhb6ustxAZFjhOiz31LwK
atgvbSYWKGMKK6xkQYu5BTnMa0fMr3fbpoLIbFekRjBZZ7M13kI3gCvNKmvM
IiuFD2VW1yCnkyXqGX0K0dl8bZNquVwXpZ2a11nHTmU22FOQrofiLIgs46AE
bD6ByG0glamFFaI1re3CFhChzCWZme+2snVpOS0poYWllX9QEEzQo4nYH6P2
ZxJLgx9EubOyRS2vVXeZdXU9CcxNYKTarFxYc1tkDyrSCe0tMdMm0lAY6rZa
ePtY5n2em2x9TcxcbbBcxZq4WpSLdUsUm9VuXhc5hMM16b+BgKbdMNPwbmrO
wKG1q5JVVuckxJ5YE4gtaJpuC51jSURJSeRYK5fVBRl7DxBAX2HveLuwoC0t
sQCfb7Zr5rUaSyiHDSkH7ggEciNiXxZLAASsgEKBtcwzbOYdbQLql8TOimJi
QpUhJNcFmQFqQ5Rjf4BW3Vcrmyi6wHe53YLvoII1nGNmGuy4zZaEifn+B2fW
xdI2xYZnTH1Go+HbhPbMpmA6qpKEyI+a8h7XbWbzlBiFFcSSQlqpOetaxjS1
s6ouXSK6yuYvebBIQLFqBQtzCpO8uJEJyq6CPNotGboSanWasMbfFHkO7iWP
zBkghzdWSTIjXjdVWW2q1gEReYxJW1u256pa5061vRoEs4AWIuNDWpdekyiL
pk821YZRG5HDCrbbziwBaEg9Tc2vUPfCQR4Lmw1rWmzbNS8GqXAogASzdNBn
ebcTC5p0xmOWagZIKMmgqwUmxQJ9ZKq22bYNG4i+GdgCZZGQYxfCnGIoJmtA
LQjKbmGGSOqixYaJsfU0+Uhmg7hB3YgdgwRCAVkosqzh1sIKryapERbDY/Oi
BLsapw0hhVMP/WXssmpkuBUbg84Ek+mHbrOMa18mhbBORG5r61gLTTr7Qdqw
vF4fMCIk5bypLBmqBLJXAYKCGtOznLxIXhZECTHXMPi+koflXYNAojXJymD+
K0y2ps9k4clOgXxP0cMqlxrzkImYXkB/cC6PDFKZx64BuANZAjZyIoeqoUkA
A+1gSRJ4IZpcGouZINUzsCiToENY+5E0q3cGJiVBPQbzWSgQjPX2QFfva2dI
yCNAXlb40rNJ4XMlzBrSpE7xWYblAXQT7IGuGNPCyueZ2p+1zZwVDbRt57AU
JEjUFxqKTjHNXUU+GflNjI4t7G/tSGqgCJfFZzTBglkhVQQN6hvr41i9sf6E
hMCZwm67gwQZAfHa3ltumTApIvP48SUpvLKC/dtNHz9m8uoKsi78IcEHambV
jMankMB1weyeRXqW7SJg7uh0djlGJ80Krub1Cvt9CiReMMQTTkE4IZCWqc/I
zdpmc7GCswUMgyu6/gg3s7GGdqF1RN/eeJvoO7HJo9PLMSEct4ODtNs4Vs+Q
c7AgLwhGAVsbVnSO9EvGvRUiyTRdXX1zeilr2VmhWIwhYkWjfIOrY158/+QJ
MW1vjgV96VsQXXFgwYcBGBwYDFUzwJxDPMi8FRuVMwzV9aG0dlgkuK8/YhmM
ug3o7pz8iGJhxUDtD8v7wXfnLPAPpklkcCgicrpiLC0bSxVCkPrabqpbVgeE
GqtyuRbkgN6ChhBdSuN59QHLatfLtJP60f09N0256Zcv44koWwIe6Mp+xgI4
ZX/ghzBK1+Ki32E0sBdp7M3AXC9EzPB4R2AwaAxCF2hcAvl2JDM2jpXhkOgJ
Pr6/py7TuEuezR0UCvozHgUsGCRB6dLUanIHmBTft58UmXai/6yHy1KmH12t
qx09TJXIBcw1eiMI4LWUWFJa3N9tXaU3mBK2HrzxRVEv2oLXLFhpVaebdt0U
qXoDFGRKa3uNHVTvWFT9qLRCViEZfbZqoeCh9hYwmMa6BfkN35AesI5sVAoV
1VQ5YKIl7Fw40JeiQ5YmEqJciBbgqArMT0y0FZaxIv+RdnRHBmawAAsdiwzt
cIGXbGLl+10ki6oNyW8eKEPZLd5CsEpQ9UPmcp3dAYyk2WJBRhReEVkDwRIg
B8YazlxBLjM0HkkpozLSh/f3zBjhC2RBl/Y94HdwW4yiS8dr3XNhqIN+UI3l
KdqZPOX/0rOhfnwz7mHfd4CjQ6GOB1wd6sB/k/pvpCcMetj5kflH77g97NWa
5ovJZWIHFw+6IFM1MjZnUfFejjPiApHQVOt1dced9Z0d8XFOMEbnmMQ+DC1u
5MUY9WK+7rsQvo18B8FyPNGB0+KtiUhd8FDYdxHZZIe465tQhjmtAEFLFgX+
PrLMhDesuYFFoxgtzMm7ny8ujybyr3n/gf/++Pp//3z28fUr+vviL7O3b8Mf
iba4+MuHn9++6v7qvjz98O7d6/ev5GM8Nb1HydG72V+PZFZHH84vzz68n709
2leKtBvImVO3CWxkHjoAO6iEYi6K9MfT8//4f8ffQV3+Dw17fvmiPyjwiR8U
eZLROA4hP8mgJ9l2a7OaegGMAJbYFg2c4gmb/lV1VzI+Ajcf/ytx5m8n5o/z
xfb4uz/pA5pw76HnWe8h82z/yd7HwsQDjw4ME7jZez7gdJ/e2V97vz3fo4d/
/GcKvpj0+Id//lOCST+ekUfy+DHJPSueSUC/7HXNzmJHUn1fR2/UkQhhN+rs
a2DPQ72TgKAORdrEN9Ig4sRQFwx8acPSDthkn4tNu6F19HBOvG4xccGd4E0l
NB0CfjLhbg/y2BQYhNkqFs0+hHMJK0dYcQGCTKU4Q+iOB9oDTmZ0+dt7HSqK
C072Qtj7scIsUV+PrBXtiViD82jnHA40r6NwwjmHE0bnr88Dm8n/g4/m109j
hwRXg8JKZGgfTWQfedG0rBF5tZm1EuTghYceRRdMhNgeP9jALw3azC+zB9Lk
2X+zsXjoPSzQVE+SjOKIPllBrnBG4XdoBQByuFIBcUtg3PiYKWtCYfg7Ro73
j2KcxQES77JHOID1smPA4Y19s9ta9ng3YmwE02D9MTO4FLQkXZj8hOVgRII8
NumfyA8YEWgiFm0qxhxBGlfV1nEjCIQZwa1bThL2KLtFHcN0UfACH0rQU9I3
v9q5R+H395qE+fJlan6JkAgFmTSqSqKG9efNSXPomyZ1doWL64od/XSh8Yk+
cnNltoXMNt0OtNFmZ3xKyIURtNjmLjqnDnC12YA2QdBJwskT5fMCeAgidELQ
5grfXJkR7bvyenwSB/ki2eDFXt+y4S3E4jLBxhMsm8Z4fAC7N9GAl5cajYp2
/vqURofvPBwdjygiFYHAToD5myJrribmCgAAn76HHYPKeAU1gu+Z8jxV/1kg
An/z96aIx8lMWxbYXd5nDjPlxs3n8hO/+EQSGX9H8RbI4xVEj0g4pf+HvF1B
rq74U9bhnwQ99gfcwmfMFruUxaG+JVZAO2BT827w0TGdKUm6EYOATrBB9mEp
DQYps/UnMHvIQ3nzBxetx8ueMNaGjSuQ+y3B3m3lNBzmg8wcGqHINMsxE98o
nqGoo/bjBU/YOKJgFbl/GYFCjsRTZlJ2DiUrARTArYfSjNrs6bHA7hlFL2aX
gNhZnheShQG0UOE1V50J+sQmCDyoWHLG6heJqeo0hkjiVacXPrGV+oSGV5Rk
b+w1ibpXItccxajHHMeHaeeRd8mV2zafIiCIT8Uv56TMHuQOwbCJOQzIEyZK
QPcVmbc+NlecTV/3gbnnEDHI8yQ7xJXOy6bANmyIWNI/uEmyz4uaUua0TzuO
jEX9bkSHzXch20ibQcMevtOEgtiUV4LGJV+i619cj+AmqbxzV+gTbFE7bzo7
v8rcajxh/gT2B07p9LHxHhQQeA+6OOyR5aC+tusdy3NWNzsiKIljJsQpOPg8
cKC0aHzy8BAW6Pxp8foSMZUH3UASJKd6S1EncDcjk4n3Y+ArUPpxaXwQmXU5
7/2ZuOr3j2JNIG7GQO2wzvcRzqGKCR6zbnRRMnerKglqNu8gIjYgy79nallx
dJFnjb/Pz874dUGx+2qbMZoDMGlL8UJzLE4IE3AArwQZktDOAf4dhQo3ZLvZ
ffrt/Us1oKydasuGIEt8UkZzwIPpaqifpCiFBkrpD50mTGzIq5BMwsiXiZo3
kqklRTsgM1jQvNpg6h61eaZROkACj7qdHeURaFyOOSVtCbN/w3ZRU7q+JS0d
rc3jYMGpw8ee7Rp4ASAjHayCNrfrqrx2XuAA/Fts3Ikaq0SWCp9gxnHcgkF7
z6/zi+JaKmuQbZuVg2jJ3ALW5/y8H6/K7VL1BfTfMsOsSbMHvU62rKqWKf6j
UoWqXFUV5Ux9Qmv8cuBkdmkIdg6ZxSSikoTwghN2E6F9wubQcxwO0QiRzOt9
xZvXs1EBjciHC/G6RsJ1O03ZJH7iKQs1czz3QOnHYVARW2w/KkjqhgTzEIQP
QJUx4CRg+f8uyJt4TNUFRziqqTl63gtczrFYV87mwG3HUwo3etNJYSgGpDtR
vj7R6nwDrWrosN0fnCI3S/4CoTUqeWmdt+ddUkVcooOYT4K+3SqsbIZRqKMR
7e3rOuN0La0jbQhYrKdTTl/AJ6qxMW/hZ+TkuoL8j7rVS49RId8csiEJYcT3
jShOpsdJhLagQI48oUUAs2+Mu7F30+RbGmim0SPq/w2n/KBgtIBjp+ZhkzWL
FbshHNiMrMM0+Y46+RiiYxzs69JfwcyoQZoYziJzmiSsv6w7USmtDFv1vSDb
S9qEbdklS7V18AIkPSrLP02e8epbLexRJ7aJpKCP9BTcaRaQIByWMwaPvGT9
Hc5rI+iNN3uM4bCQz4mCU5L6waicAZbtEPS+NyQvO2jAIi1qVu0S0fAgGqBC
QzI3TBW2k3pofiFKtqMU0sVDEXXyRTyUwBhUU0DC2kUcmLohQpkm30/jOP5r
DNgS7o3qe3qeOs807VUcUBEMp/FBwAE0xuNqus6QJ3qAiB+YuwpGFD8M+AxJ
xh5+ELx0Ys2M1YBCXF3j84t+f3MQ+2vgha2Z66VkutRLSM6wz/9SM1USJNfS
AFZtkhrKucyDUixxAnq/LvXrdUEHin8mX6vqOZwp7hVlUVlwFHm6fxQtDBmA
iNxgcqiQAIJB2ICAAkciPh3Tv9PpVH+Wqsm96CcOnTi/ZYLSL8pbioVL5Qz2
kdaqsEbwAQbV/e8qiDPFagQBeBUXgM5Eno8Wq2Kdj7nEIHIDWCHxe9kigKYs
8xCAjWTuZFk75eJOTCme9qANdYX1AG3XVAXMTigzcl7B+cfWjJqrITf4J1uz
Q8br1LWgznwjDQU4jjSto2UUJ+8AqTq9mtKsrri1XLnDJuf1cknCeGt9iVC/
1qfbvcTHWde1V6IcvY40yhzgK5uHN4a5LMLwuOOZCL4MRO/zItecF1lFCKp9
rHlTnuFnn0HpALD1+ifr791OA1FnB9WPR4Y9JawuAAfA8NkK66l5nRwgbCuW
qpt9cO5Km9USiQSubRhsZqHqxHHae8bCzc8rKR6MJINGpbIHWqesLDmsBdVo
NQ8tjbBY3/ZF+/LyLS0I7L6XY58RwLOFtRzh6UR4NgSyRAF7jpTF4XjzMmvX
pP2HJWh+XUkZZmAeLXDPBSnFPoW0YahCi7qiudxV7Tr31HHlAaOIHxWjSFg8
LtoITMxCbH0vjB6UBy+Pd8a1FMI77Fp81/fP/brwatFrDm7wzOZWBFGqv9CQ
5ZkEUgwax0Kw1CXTcmu1A/22+zAROPIGhl+T0L2SFd5QQaBvOwtGgLy2A6zA
JIEtXHRTW3HtgH4ge9uMKmoYxh0xDrX5kYj+xuYFG2mCA31mCcRwXwk3FBv/
+TDwIJiDevn/gB1fwxzUFU1UHcNFdmuxLmv4yS1FwjxnyTuByvfFvFjaE1MQ
sTykVgebo4zt6W9HlKy7sxS6xkO4OTuQwpVjvx1NtOKoheZYis/eLZ9kWmjl
+9UKLtHYhK7Vxm9HH3dmh80CIadk8cEOyUihubrRIB2eq615zry+kG7gz1rD
hVkTRbJL0lboVwtk2QMgR13rLImXP2ok5v7RAJWQSd7P+nSxoqwcABsem76O
CuLi0r5kkELxypi/U2vsBuCE7E212baN4msdiviRRMkc8gOlHBaNacOL86lT
lJoOeGoiGoOqOm+vOCMh5g844B//+Edyj70AO3t0Yv4opvdPE3PEeRtHz6Qt
PZOcTdTOfOEOkjveZ1fUy5UfR0o/a7OfIzJX0nlo6ilNumSRDKrBVhk3NPc5
I+qdo+CLKCCl3CLFbT/DiBNH1dRpSmN4lub+0WLwSANi/WVn9MNLlIucBmY+
cDonYW+HDvJ8+UJ0Fl0DjTvoAH6u3XYKkfzFAvoSjFEM4zPvHmjAWu0aTqt6
TzcCPEMlO5FtIgeQODnHZSkfBAlt7GaOSVFczoVPJWREApy3crLF+obD3rHt
EoY2VIROlmxEaksyPmTgoH1TqCHHSYf3LfXRjaOmwolqACiq1uAzqcyWin2h
PrAAT//vs2/T40l3tAHj+RTWsvalreR/araUZMc3CAaIbNfUAB7Yhmx0tqGz
X05rQyQXrAXEhkvxgW0ihtQ2qhFxilQ5oXQhf4aW4vv+fPkm/aHTmQQ6FGOa
n//nmzdvXk2HKyBAlCO4EnGLFoaHVD+BbQ91f/wcXea8VoD8tAZoHYke81uO
lPjSeufDHS8VZPiIjfhxw1ARR8l9Knso632wFKbvVpnSH+UC2fqOSA8mPW0n
w8o+G4dYuAbJ4s9iNVkQWru8q5I+BSRDUJI51hpKQ3cq5NFnEPWFVhRlHGtI
+jUM890WlmbPpMnccjogVkuMksKQViF0nPWuu+BN7xTAkFlBLpbt778L0IOC
eiX6hl72qhRZ1YrK+KQ66Z+w3GQ/n3/X1uuRufjLLH367PnIHPnDpGrrbo+P
zL//u3ny+ckT+ven04uRvBkb/E90uISiWKyJ+5yh6o3mUwKjMCLFlLdZDkEa
S4EzzFzysCUzX7NkpNvY68nI58GCTSF0m8JxEMLDaAfgTQ2peiGjSn21vnF2
vDPYqRhbEm4izKsCvH94cl5+uT4C+4MdNMiKIIwQkXRJfEYpSQb1e96uFTVv
bOgQheLL/UNyIzlQOLs4e3IMkxFOHX75MpYDf1y5w8f76MCFq0odIT6msSny
tMncTf9kQPLfOhkgCRymJ8IsZzB8FedqxAon/pcyqqkmnWcJ+69HCg7CDigm
u15iYzouT2aaGNbIcTgYh51Gk/kUUzHvAisxMvsYVzzGJ1DN24qAXSh15GoR
1TmYXwe+GMaHgwXiHW+4JF1R+YHhyLBFp0jINSbfwJ9JmETnuEQsFZT5z6X4
lFSoP/DGeieCYWykTqQwkV1mMSsSACPiPbh5GZ2FSEDI0fnrj+/OLo9okkev
Xr//6xG1APsdW4ej6obK+ugYMkvfEbklEl8m7Y5dS75ZchTFjLlJVK9M7kdb
1jRjej0Wmup2bUUrS1SOKm/5TRJUg9dFEklUvDMoYpHOeg1EHuYwB8DRnh1e
zPTw1aFgI1wbYH55Hx+5JDdjiam+TDJWKo7OIL5UU1BSEbEormhpVBIYiXCc
A7Lly064IoXTh0kwdFpK3wVJ/AkKzfVRqJzGqysK1nBKqfvIUWQf3FRvzo9T
lFCgRMxV0ORK4SFV7l+pgiMPc3w1SbpEjCPssGe5MyqW2IO+X6bdPuswCxct
bLMdlRRy/Zjk7FiVeGSvdT16frziHCMtrpUNG6oQJIGHGX/YkntXRTjQn/GS
sxvXbQHRyAYSXOrpr7FwPCv3BJjzPlCbKq10uiacIOLNYUO8WeNJUbEwaTo9
OSL7+HJQVJ0knR6iE3rbrVQF6Nkw/plyipIkR/Q2JlpUEEnzztY3NEUqV6NM
lxMngc7Yw0mI6sbENPpgwZzPstFJooZzuuEAAZa8tIRV4Aj4asNIllk10bxT
jQfYKK3kAxGeFo+V6aCozXzEjb0Svz8xo+GBtEoX0cfk5BivHPjW7CsdYJWj
/2RnHPNZHHhPv2A2nS+Z0zCcRB6CApqwBgzlf4LIsLZ5XI4vUM8njieJt05e
CDhbzLE1cTfg3NTCm97iUdp/3hLaY9hZLkhlUt03/yrZZcO8fe8gNg2CqCd8
GWDiQSpAmgCO1JjokRoO49MG06Ai1mTtT4s+ClXw5szrkvtH+8U/sbHToAv/
8oWCPBvdKtEBgHAoTpBNhu0H8avp3GFtacUk8PfgaTra3XL5Al0lkV78cvaK
uPHb9NmTF/wLki3vv3yhVfuXFl4MnC7L3Fef8UK899mCb+DwBbwcngPH2jyc
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
9vbQfmEAAA==

-->

</rfc>
