<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-jurkovikj-http-integrity-cache-00" category="std" consensus="true" submissionType="IETF" updates="9111">
  <front>
    <title abbrev="HTTP Cache Integrity Fields">Maintaining HTTP Integrity Fields in Cached and Cache-Generated Responses</title>

    <author initials="A." surname="Jurkovikj" fullname="Antun Jurkovikj">
      <organization></organization>
      <address>
        <email>antunjurkovic@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="August" day="20"/>

    <area>Web and Internet Transport</area>
    
    <keyword>HTTP, caching, integrity, digest</keyword>

    <abstract>


<?line 29?>

<t>HTTP caches update stored response fields, combine partial responses, and
construct responses from stored state.  Those operations can move an
Integrity field value onto content or representation data different from the
data to which the value originally applied.</t>

<t>This document updates RFC 9111 by defining field-specific maintenance rules
for Content-Digest, Repr-Digest, and Unencoded-Digest.  A cache either preserves
the association between each retained or emitted dictionary member and its
defined input, recomputes the member over the resulting input, or removes the
member.  The rules cover stored-field updates, 304 and HEAD freshening,
partial-response combination, cache-generated 304, HEAD, and 206 responses,
and content-coding transformations.  No new HTTP field, status code, cache
directive, validator, or digest algorithm is defined.</t>



    </abstract>



  </front>

  <middle>


<?line 45?>

<section anchor="introduction"><name>Introduction</name>

<t>HTTP Integrity fields associate digest values with specific kinds of data.
<spanx style="verb">Content-Digest</spanx> applies to the content of an HTTP message, while
<spanx style="verb">Repr-Digest</spanx> applies to the complete selected representation data
<xref target="RFC9530"/>.  <spanx style="verb">Unencoded-Digest</spanx> applies to complete selected representation
data after content codings have been removed
<xref target="I-D.ietf-httpbis-unencoded-digest"/>.</t>

<t>The distinctions matter when a cache changes the relationship between stored
metadata and bytes.  For example:</t>

<t><list style="symbols">
  <t>a <spanx style="verb">304 Not Modified</spanx> response has no content, but its fields can update a
stored <spanx style="verb">200 OK</spanx> response that has content;</t>
  <t>a HEAD response has no content, but RFC 9111 permits its fields to freshen a
stored GET response;</t>
  <t>multiple stored <spanx style="verb">206 Partial Content</spanx> responses can be combined into a
complete response or a larger partial response;</t>
  <t>a cache can construct a <spanx style="verb">206</spanx> response from a stored complete response; and</t>
  <t>an intermediary can transform content coding while preserving some
representation metadata.</t>
</list></t>

<t>RFC 9111 defines generic field-copying and stored-response maintenance rules.
Applying those rules without regard to the input defined for an Integrity
field can detach a digest value from that input.  A cache could then serve
correct bytes with a digest value for empty content, one constituent range, a
complete response rather than a generated range, or a differently coded
representation.</t>

<t>This document adds a narrow, field-specific exception to the RFC 9111 cache
state machine.  It does not change the data covered by any Integrity field and
does not require a cache to implement a digest algorithm.  Removal is always
the conservative fallback when a cache cannot establish the required
association.</t>

<section anchor="scope"><name>Scope</name>

<t>This document specifies cache behavior for:</t>

<t><list style="symbols">
  <t>updating stored response fields, including updates performed after <spanx style="verb">304</spanx>
validation and HEAD freshening;</t>
  <t>combining partial responses;</t>
  <t>constructing <spanx style="verb">304</spanx>, HEAD, and <spanx style="verb">206</spanx> responses from stored state;</t>
  <t>transforming content coding; and</t>
  <t>resolving dictionary-member conflicts created by those operations.</t>
</list></t>

<t>This document does not:</t>

<t><list style="symbols">
  <t>redefine <spanx style="verb">Content-Digest</spanx>, <spanx style="verb">Repr-Digest</spanx>, or <spanx style="verb">Unencoded-Digest</spanx>;</t>
  <t>change when a response can be stored, selected, validated, combined, or
reused;</t>
  <t>define validator-free proof that two representations have identical data;</t>
  <t>define new digest algorithms or require support for any particular digest
algorithm;</t>
  <t>define message authentication, authorization, or HTTP Message Signature
processing; or</t>
  <t>generalize these rules to fields other than the three named Integrity
fields.</t>
</list></t>

</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>Terms defined by HTTP Semantics <xref target="RFC9110"/>, HTTP Caching <xref target="RFC9111"/>, Digest
Fields <xref target="RFC9530"/>, Structured Fields <xref target="RFC9651"/>, and HTTP Unencoded Digest
<xref target="I-D.ietf-httpbis-unencoded-digest"/> are used as defined by those
specifications.</t>

<dl>
  <dt><strong>Covered Integrity field</strong></dt>
  <dd>
    <t>One of <spanx style="verb">Content-Digest</spanx>, <spanx style="verb">Repr-Digest</spanx>, or <spanx style="verb">Unencoded-Digest</spanx>.</t>
  </dd>
  <dt><strong>Integrity member</strong></dt>
  <dd>
    <t>One algorithm-keyed dictionary member of a covered Integrity field after the
field value has been combined and parsed according to its defining
specification.</t>
  </dd>
  <dt><strong>Defined input</strong></dt>
  <dd>
    <t>The sequence of octets to which the defining specification applies an
Integrity member's digest algorithm.  The defined input depends on the
field, as described in <xref target="field-inputs"/>.</t>
  </dd>
  <dt><strong>Association</strong></dt>
  <dd>
    <t>The relationship between an Integrity member and the defined input to which
that field occurrence applies.  Preserving association means preserving
that relationship through a cache operation.  It does not prove that the
sender calculated the member correctly or that the member authenticates the
data.</t>
  </dd>
  <dt><strong>Association witness</strong></dt>
  <dd>
    <t>Information sufficient under this document to establish that a member's
defined input is unchanged across a cache operation.</t>
  </dd>
  <dt><strong>Representation-selection context</strong></dt>
  <dd>
    <t>The target resource and selected stored response, including applicable
secondary cache-key selection, already determined by the RFC 9111 operation.
This document does not broaden that context or make a validator applicable
to another resource or variant.</t>
  </dd>
  <dt><strong>Participating source</strong></dt>
  <dd>
    <t>A stored or received response whose fields RFC 9111 would use in the cache
update, combination, or response-construction operation being performed.</t>
  </dd>
</dl>

</section>
<section anchor="integrity-association-requirement"><name>Integrity Association Requirement</name>

<t>When a cache operation would retain, install, or emit an Integrity member, the
cache <bcp14>MUST</bcp14> do one of the following:</t>

<t><list style="numbers" type="1">
  <t>establish that the member remains associated with the resulting response's
defined input using an association witness permitted for that field;</t>
  <t>calculate the member over the resulting response's defined input; or</t>
  <t>remove the member.</t>
</list></t>

<t>If no members remain in a covered Integrity field after applying this
requirement, the cache <bcp14>MUST</bcp14> remove that field.  A cache that does not implement
or support a member's digest algorithm can comply by removing the member; it
is not required to calculate or validate a digest.</t>

<t>This requirement is member-specific.  One algorithm member can be retained
while another member in the same field is removed.  Different covered
Integrity fields are evaluated independently because they can have different
defined inputs.</t>

<t>Association is distinct from digest correctness.  A cache can preserve a
member received from a sender without validating it when the defined input is
unchanged.  Conversely, a digest value that happens to be correct for some
other input cannot be moved to the resulting response merely because its
syntax and algorithm are valid.</t>

</section>
<section anchor="field-inputs"><name>Field Inputs and Association Witnesses</name>

<section anchor="content-digest"><name>Content-Digest</name>

<t><spanx style="verb">Content-Digest</spanx> applies to the actual content of the message in which the
field occurs <xref target="RFC9530"/>.  Its permitted association witnesses are:</t>

<t><list style="symbols">
  <t>direct calculation or validation over the exact resulting message content;
or</t>
  <t>proof that the resulting message content consists of exactly the same
octets, in the same order, as the content to which the retained member
applied.</t>
</list></t>

<t>A shared strong entity tag is neither necessary nor sufficient as a
<spanx style="verb">Content-Digest</spanx> association witness.  The same selected representation can
be conveyed in messages having different content, including a complete
response, a range response, and a response with no content.</t>

</section>
<section anchor="repr-digest"><name>Repr-Digest</name>

<t><spanx style="verb">Repr-Digest</spanx> applies to the complete coded selected representation data
<xref target="RFC9530"/>.  Its permitted association witnesses are:</t>

<t><list style="symbols">
  <t>direct calculation or validation over the exact complete selected
representation data; or</t>
  <t>within one RFC 9111 stored-response update, partial-response combination, or
cache response-construction operation, the same strong entity tag on the
source and resulting selected representations, compared using the strong
comparison function defined in Section 8.8.3.2 of RFC 9110 <xref target="RFC9110"/>.</t>
</list></t>

<t>The strong-validator witness applies only within the same representation
selection context used by the cache operation.  It does not make entity tags
portable between unrelated resources or representation-selection contexts.</t>

<t>An entity tag retained for upstream validation after a cache operation that
changed the complete coded selected representation data is not a
<spanx style="verb">Repr-Digest</spanx> association witness for the changed data.  That restriction
applies to later stored-response updates, partial-response combinations, and
response construction.  The witness becomes available again only when the
cache directly establishes that the resulting complete coded representation
data are the data identified by the tag.  A direct digest calculation or
validation over the resulting data remains sufficient independently of the
tag.</t>

<t>A weak entity tag, a modification date, a content length, or a validator-free
freshening path is not an association witness for installing a new
<spanx style="verb">Repr-Digest</spanx> member.  Those signals do not establish octet-for-octet identity
of the complete coded selected representation data.</t>

</section>
<section anchor="unencoded-digest"><name>Unencoded-Digest</name>

<t><spanx style="verb">Unencoded-Digest</spanx> applies to the complete selected representation data after
all content codings have been removed
<xref target="I-D.ietf-httpbis-unencoded-digest"/>.  Its permitted association witnesses
are:</t>

<t><list style="symbols">
  <t>direct calculation or validation over the exact decoded representation
data; or</t>
  <t>a permitted <spanx style="verb">Repr-Digest</spanx> association witness plus an identical effective,
ordered <spanx style="verb">Content-Encoding</spanx> decoding chain on the source and resulting
responses.</t>
</list></t>

<t>The effective decoding chain includes every input that the definition of each
content coding says can affect the decoded octets, including parameters
carried in other response fields or supplied by applicable context.
Content-coding names are compared case-insensitively and their order remains
significant, but equal names and order are not sufficient when a coding has
additional decoding inputs.  If the cache cannot identify and compare the
complete effective decoding configuration, this witness is unavailable.</t>

<t>Absence of <spanx style="verb">Content-Encoding</spanx> in the resulting stored response represents an
empty decoding chain.  Omission of <spanx style="verb">Content-Encoding</spanx> or of a coding's
auxiliary input from an updating response is not, by itself, evidence of an
empty or unchanged chain; the cache first applies the ordinary HTTP field
update rules to determine the resulting metadata.</t>

<t>A shared strong entity tag alone is not sufficient.  Representation data can
remain the same while response metadata changes how that data is decoded.</t>

</section>
</section>
<section anchor="updating-stored-response-fields"><name>Updating Stored Response Fields</name>

<t>This section adds a field-semantics exception to the field-update requirements
in Section 3.2 of RFC 9111.  A cache <bcp14>MUST</bcp14> apply the requirements in this
section whenever fields from a new response would add to or replace fields in
a stored response.</t>

<t>The cache <bcp14>MUST</bcp14> determine the source field value using the field-update
precedence of RFC 9111 before applying the member-level association rules in
this document.  If an updating response omits a covered field, ordinary HTTP
rules determine whether the stored field remains.  If the updating response
contains a covered field, its parsed dictionary key set replaces the stored
key set.  A key omitted from that present dictionary is withdrawn and <bcp14>MUST NOT</bcp14>
be restored from the replaced stored field.  An incoming member that lacks a
required association witness is recalculated or removed; removing it does not
revive a replaced member.</t>

<t>The cache <bcp14>MUST</bcp14> determine the resulting response and the defined input for each
covered Integrity field before it installs or retains that field's members.
Generic add-or-replace processing <bcp14>MUST NOT</bcp14> override the association
requirement in <xref target="integrity-association-requirement"/>.</t>

<section anchor="updating-content-digest"><name>Updating Content-Digest</name>

<t>When an update retains stored message content:</t>

<t><list style="symbols">
  <t>when the updating response omits <spanx style="verb">Content-Digest</spanx>, a previously stored
member can be retained when ordinary HTTP update rules retain the field and
the member remains associated with that exact content;</t>
  <t>when the updating response contains <spanx style="verb">Content-Digest</spanx>, a member from that
field <bcp14>MUST NOT</bcp14> be installed unless the updating message content and retained
content are exactly the same octets, or the cache recalculates or validates
the member over the retained content; and</t>
  <t>otherwise, the cache <bcp14>MUST</bcp14> remove the member.</t>
</list></t>

<t>In particular, a <spanx style="verb">Content-Digest</spanx> member for the empty content of a <spanx style="verb">304</spanx> or
HEAD response does not apply to non-empty content retained from a stored GET
response.</t>

</section>
<section anchor="updating-repr-digest"><name>Updating Repr-Digest</name>

<t>When an update retains complete selected representation data and the updating
response omits <spanx style="verb">Repr-Digest</spanx>, a cache can retain an already-associated stored
member when ordinary HTTP update rules retain the field.  When the updating
response contains <spanx style="verb">Repr-Digest</spanx>, the cache can install a member from that
field only when:</t>

<t><list style="symbols">
  <t>the cache directly establishes the exact complete representation data; or</t>
  <t>the stored and updating responses have the same strong entity tag under
strong comparison in the representation-selection context of the update,
and the tag is eligible under <xref target="repr-digest"/>.</t>
</list></t>

<t>If neither condition is satisfied, the cache <bcp14>MUST</bcp14> recalculate or remove the
incoming member.  It <bcp14>MUST NOT</bcp14> revive a replaced stored member or install the
updating member based only on a weak entity tag, modification date, content
length, or validator-free match.</t>

</section>
<section anchor="updating-unencoded-digest"><name>Updating Unencoded-Digest</name>

<t>The <spanx style="verb">Repr-Digest</spanx> update rules apply to the complete coded representation-data
part of the <spanx style="verb">Unencoded-Digest</spanx> witness.  In addition, the cache <bcp14>MUST</bcp14> establish
that the effective ordered content-coding decoding chain is unchanged, or it
<bcp14>MUST</bcp14> directly establish the exact decoded representation data.</t>

<t>If it cannot do so, it <bcp14>MUST</bcp14> follow the field-source precedence above and
recalculate or remove the applicable member.  It <bcp14>MUST NOT</bcp14> revive a replaced
stored member or install the updating member using a strong entity tag alone.</t>

</section>
</section>
<section anchor="freshening-stored-responses"><name>Freshening Stored Responses</name>

<section anchor="freshening-upon-validation-with-304"><name>Freshening upon Validation with 304</name>

<t>When a cache uses a <spanx style="verb">304 Not Modified</spanx> response to update one or more stored
responses as described in Section 4.3.4 of RFC 9111, it <bcp14>MUST</bcp14> apply
<xref target="updating-stored-response-fields"/> separately to each stored response being
updated.</t>

<t>The <spanx style="verb">304</spanx> response's message content is empty.  Therefore, a
<spanx style="verb">Content-Digest</spanx> member in that response is associated with empty content and
<bcp14>MUST NOT</bcp14> replace a stored member associated with non-empty retained content.
For <spanx style="verb">Repr-Digest</spanx> and <spanx style="verb">Unencoded-Digest</spanx>, the cache applies the
whole-representation witnesses in <xref target="field-inputs"/> and the conflict rules in
<xref target="member-conflicts"/>.</t>

<t>The selection of stored responses to update remains governed by RFC 9111.
This document constrains only the covered Integrity members installed or
retained after that selection.</t>

</section>
<section anchor="freshening-with-head"><name>Freshening with HEAD</name>

<t>When a cache uses a HEAD response to update or invalidate a stored GET
response as described in Section 4.3.5 of RFC 9111, it <bcp14>MUST</bcp14> apply
<xref target="updating-stored-response-fields"/>.</t>

<t>A HEAD response has no message content.  A <spanx style="verb">Content-Digest</spanx> member associated
with its empty content <bcp14>MUST NOT</bcp14> replace a stored member associated with
non-empty GET response content.  For <spanx style="verb">Repr-Digest</spanx>, an eligible matching strong
entity tag under <xref target="repr-digest"/> provides a whole-representation association
witness.  A weak entity tag, matching <spanx style="verb">Last-Modified</spanx>, matching
<spanx style="verb">Content-Length</spanx>, or a validator-free HEAD path does not provide that witness
for installing a new member.</t>

<t>For <spanx style="verb">Unencoded-Digest</spanx>, the cache additionally needs an unchanged complete
effective decoding configuration or direct decoded-data proof.  If HEAD
response metadata changes that configuration, or the cache cannot identify
all inputs to it, a shared strong entity tag alone is insufficient.</t>

<t>This document does not change RFC 9111's conditions for using HEAD to update or
invalidate a stored response.</t>

</section>
</section>
<section anchor="combining-partial-content"><name>Combining Partial Content</name>

<t>This section adds requirements for covered Integrity fields to Section 3.4 of
RFC 9111.  It applies when a cache combines stored partial responses into a
complete response or into a larger partial response.</t>

<t>The existing RFC 9111 requirement that the partial responses share the same
strong validator remains necessary.  It is not sufficient for every covered
Integrity field.</t>

<t>For the combined response:</t>

<t><list style="symbols">
  <t>a constituent <spanx style="verb">Content-Digest</spanx> member <bcp14>MUST NOT</bcp14> be copied onto the combined
content unless the constituent content is exactly the resulting content;
the cache <bcp14>MUST</bcp14> instead recalculate the member over the resulting content or
remove it;</t>
  <t>a <spanx style="verb">Repr-Digest</spanx> member can be retained when the eligible shared strong entity
tag and representation-selection context provide the witness in
<xref target="repr-digest"/>; and</t>
  <t>an <spanx style="verb">Unencoded-Digest</spanx> member can be retained only when the same witness plus
the effective ordered content-coding requirement in <xref target="unencoded-digest"/>
is satisfied.</t>
</list></t>

<t>These requirements apply whether the result is a complete <spanx style="verb">200</spanx> response or a
larger <spanx style="verb">206</spanx> response.  They do not change range-set combination, completeness,
or storage eligibility.</t>

</section>
<section anchor="constructing-responses-from-stored-state"><name>Constructing Responses from Stored State</name>

<t>A cache that constructs a response from stored state is the sender of that
response for the purpose of selecting which stored fields to emit.  It <bcp14>MUST</bcp14>
apply the association requirement to the response actually sent.</t>

<section anchor="generated-304-and-head-responses"><name>Generated 304 and HEAD Responses</name>

<t>When a cache generates a <spanx style="verb">304</spanx> response or a response to HEAD from a stored
response:</t>

<t><list style="symbols">
  <t>it <bcp14>MUST NOT</bcp14> copy a <spanx style="verb">Content-Digest</spanx> member for stored GET content onto the
generated response;</t>
  <t>it can omit <spanx style="verb">Content-Digest</spanx> or calculate it over the generated response's
empty content, subject to the field's defining rules; and</t>
  <t>it can emit an already-associated <spanx style="verb">Repr-Digest</spanx> or <spanx style="verb">Unencoded-Digest</spanx> member
when the selected representation and, for <spanx style="verb">Unencoded-Digest</spanx>, decoding-chain
association remain applicable.</t>
</list></t>

<t>This section does not require a cache to add a field that the applicable HTTP
response semantics permit it to omit.</t>

</section>
<section anchor="generated-206-responses"><name>Generated 206 Responses</name>

<t>When a cache generates a <spanx style="verb">206 Partial Content</spanx> response from a stored complete
or partial response:</t>

<t><list style="symbols">
  <t><spanx style="verb">Content-Digest</spanx> applies to the actual single-range or multipart message
content generated by the cache; the cache <bcp14>MUST</bcp14> calculate a member over that
exact content or remove it;</t>
  <t><spanx style="verb">Repr-Digest</spanx> can retain a member associated with the complete selected
representation data; and</t>
  <t><spanx style="verb">Unencoded-Digest</spanx> can retain a member associated with the complete decoded
selected representation data when its decoding-chain witness remains
applicable.</t>
</list></t>

<t>For a multipart response, the <spanx style="verb">Content-Digest</spanx> input includes the multipart
serialization actually sent, including its boundaries and per-part fields.
A digest for a complete stored response or for one range is not a digest for a
different generated range or multipart serialization.</t>

</section>
</section>
<section anchor="content-coding-transformations"><name>Content-Coding Transformations</name>

<t>When a cache transforms content coding while storing a response or constructing
a response from stored state, it <bcp14>MUST</bcp14> evaluate each covered Integrity field
against the transformed response:</t>

<t><list style="symbols">
  <t>if the actual outgoing message content changes, <spanx style="verb">Content-Digest</spanx> <bcp14>MUST</bcp14> be
recalculated over that content or removed;</t>
  <t>if the complete coded selected representation data changes, <spanx style="verb">Repr-Digest</spanx>
<bcp14>MUST</bcp14> be recalculated over that data or removed; and</t>
  <t><spanx style="verb">Unencoded-Digest</spanx> can be retained only when the cache establishes that the
complete decoded representation data are unchanged; otherwise, it <bcp14>MUST</bcp14> be
recalculated or removed.</t>
</list></t>

<t>A strong entity tag does not override these requirements.  In particular, it
does not prove that a <spanx style="verb">Content-Digest</spanx> remains applicable across a generated
range or that an <spanx style="verb">Unencoded-Digest</spanx> remains applicable across a changed
decoding chain.</t>

<t>When a transformation changes the complete coded selected representation
data, an upstream entity tag retained for validation <bcp14>MUST NOT</bcp14> later be used as
a <spanx style="verb">Repr-Digest</spanx> association witness for the transformed data.  The cache <bcp14>MUST</bcp14>
retain this restriction for as long as it retains the transformed state.  If
the required transformation provenance is unavailable, including after a
restart or restoration of stored state, the strong-validator witness is
unavailable and the cache <bcp14>MUST</bcp14> use direct proof, recalculate the member, or
remove it.</t>

<t>This document does not change the transformation controls in HTTP, including
<spanx style="verb">Cache-Control: no-transform</spanx>.</t>

</section>
<section anchor="member-conflicts"><name>Dictionary Members and Conflicts</name>

<t>Covered Integrity fields are dictionaries.  A cache <bcp14>MUST</bcp14> apply the following
rules independently to each algorithm key after parsing the field according to
its defining specification and applying the field-source precedence in
<xref target="updating-stored-response-fields"/>.  These rules do not union algorithm keys
from a field value that RFC 9111 replaces.  The cache applies these rules:</t>

<t>After a present updating field replaces a stored field under
<xref target="updating-stored-response-fields"/>, members from the replaced stored field
are not participating sources for purposes of this section.</t>

<t><list style="numbers" type="1">
  <t>If only one participating source supplies a member and the cache has the
field-specific association witness, the cache can retain that member.</t>
  <t>If multiple participating sources supply identical member values for the same
algorithm key and the cache has the required association witness, the cache
can retain one such member.</t>
  <t>If participating sources supply different member values for the same algorithm
key while claiming the same defined input, the cache <bcp14>MUST</bcp14> recalculate that
member or remove it.  It <bcp14>MUST NOT</bcp14> select one merely because it was received
most recently.</t>
  <t>Absence of the entire field from an updating response follows ordinary HTTP
update rules and is not, by itself, a member conflict.  When the updating
response contains the field, absence of an algorithm key from its parsed
dictionary withdraws that key from the resulting field.</t>
  <t>Members with different algorithm keys are independent.</t>
</list></t>

<t>A cache that cannot parse a covered field sufficiently to apply these rules
<bcp14>MUST</bcp14> remove that field when the cache operation would otherwise move it to a
different defined input.  This document does not change the defining
specification's handling of malformed fields on an otherwise unmodified
response.</t>

<t>An unsupported algorithm is not itself an association failure.  A cache can
carry an unsupported member through an operation that preserves its defined
input.  If the input changes or cannot be established, the cache <bcp14>MUST</bcp14> remove
the unsupported member because recomputation is unavailable.</t>

</section>
<section anchor="trailer-fields"><name>Trailer Fields</name>

<t>RFC 9111 requires trailer fields to be stored separately from header fields or
discarded.  This document does not change that rule.</t>

<t>Field placement does not change a covered Integrity field's defined input.
During initial storage and every stored-response update, a cache <bcp14>MUST</bcp14> keep a
retained trailer field separate from stored header fields or discard it.  The
association and conflict rules in this document do not authorize a merger in
stored state.  If a cache applies an update to separately stored trailer state,
it <bcp14>MUST</bcp14> apply the same field-source, association, and conflict rules within
that trailer state without merging the two sections.</t>

<t>When constructing a new outgoing response, a cache <bcp14>MAY</bcp14> merge a retained
trailer field into the outgoing header section only when the HTTP version,
response status, and covered field's defining specification permit that
placement and define the merger.  The cache <bcp14>MUST</bcp14> apply the same association
and conflict rules that would apply without the merger.  A generated <spanx style="verb">304</spanx>
response has no trailer section.  This output-only permission does not change
the storage rule in Section 3.1 of RFC 9111.</t>

</section>
<section anchor="examples"><name>Examples</name>

<t>The examples use <spanx style="verb">sha-256</spanx> members and small content solely to make every
defined input independently checkable.  They use the line-wrapping convention
from RFC 8792 <xref target="RFC8792"/>; the backslash and following indentation are not part
of the field value.</t>

<section anchor="bodyless-update"><name>Bodyless Update</name>

<t>Suppose a cache stores the content <spanx style="verb">abcdef</spanx> with:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
ETag: "v1"
Content-Length: 6
Content-Digest: \
  sha-256=:vvV+x/U6bUC+tkCngKY5yDvCmsipgW8fxsXG3Nk8RyE=:

abcdef
]]></sourcecode></figure>

<t>The cache later receives:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 304 Not Modified
ETag: "v1"
Content-Digest: \
  sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:
]]></sourcecode></figure>

<t>The member on the <spanx style="verb">304</spanx> applies to empty message content and cannot be
installed on the retained <spanx style="verb">abcdef</spanx> content.  Because the updating response
contains <spanx style="verb">Content-Digest</spanx>, its parsed key set replaces the stored key set.  The
cache therefore recalculates the <spanx style="verb">sha-256</spanx> member over <spanx style="verb">abcdef</spanx> or removes it.
Recalculation produces the value previously stored, but the cache does not
retain that previous member merely as a fallback.</t>

<t>The same result applies when the bodyless update is a HEAD response used under
Section 4.3.5 of RFC 9111.</t>

</section>
<section anchor="combining-two-partial-responses"><name>Combining Two Partial Responses</name>

<t>Suppose a cache receives two combinable partial responses with content <spanx style="verb">abc</spanx>
and <spanx style="verb">def</spanx>.  The <spanx style="verb">Content-Digest</spanx> value on the <spanx style="verb">abc</spanx> response is:</t>

<figure><sourcecode type="http"><![CDATA[
Content-Digest: \
  sha-256=:ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=:
]]></sourcecode></figure>

<t>The value on the <spanx style="verb">def</spanx> response is:</t>

<figure><sourcecode type="http"><![CDATA[
Content-Digest: \
  sha-256=:y4N5rCCYqhZQKeOTilHaC87PwAj9Z5X0AReGR/lsWzQ=:
]]></sourcecode></figure>

<t>Neither member applies to the combined content <spanx style="verb">abcdef</spanx>.  If the cache emits a
combined response with <spanx style="verb">Content-Digest</spanx>, it calculates:</t>

<figure><sourcecode type="http"><![CDATA[
Content-Digest: \
  sha-256=:vvV+x/U6bUC+tkCngKY5yDvCmsipgW8fxsXG3Nk8RyE=:
]]></sourcecode></figure>

<t>Otherwise, it removes the member.  A nonconflicting <spanx style="verb">Repr-Digest</spanx> for the
complete selected representation can remain when the shared strong-validator
witness applies.</t>

</section>
<section anchor="generating-a-range-response"><name>Generating a Range Response</name>

<t>Suppose a cache stores <spanx style="verb">abcdef</spanx> and generates a single-range <spanx style="verb">206</spanx> containing
<spanx style="verb">abc</spanx>.  The complete response's <spanx style="verb">Content-Digest</spanx> member for <spanx style="verb">abcdef</spanx> cannot be
copied.  If the generated <spanx style="verb">206</spanx> carries <spanx style="verb">Content-Digest</spanx>, its member is the
digest of <spanx style="verb">abc</spanx>:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-2/6
Content-Length: 3
Content-Digest: \
  sha-256=:ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=:

abc
]]></sourcecode></figure>

<t>A whole-representation <spanx style="verb">Repr-Digest</spanx> or <spanx style="verb">Unencoded-Digest</spanx> can remain when its
field-specific witness applies.</t>

</section>
</section>
<section anchor="implementation-and-test-considerations"><name>Implementation and Test Considerations</name>

<t>An implementation can comply without implementing any digest algorithm by
tracking the source and defined-input class of covered members and removing a
member whenever an allowed witness is unavailable.</t>

<t>A minimum test corpus ought to exercise:</t>

<t><list style="symbols">
  <t><spanx style="verb">304</spanx> and HEAD updates with absent, identical, and conflicting members;</t>
  <t>empty-content <spanx style="verb">Content-Digest</spanx> members applied to retained non-empty content;</t>
  <t>strong, weak, date-based, and validator-free update paths;</t>
  <t>combination into complete and larger partial responses;</t>
  <t>cache-generated single-range and multipart <spanx style="verb">206</spanx> responses;</t>
  <t>cache-generated HEAD and <spanx style="verb">304</spanx> responses;</t>
  <t>identity-to-coded, coded-to-identity, and coding-to-coding transformations;</t>
  <t>a transformed stored response followed by an upstream <spanx style="verb">304</spanx> carrying the
retained entity tag and a pre-transformation <spanx style="verb">Repr-Digest</spanx>;</t>
  <t>identical coding names with changed or unavailable auxiliary decoder inputs;</t>
  <t>identical, conflicting, withdrawn, malformed, and unsupported algorithm
members; and</t>
  <t>fields received in headers and trailers, including separate stored placement
and a permitted output-only merger.</t>
</list></t>

<t>Tests need to compare the final field values with the exact message content,
complete coded representation data, and complete decoded representation data
as applicable.  Status codes and cache-hit indicators alone are insufficient
to establish correct association.</t>

<section anchor="deployment-question"><name>Deployment Question</name>

<t>Section 4.3.5 of RFC 9111 permits a cache to update or invalidate stored <spanx style="verb">GET</spanx>
responses after receiving a successful response to HEAD.  A cache that
invalidates the stored response or obtains a complete response using <spanx style="verb">GET</spanx>
does not exercise the metadata-update path governed by
<xref target="freshening-with-head"/>.</t>

<t>The author is not aware of a documented deployed implementation that uses a
successful HEAD response to update a stored <spanx style="verb">GET</spanx> response while retaining its
content.  Implementation reports for that path are requested.  This absence
does not change the requirements for a cache that chooses the update path and
does not imply that the path is unused in all deployments.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Digest fields do not provide authenticity by themselves.  The security
considerations of RFC 9530 and HTTP Unencoded Digest continue to apply.</t>

<t>Recalculating, removing, or changing an Integrity field can cause an HTTP
Message Signature that covers that field to fail validation.  This document
does not change signature processing under RFC 9421 <xref target="RFC9421"/>.</t>

<t>Detaching an Integrity member from its defined input can cause a recipient to
reject correct content, accept an assertion about different data as though it
described the received data, or make different implementations reach
incompatible verification results.  The association requirement prevents a
cache from creating those outcomes through field maintenance or response
construction.</t>

<t>Removal is conservative with respect to association, but it can remove an
integrity signal on which an application expected to rely.  Applications that
require an Integrity field need to treat its absence according to the field's
defining specification and their own security policy.  This document does not
turn field presence into an authorization or authentication decision.</t>

<t>Recalculation can consume CPU and memory, especially for large representations
or multipart responses.  A cache can always choose removal instead.  An
implementation <bcp14>SHOULD</bcp14> bound buffering and digest work according to its
resource policy and <bcp14>MUST NOT</bcp14> weaken ordinary cache isolation, authorization,
or representation-selection boundaries to obtain an association witness.</t>

<t>A shared strong entity tag is used only as the narrow whole-representation
witness defined in this document.  It does not authenticate the response,
prove the sender's digest calculation, authorize cross-resource reuse, or
justify carrying <spanx style="verb">Content-Digest</spanx> across messages with different content.
An upstream tag retained after transformation is likewise not positive
evidence that the transformed representation data are unchanged.</t>

<t>An updating response that contains a covered dictionary controls the
algorithm keys retained from that field.  Treating an omitted key as withdrawn
prevents a cache from silently extending the sender's algorithm set with an
older member.  This is distinct from an update that omits the entire field,
which remains governed by the ordinary HTTP field-update rules.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests no IANA action.</t>

</section>
<section anchor="updates-to-rfc-9111"><name>Updates to RFC 9111</name>

<t>This document updates RFC 9111 in the following places:</t>

<t><list style="symbols">
  <t>Section 3.2 gains the exception for covered Integrity fields in
<xref target="updating-stored-response-fields"/>;</t>
  <t>Section 3.4 gains the combination requirements in
<xref target="combining-partial-content"/>;</t>
  <t>Sections 4.3.4 and 4.3.5 gain the freshening requirements in
<xref target="freshening-stored-responses"/>; and</t>
  <t>cache response construction, including Section 4 and Section 4.3.2, gains
the generated-response requirements in
<xref target="constructing-responses-from-stored-state"/>.</t>
</list></t>

<t>RFC 9111 Sections 3.1 and 3.3 remain inputs to these rules but are not
otherwise changed.  This document does not alter when incomplete responses
can be stored, combined, selected, validated, or reused.</t>

</section>
<section anchor="summary-of-required-outcomes"><name>Summary of Required Outcomes</name>

<t>The following table is non-normative.  The preceding sections define the
requirements.</t>

<texttable>
      <ttcol align='left'>Cache operation</ttcol>
      <ttcol align='left'>Content-Digest</ttcol>
      <ttcol align='left'>Repr-Digest</ttcol>
      <ttcol align='left'>Unencoded-Digest</ttcol>
      <c><spanx style="verb">304</spanx> or HEAD updates stored GET</c>
      <c>If the field is omitted, preserve an associated stored member; if present, apply its key set and recalculate or remove inapplicable members; do not install an empty-content member on non-empty content</c>
      <c>If the field is omitted, preserve an associated stored member; an updater member requires direct proof or an eligible strong validator with no intervening input-changing transformation</c>
      <c>Repr proof plus the complete unchanged decoding configuration, or direct decoded-data proof; present-field key replacement also applies</c>
      <c>Combine partial responses</c>
      <c>Recompute over combined content or remove</c>
      <c>Retain with whole-representation witness and no conflict</c>
      <c>Repr proof plus the complete unchanged decoding configuration and no conflict</c>
      <c>Generate HEAD or <spanx style="verb">304</spanx></c>
      <c>Omit or calculate over empty content; do not copy GET-content member</c>
      <c>Retain associated whole-representation member</c>
      <c>Retain associated whole-decoded-representation member</c>
      <c>Generate <spanx style="verb">206</spanx></c>
      <c>Recompute over exact single-range or multipart content, or remove</c>
      <c>Retain associated whole-representation member</c>
      <c>Retain associated whole-decoded-representation member</c>
      <c>Transform content coding</c>
      <c>Recompute over outgoing content or remove</c>
      <c>Recompute over resulting coded representation data or remove; a retained upstream tag is not a later witness</c>
      <c>Retain only with exact decoded-data proof; otherwise recompute or remove</c>
</texttable>

</section>
<section anchor="change-log"><name>Change Log</name>

<t>This is the initial <spanx style="verb">-00</spanx> revision.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>

<reference anchor="RFC9111">
  <front>
    <title>HTTP Caching</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
      <t>This document obsoletes RFC 7234.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="98"/>
  <seriesInfo name="RFC" value="9111"/>
  <seriesInfo name="DOI" value="10.17487/RFC9111"/>
</reference>

<reference anchor="RFC9530">
  <front>
    <title>Digest Fields</title>
    <author fullname="R. Polli" initials="R." surname="Polli"/>
    <author fullname="L. Pardue" initials="L." surname="Pardue"/>
    <date month="February" year="2024"/>
    <abstract>
      <t>This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields.</t>
      <t>This document obsoletes RFC 3230 and the Digest and Want-Digest HTTP fields.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9530"/>
  <seriesInfo name="DOI" value="10.17487/RFC9530"/>
</reference>

<reference anchor="RFC9651">
  <front>
    <title>Structured Field Values for HTTP</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
    <date month="September" year="2024"/>
    <abstract>
      <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
      <t>This document obsoletes RFC 8941.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9651"/>
  <seriesInfo name="DOI" value="10.17487/RFC9651"/>
</reference>


<reference anchor="I-D.ietf-httpbis-unencoded-digest">
   <front>
      <title>HTTP Unencoded Digest</title>
      <author fullname="Lucas Pardue" initials="L." surname="Pardue">
         <organization>Cloudflare</organization>
      </author>
      <author fullname="Mike West" initials="M." surname="West">
         <organization>Google</organization>
      </author>
      <date day="17" month="June" year="2026"/>
      <abstract>
	 <t>   The Repr-Digest and Content-Digest integrity fields are subject to
   HTTP content coding considerations.  There are some use cases that
   benefit from the unambiguous exchange of integrity digests of
   unencoded representation.  The Unencoded-Digest and Want-Unencoded-
   Digest fields complement existing integrity fields for this purpose.

   This document updates the definitions of the terms &quot;Integrity fields&quot;
   and &quot;Integrity preference fields&quot; originally defined in RFC 9530.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-unencoded-digest-05"/>
   
</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 title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8792">
  <front>
    <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <author fullname="Q. Wu" initials="Q." surname="Wu"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8792"/>
  <seriesInfo name="DOI" value="10.17487/RFC8792"/>
</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>




    </references>

</references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA71d63bb1pX+f54C4/zwWg6pWL7FkdvOKJLtqI3txJbrpjOz
RiAJiohJgAVAyYybPss8yzzZ7NvZZ58DkLLbzvxoKpPgue7rty8Yj8euK7tl
cZTdepGXVQf/K6vL7Lvz8x+ys6orLpuy22bPymI5a7Oyyk7y6aKYZXk14z/H
z4uqaPIOPntdtOu6aov2lssnk6a4gjFpHHqwN9otN6unVb6CqWdNPu/GP2+a
9/VV+f7n8aLr1uPSPz+e0kR377opzHNZN9ujrO1mrlw3R1nXbNru3t2739y9
59rNZFW2bVlX3XYNw549PX/m2g7W+l/5sq7gk23RuhkMcpTdu3vv0fju4/G9
uy5vivwoe1dMaFe4zKYquuy8ySvYUNO598X2um5mR3QqowyXA2c0ynSFo2xW
XhZt5zZrHL09yr45PDx0Lt90i7o5ctk4440eV92myn7vN+qyLCtWebk8gqnh
GzmB6b9d4ocH03rlXFU3q7wrrwoYJnv97ARGvhv+PPR/Pryvnz56SJ+ejU8P
yqKb02lOyna8qYpqWs+K2ZhXe+RcWc2T4R9//c09P9CDezCQG4/HWT5puyaf
ds7RhdKFtBnvFu6ibuD6G7n+bE7XC+dUryZlVWTrvOnKfKkPwFdw0G4Kf8Pt
TbvwRTZv6pUfDy6uKw6y7HxRw6D1GqkMrraF2atsVV8VMIoLREWzZlf5cgMP
V10N08N3VZfVDUywhjngHzRCBqvO4cbm86LBB2jSblE4+hx+eb0opwv8xA/X
lJdllS+X2yxfr5dlMTtw7nxRthlQ8GaFY8jF47HR3WeTbTYr5sxMtLRxuy6m
5bycZivks6LKq2mRNZslkCRcQnbCyx2f0t2MgJvWjf4DCfOtXh9/CkdzzDeR
FSUstslok80VDIhrz9u2npa840nRXRdFlRXwOJwGcjmcMMxarMoOeXdWTvHB
vNlmq2I1gcFwyrIDdsFdwBNltd7ASpoCrhX+gr3iJPIw3EZD/4YVbJYdblqe
p9PH26LnHT9Ptyqbh3vCH/Olj/kW5TRH2f27D2gh3z09PoV7KtpFgSc6ckJT
YyU6JjbaLXNoMb5UyQTDjGgMPsl7dx8ZYnT4kRDLGA4YF98h7wtrwFOw3pd1
VhXXLBdpkSMi0A2uf1bIlG5WwvkgN42QdErYRd3QGTDHZfkSxBdc1ipD4uGT
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
JRzF2VVkm9vDfl8Ua7JexaaPzkRPIXKw06PI5ChY5IKVYRsgShlMkuGQdcmJ
MRAhTeQYoyLcHgympPv12Vw3ELopeXEKV2guTn7pt8QGuIvC/0HlWJNtZPlm
NLQFLr6VZC07vjZpwA14nYYN/MRCab2bFnVU5HC0Igq2wFzu6vgnPhICRCRZ
N76r0sfQdBi5KI+zxh46JXRiSwjcooFQqYez37ORvbd3Wr+CtZImDpSNA0jT
QPZK8D57zlx6CzaBYODYOaTPNSIcE5LTjqY4NsgVd8BM8zb0yopQWQsECSMB
a43poGhXXAOVMKnzqaLIbriuLCqVOYxKZVASPeXOxq0P9PK/yJW7aBf5+N7D
RxdqG1MPppUtrGzrpWRocV02MrdLmn1ETg4c7vQ9yUGJc0kzkwxb3I2vGzg6
CWpKk0R2I3DN2O2eK9LxL4we4u+wAWq7zNsFrU49LJpWAwTGaPf1qsYtYfz9
23q2pWjuW664cW9QvLcB8ieWjbtNXOSTKeyWMikX4Kb87W9/y7CMlBqBf3UI
582dnd3T8/zyKLt1dXhLywk5deQoe+RipOYo+w/EiPnsf3t0dfXHLz989fbR
5O3Jl937k+ryDz893J5enazacn357vH8Q/un5/dfvn/8evv0t7ACXhAuxBZ/
MOohRmQ7uNA0HXBoyYMLfPD16dMf1z8//u7bN/mXX52frd59+fD3J8Xmx+L1
+9XDly/Wv3/35+f3F282z97CAnVh3ihmjufwmok4cPxpqB5AFbUz2V4+iVk0
hd5LSDf6NjTO2Vd41C9sMJVHe8qNslBudK6l7Z1PMIzrEGjDCXMxzqnrNp34
ESF5Xdhi4jV1nJeB2LHulZNwcWmwXkyxUHAB/a/8GsT3yKk6T5oL+9w+buNA
ke0oDYV40LOOqLqynzFHcBu74zvT3w6kT47PrTkH1eTDWyYelvKlJ2tSZRIe
nyyH0lHI+Le8e0GC/AKPXMR/Dzb1L6ngW8Pf2FRQy0p7uWRTXb67evD421++
XH/749vT4k/5g/Ls6+PTn/JX757d/8u0+/b0q5/mZ8fP8ruWS+LZiTT+ntm3
D14+bE5OfvrL4s8//qF4dV4uv8tBiv5wffzzN39++Ke7x6+L56+/WrbvfvnR
z/5ScvU9CNErxJ/YJFWl3LTyuOASQtdLyuHLGGK3EA/89A1+npSkDb6KUHvz
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
+lJsKSlR9ymJF2Oux78S1/J/AXentmBchQAA

-->

</rfc>

