<?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.43 (Ruby 4.0.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jimenez-core-coap-no-content-00" category="std" consensus="true" submissionType="IETF" updates="7641" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="CoAP No Content">The 2.06 (No Content) Response Code for the Constrained Application Protocol (CoAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-jimenez-core-coap-no-content-00"/>
    <author initials="J." surname="Jiménez" fullname="Jaime Jiménez">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <country>Finland</country>
        </postal>
        <email>jaime@iki.fi</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>D-28359 Bremen</city>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Web and Internet Transport</area>
    <workgroup>CoRE Working Group</workgroup>
    <abstract>
      <?line 46?>

<t>This document defines the 2.06 (No Content) response code for the Constrained Application Protocol (CoAP). The code indicates that the target resource exists but has no current representation to transfer. It allows a client to retrieve or observe a resource before that resource has any content, without the server signaling an error. This document updates RFC 7641 to allow 2.06 (No Content) notifications, and specifies how cross-proxies map the code to and from the HTTP 204 (No Content) status code.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jimenez-core-coap-no-content/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jaimejim/draft-jimenez-core-coap-no-content"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CoAP <xref target="RFC7252"/> defines a set of success response codes in <xref section="5.9.1" sectionFormat="of" target="RFC7252"/>. A GET request that succeeds returns 2.05 (Content) with a representation of the target resource. A GET request on a resource that does not exist returns 4.04 (Not Found). CoAP has no code for the case in between: the resource exists, but no representation of it is available yet, or the last representation has been removed or has expired.</t>
      <t>This case occurs in several CoRE applications. In the publish-subscribe architecture of <xref target="I-D.ietf-core-coap-pubsub"/>, a topic-data resource has no content between topic creation and the first publication. Because a GET or Observe registration on such a resource cannot succeed, that specification introduces a "half created" topic state, answers requests in that state with 4.04 (Not Found), and provides an "initialize" property so that a creator can install placeholder data. A client then has to infer the topic state from which operations fail. A sensor whose last reading has expired, or a resource whose value has been cleared, have the same gap.</t>
      <t>Servers fill the gap today in one of three ways, each with a drawback. A 4.04 (Not Found) response terminates an Observe registration (<xref section="4.2" sectionFormat="of" target="RFC7641"/>), so a subscriber cannot register interest until data exists and has to poll instead. A 2.05 (Content) response with an empty payload is ambiguous: a zero-length payload is a valid representation in some Content-Formats (for instance, an empty text/plain string), so the client cannot tell "the value is empty" from "there is no value". A 5.03 (Service Unavailable) response signals a server-side failure when no failure has occurred.</t>
      <t>HTTP addresses this case with 204 (No Content) (<xref section="15.3.5" sectionFormat="of" target="RFC9110"/>): the server has fulfilled the request and there is no content to send. The HTTP-to-CoAP mapping in <xref target="RFC8075"/> maps HTTP 204 only to 2.02 (Deleted) and 2.04 (Changed), which are not used in response to GET.</t>
      <t>This document defines 2.06 (No Content) for CoAP, specifies its use with GET, FETCH, and Observe, and gives the mapping to and from HTTP 204 (No Content). It does not change the semantics of any existing response code, and it does not define how a resource comes to have no representation; that is up to the application.</t>
    </section>
    <section anchor="terminology">
      <name>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 <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the terms "resource", "representation", "origin server", "proxy", and "cross-proxy" as defined in <xref target="RFC7252"/>, and "observer", "registration", and "notification" as defined in <xref target="RFC7641"/>.</t>
    </section>
    <section anchor="code">
      <name>The 2.06 (No Content) Response Code</name>
      <section anchor="semantics">
        <name>Semantics</name>
        <t>The 2.06 (No Content) response code indicates that the server has fulfilled the request, that the target resource exists, and that the resource has no current representation to transfer in the response.</t>
        <t>A server <bcp14>MUST NOT</bcp14> include a payload in a 2.06 (No Content) response. A server <bcp14>MUST NOT</bcp14> include a Content-Format Option or an ETag Option in a 2.06 (No Content) response, since there is no representation to describe or tag.</t>
        <t>A client that receives 2.06 (No Content) learns that the resource exists. If the client holds a representation of the resource from an earlier response, it <bcp14>MUST NOT</bcp14> treat that representation as the current state of the resource.</t>
      </section>
      <section anchor="methods">
        <name>Applicable Methods</name>
        <t>A server uses 2.06 (No Content) in response to GET and FETCH <xref target="RFC8132"/> requests. For FETCH, the code indicates that the target resource exists and the selected part of it has no representation.</t>
        <t>A server <bcp14>MUST NOT</bcp14> use 2.06 (No Content) in response to PUT, POST, PATCH, iPATCH, or DELETE requests. Those methods already have success codes that carry no payload: 2.04 (Changed) and 2.02 (Deleted).</t>
      </section>
      <section anchor="distinction">
        <name>Distinction from 2.05 (Content) and 4.04 (Not Found)</name>
        <t>A 2.05 (Content) response with a zero-length payload carries a representation of length zero in the indicated Content-Format. A 2.06 (No Content) response carries no representation at all. A server that has an empty representation of a resource, such as the empty CBOR array or an empty string, returns it with 2.05 (Content). A server that has no representation returns 2.06 (No Content).</t>
        <t>A 4.04 (Not Found) response indicates that the server has no resource at the target URI. A server <bcp14>MUST NOT</bcp14> return 2.06 (No Content) for a URI at which no resource exists.</t>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>A 2.06 (No Content) response is cacheable. Caches use the Max-Age Option to determine freshness (<xref section="5.6.1" sectionFormat="of" target="RFC7252"/>). A server <bcp14>SHOULD</bcp14> set Max-Age to the time after which it expects the resource may have a representation, if known. A cached 2.06 (No Content) response satisfies subsequent GET requests with the same cache key while it is fresh.</t>
        <t>A client <bcp14>MAY</bcp14> include ETag Options in a GET request on a resource that currently has no representation. Since none of the entity tags can match, the server responds with 2.06 (No Content).</t>
      </section>
      <section anchor="transition">
        <name>Endpoints That Do Not Implement This Document</name>
        <t>An endpoint that does not implement this document handles 2.06 (No Content) by the rule of <xref section="5.2" sectionFormat="of" target="RFC7252"/> for an unrecognized Success class code: the request succeeded, without further details. Since a 2.06 response carries neither a payload nor a Content-Format Option, such a client observes what it observes on a 2.05 (Content) response with an empty payload and no Content-Format Option, which is one of the responses listed in <xref target="introduction"/>. Receiving 2.06 therefore gives such a client the same information as the response it receives from a server that does not implement this document.</t>
        <t>A cache that does not implement this document does not store a 2.06 response, as <xref section="5.6" sectionFormat="of" target="RFC7252"/> requires for unrecognized Success class codes. A cache that does implement it stores the response per <xref target="caching"/>.</t>
        <t>An observer that does not implement this document remains registered on a 2.06 notification, since <xref section="4.2" sectionFormat="of" target="RFC7641"/> removes observers only on non-2.xx notifications, and treats the notification as an empty representation, as it would a 2.05 (Content) notification with an empty payload.</t>
        <t>For these reasons, a server that implements this document sends 2.06 (No Content) whenever <xref target="semantics"/> applies, without regard to what it knows about the client. A server has no signal of the capabilities of the client, and when a proxy is in the path it does not see the client at all. Each alternative response (<xref target="introduction"/>) is worse for clients that implement this document and no better for clients that do not.</t>
      </section>
    </section>
    <section anchor="observe">
      <name>Use with Observe</name>
      <t>Observe <xref target="RFC7641"/> is one consumer of 2.06 (No Content); the code itself is defined by <xref target="code"/> independently of it. The following subsections specify how registrations and notifications use the code.</t>
      <section anchor="observe-registration">
        <name>Registration</name>
        <t>A client registers interest in a resource that has no current representation by sending a GET request with an Observe Option set to 0. A server that supports this document and is willing to add the client to the list of observers responds with 2.06 (No Content) and includes an Observe Option. As with any 2.xx response that carries an Observe Option (<xref section="3.1" sectionFormat="of" target="RFC7641"/>), this confirms the registration.</t>
      </section>
      <section anchor="observe-notifications">
        <name>Notifications</name>
        <t><xref section="4.2" sectionFormat="of" target="RFC7641"/> states that a notification <bcp14>SHOULD</bcp14> have a 2.05 (Content) or 2.03 (Valid) response code. This document adds 2.06 (No Content) to that list.</t>
        <t>When the resource of an observed registration gains a representation, the server sends a 2.05 (Content) notification as usual. When the resource loses its representation, for instance because the data was removed or has expired, the server sends a 2.06 (No Content) notification that includes an Observe Option. The client remains on the list of observers. On receipt, the client discards the previously notified representation, per <xref target="semantics"/>.</t>
        <t>A 2.06 (No Content) notification follows the ordering rules of <xref section="3.4" sectionFormat="of" target="RFC7641"/> and the freshness rules of <xref section="3.2" sectionFormat="of" target="RFC7641"/>, using its Observe sequence number and Max-Age Option.</t>
      </section>
      <section anchor="observe-ct">
        <name>Content-Format Consistency</name>
        <t><xref section="4.2" sectionFormat="of" target="RFC7641"/> requires the Content-Format of a 2.xx notification to be the same as the one used in the initial response. This requirement does not apply to 2.06 (No Content) notifications, which carry no Content-Format Option.</t>
        <t>If the initial response to a registration is 2.06 (No Content), the Content-Format of the first 2.05 (Content) notification determines the Content-Format for all subsequent 2.05 (Content) notifications of that registration. A client that needs a specific Content-Format <bcp14>SHOULD</bcp14> include an Accept Option in the registration request, so that the server can reject the registration with 4.06 (Not Acceptable) if it cannot produce that format.</t>
      </section>
    </section>
    <section anchor="proxy">
      <name>Proxying and HTTP Mapping</name>
      <t>2.06 (No Content) is an end-to-end response code. A CoAP-to-CoAP proxy forwards it unchanged and caches it per <xref target="caching"/>.</t>
      <t>A proxy that does not implement this document forwards a 2.06 (No Content) response like any other response and does not cache it (<xref section="5.6" sectionFormat="of" target="RFC7252"/>). A proxy that implements this document does not translate 2.06 for clients that might not recognize it: the response code is end-to-end, and the proxy has no better knowledge of the client than the origin server has (<xref target="transition"/>).</t>
      <t><xref target="RFC8075"/> defines no mapping for CoAP response codes absent from Table 2, so the behavior of an HTTP-to-CoAP cross-proxy that does not implement this document is implementation-specific. A CoAP-to-HTTP cross-proxy that does not implement this document maps HTTP 204 (No Content) in response to GET to 2.05 (Content) with an empty payload, per <xref section="10.1.1" sectionFormat="of" target="RFC7252"/>.</t>
      <t>An HTTP-to-CoAP cross-proxy that implements this document maps a CoAP 2.06 (No Content) response to an HTTP 204 (No Content) response, as if Table 2 in <xref section="7" sectionFormat="of" target="RFC8075"/> contained that row. The proxy translates Max-Age into HTTP freshness information as specified in <xref target="RFC8075"/>.</t>
      <t>A CoAP-to-HTTP cross-proxy that implements this document (<xref section="10.1" sectionFormat="of" target="RFC7252"/>) maps an HTTP 204 (No Content) response to a GET request into a CoAP 2.06 (No Content) response. For other methods, the existing mappings to 2.04 (Changed) and 2.02 (Deleted) apply.</t>
    </section>
    <section anchor="example">
      <name>Example: Publish-Subscribe Topics</name>
      <t>This section is informative. Messages are written in the CoAP Diagnostic Message Notation <xref target="I-D.jimenez-core-coap-diag"/>. The section shows how a publish-subscribe broker following <xref target="I-D.ietf-core-coap-pubsub"/> could use 2.06 (No Content), assuming the broker creates the topic-data resource together with the topic.</t>
      <t>A subscriber reads the topic-data resource before any data has been published, then registers for notifications. Both requests succeed:</t>
      <figure anchor="fig-read">
        <name>Reading a Topic with No Data</name>
        <sourcecode type="coap"><![CDATA[
GET /ps/data/1bd0d6d

2.06 No Content
Max-Age: 600
]]></sourcecode>
      </figure>
      <figure anchor="fig-subscribe">
        <name>Subscribing to a Topic with No Data</name>
        <sourcecode type="coap"><![CDATA[
GET /ps/data/1bd0d6d
Observe: 0
Accept: 110 (application/senml+json)

2.06 No Content
Observe: 1
Max-Age: 600
]]></sourcecode>
      </figure>
      <t>A publisher then publishes the first value. Since the resource already exists, the broker returns 2.04 (Changed), and notifies the subscriber:</t>
      <figure anchor="fig-publish">
        <name>First Publication</name>
        <sourcecode type="coap"><![CDATA[
PUT /ps/data/1bd0d6d
Content-Format: 110 (application/senml+json)

[{"bn":"urn:dev:os:32473-123456","n":"temperature","u":"Cel","v":23}]

2.04 Changed
]]></sourcecode>
      </figure>
      <figure anchor="fig-notify">
        <name>Notification of the First Value</name>
        <sourcecode type="coap"><![CDATA[
2.05 Content
Observe: 2
Content-Format: 110 (application/senml+json)
Max-Age: 15

[{"bn":"urn:dev:os:32473-123456","n":"temperature","u":"Cel","v":23}]
]]></sourcecode>
      </figure>
      <t>If the data later expires, the broker sends a 2.06 (No Content) notification. The subscriber stays registered and stops using the value of 23 Cel:</t>
      <figure anchor="fig-expire">
        <name>Notification That the Data Has Expired</name>
        <sourcecode type="coap"><![CDATA[
2.06 No Content
Observe: 3
Max-Age: 600
]]></sourcecode>
      </figure>
      <t>With this code, the broker needs neither a separate "half created" state nor 4.04 (Not Found) responses on an existing topic, and subscribers can register at any time after the topic is created.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC7252"/> and <xref target="RFC7641"/> apply.</t>
      <t>A 2.06 (No Content) response tells the client that a resource exists at the target URI, which a 4.04 (Not Found) response would not. A server that does not want to disclose the existence of a resource to an unauthorized client <bcp14>MUST</bcp14> respond with the same code it uses for nonexistent resources, as it would for any other request from that client.</t>
      <t>A 2.06 (No Content) response carries no payload and is smaller than the request that triggered it, so it does not add an amplification vector. Observe registrations accepted on resources with no representation keep observer state on the server for longer than registrations that would otherwise fail with 4.04 (Not Found). Servers apply the same limits on the number of observers that they apply to any other resource (<xref section="7" sectionFormat="of" target="RFC7641"/>).</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="iana-codes">
        <name>CoAP Response Codes</name>
        <t>IANA is asked to add the following entry to the "CoAP Response Codes" registry within the "Constrained RESTful Environments (CoRE) Parameters" registry group, defined in <xref section="12.1.2" sectionFormat="of" target="RFC7252"/>:</t>
        <table anchor="tab-iana">
          <name>New CoAP Response Code</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">2.06</td>
              <td align="left">No Content</td>
              <td align="left">[RFC-XXXX]</td>
            </tr>
          </tbody>
        </table>
        <t>The code 2.06 is a suggested value; it is unassigned in the registry, and the registration policy is IETF Review or IESG Approval.</t>
        <t>Note to RFC Editor: replace [RFC-XXXX] with this document's number.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8710">
          <front>
            <title>Multipart Content-Format for the Constrained Application Protocol (CoAP)</title>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This memo defines application/multipart-core, an application-independent media type that can be used to combine representations of zero or more different media types (each with a Constrained Application Protocol (CoAP) Content-Format identifier) into a single representation, with minimal framing overhead.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8710"/>
          <seriesInfo name="DOI" value="10.17487/RFC8710"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="RFC8075">
          <front>
            <title>Guidelines for Mapping Implementations: HTTP to the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Castellani" initials="A." surname="Castellani"/>
            <author fullname="S. Loreto" initials="S." surname="Loreto"/>
            <author fullname="A. Rahman" initials="A." surname="Rahman"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="E. Dijk" initials="E." surname="Dijk"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>This document provides reference information for implementing a cross-protocol network proxy that performs translation from the HTTP protocol to the Constrained Application Protocol (CoAP). This will enable an HTTP client to access resources on a CoAP server through the proxy. This document describes how an HTTP request is mapped to a CoAP request and how a CoAP response is mapped back to an HTTP response. This includes guidelines for status code, URI, and media type mappings, as well as additional interworking advice.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8075"/>
          <seriesInfo name="DOI" value="10.17487/RFC8075"/>
        </reference>
        <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="I-D.ietf-core-coap-pubsub">
          <front>
            <title>A publish-subscribe architecture for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Michael Koster" initials="M." surname="Koster">
              <organization>Dogtiger Labs</organization>
            </author>
            <author fullname="Ari Keränen" initials="A." surname="Keränen">
              <organization>Ericsson</organization>
            </author>
            <date day="2" month="July" year="2026"/>
            <abstract>
              <t>   This document describes a publish-subscribe architecture for the
   Constrained Application Protocol (CoAP), extending the capabilities
   of CoAP communications for supporting endpoints with long breaks in
   connectivity and/or up-time.  CoAP clients publish on and subscribe
   to a topic via a corresponding topic resource at a CoAP server acting
   as broker.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-21"/>
        </reference>
        <reference anchor="I-D.jimenez-core-coap-diag">
          <front>
            <title>CoAP Diagnostic Message Notation</title>
            <author fullname="Jaime Jimenez" initials="J." surname="Jimenez">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   This document defines a text notation for representing Constrained
   Application Protocol (CoAP) request/response exchanges in Internet-
   Drafts and RFCs.  The notation balances human readability with
   mechanical validation: a reader can follow an exchange at a glance,
   and tooling can be built to parse the message structure and check
   each payload against its declared content format.  The notation is
   application-layer by default, with message-layer detail added only
   where an example depends on it.  It is a recommended convention for
   use in documents and with authoring tools such as kramdown-rfc, not a
   conformance target; it does not change CoAP or any on-the-wire
   encoding.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jimenez-core-coap-diag-01"/>
        </reference>
      </references>
    </references>
    <?line 241?>

<section anchor="alternatives">
      <name>Design Alternatives</name>
      <t>This appendix records the alternatives considered. It is to be removed before publication.</t>
      <dl>
        <dt>2.05 (Content) with an empty payload:</dt>
        <dd>
          <t>Requires no new code, but cannot distinguish an empty representation from an absent one, and constrains the Content-Format of an Observe registration before any data exists.</t>
        </dd>
        <dt>4.04 (Not Found):</dt>
        <dd>
          <t>Conflates "no resource" with "no content", and terminates Observe registrations, so subscribers have to poll until data appears.</t>
        </dd>
        <dt>5.03 (Service Unavailable) with Max-Age:</dt>
        <dd>
          <t>Signals a temporary server failure; caches and clients treat it as an error, and it also terminates Observe registrations.</t>
        </dd>
        <dt>Placeholder representation:</dt>
        <dd>
          <t>An application-defined "empty" value, as with the "initialize" property of <xref target="I-D.ietf-core-coap-pubsub"/>. Media types that have an empty, null, or undefined value can express the absence of content within the type. The meaning of that value is specific to each media type, existing media types cannot be retrofitted with one, and a generic client cannot recognize it.</t>
        </dd>
        <dt>Null media type:</dt>
        <dd>
          <t>A dedicated Content-Format that denotes the absence of content, sent in place of the requested representation. A response in this format conflicts with an Accept Option in the request. Introducing it would require changing the semantics of Accept to permit this format in any response or notification.</t>
        </dd>
        <dt>Multipart wrapper:</dt>
        <dd>
          <t>An application/multipart-core container <xref target="RFC8710"/> that holds either a marker for the absence of content or the intended representation, so that one Content-Format covers both states. The outer format is fixed, so the client can no longer select the representation format with the Accept Option.</t>
        </dd>
        <dt>2.04 (Changed) in response to GET:</dt>
        <dd>
          <t>Used for this purpose in early revisions of <xref target="I-D.ietf-core-coap-pubsub"/>. 2.04 (Changed) is defined for the result of PUT and POST, and reusing it for GET overloads its meaning.</t>
        </dd>
        <dt>Request option signaling support for 2.06:</dt>
        <dd>
          <t>Would follow the pattern by which 2.03 (Valid) and 2.31 (Continue) are only sent to clients that asked for them. Costs an option number and a byte per request to protect clients that already treat an unrecognized 2.xx as success (<xref section="5.2" sectionFormat="of" target="RFC7252"/>), and the fallback for requests without the option is the empty 2.05 (Content) response those clients receive without this document.</t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Mike Bishop suggested a No Content success code during the AD review of <xref target="I-D.ietf-core-coap-pubsub"/>. Michael Koster proposed a dedicated 2.06 code in issue 4 of the <xref target="I-D.ietf-core-coap-pubsub"/> repository, including the requirement that a client stop using a stale value.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61c23YbOXZ951cg9FqJnBFp3Wx3s2cmI1tytyfttmLJ05nM
mgewCiTRLhaYQpVktqx8TV7yHfNjOTegUMWLPFnxg02CVcDBwbnsc4FHo9Hg
dqJOB4Pa1oWZqOHNwqiT8dELdfCTU69dWZuyfqo+GL9ypTcwkhs1c5WqF/il
9HWlbWlydb5aFTbTtXWluqpc7TJXqIPX7vzq6XCgp9PKwDr4VbXzDnKXlXoJ
y+aVntWjX+zSlObXUeYqA3/p1ah08C89Oyp0bXw9GMAaZu6q9UT5Oh/A+kYv
J+rt5c2bgYbPsIWfzVTpMldv4cWqNLW6qXQJ9Ff1cHDnqk/zyjUrJObDpfoZ
vttyrr7HsUGzynGViXr54ux4MLg1ZWMmA6WW2hYThWT9wZp6NnbVHEbntl40
04n6RQPdQPuzx3cxGOimXrhqMhgp3vkf8WX1R7v82//ASzArzD1Rl5XNvHcl
fDe8OC3yB/vJjmcWRjPXlDUy4Y0tC9hsnO+1rjyspF65aqnLMkz4sbS3pvK2
/tt/1+pVZYBEdfMfb+Fn5KCpJ+rK+Xqms4U6PT06OzvCNWwNC1yMTr45ff6t
vJQu/b3BJdYwtFq4EoXnN2ffjs5Ojkcnx9+MXpx+e3I8bDeQ6an7Q/2rJeYN
SiSvBpqQvR/evH558vwEOaxX8h0OYKLc1Jvq1gwGtpz1Xvjm5fHRRC2borYr
XdUyeHwKs5g6W8j3o5fPJ2pR16vRUq9WcNA8/u0xvkzjHsgra+A2/PJ2dDHG
802ObtVMPZyx/Lh5tLnV88lgAEeLzILHri9/fAOc+AusMvp3+PPX4WAwGo2U
nqKqZCABNwvrFUh+A3PVKjcz0B9P+rSpd1XQu+z/oHdjhcpMb9oyx4doHV3T
JLWu5qAbsIJrqswo89n62qtpU6uF9qp0KmuqCkmszAqegk+8Su1UjQo1M9VY
va2VLgp355VWWWHxcfi9MnVlza0B2QtnCL/HpaYGdmKYlDiIi4I0KdGUQ3UH
6uUaJpamqJS381IXqK+6VKaqXIV7TNkpGoyHTEqM1BCBW5hbutrOhHf+kEyG
X5kMxmCCBbySVc770apyn3EEJIhoIYbitPD8rHJLGvzh5uZKnRyddVfwwLLG
0xtjFoOlzfMCBPoJWqfK5U1GPL1/YpOvD4MBWcr7exKyh4coJRo4USs3U77J
MuN9V0A8nDO8dG140ufjb8fH+LDMMlbn6vvLG3jnPxswpcx/msjkOFPdVKVH
Pj1HAZIt4CnQ2XVkACbdIkP9BeDB5NRpudwZlK2axS0uejZm1tXqDViXHESX
GBAEMRX+THuUZxCi+s6YckKDPSk+JDEu3Rayba1AXvQt2CQ9LYxaGxA1mbrQ
fkPakYQprAPjS3cLCgfP4pj5vLKVyceiz0SVy0Bl6BA8CH+lC/YxulVRDxpT
0lpgWArrFyOwLj6r7BQUpMoWtoaza0A3gNL7+5326OEBxBVkcGWzEci77moR
cYyOLzCJHwV5NrwpFF0kYmbBWTApTN9YvTKZbjyqK54kbPa96G9l5hatDjOy
RMFZpMebgbdxUZ4ORbpYn8Q+BRknQR4udDFjkkw+FApRYQyqor8DbxUEiVjK
8+HvLJN9kWEFBmW9tagJYCCGtrS1BXvxqxniDytT1WvlHU+leW3YIVAOC8DU
RaFWhc7MwhU5WBvkLIp0sGsLw+IAug/+yLDMJHSzNbhbWGAMLsYnrmYgajgN
yJSH1e4WzkdR0zkas0SeSBYTrvLTt7poTCuKWWE0PbvQt4btI/h+NdcrEMdr
MpWwrIXt4G9ztFsu12vkIvhpVl5w+upOr0FVDDp9UXNAMHdTnX1CevsMbm0N
wKqlLcnOAuu2CshBa4bOxidkhMQRPDzAUcEhgCkLol8F4eEp4LtF6IYmBKCG
LegkgoPCU5ZTWDnYIp4c8BEp7pmuSC9vDjzGcgUCsNLrwumczMByaueNawDx
afWrqdyoMOUcHk6fQe7bvG8XUMnd0gRbP3pD+MSrA7RTJE1lRpIsq9bmc/0M
pAvfA+dYzpkLZNFYvoQHtYFNDXGcTx1IoBmGLF74S0WjoOb0xBC3/nx8dKoO
8OwtSM3HMhq4hA3sPdmJoIyMvEW7Cg+ixblD8YY5w3fkMRk0tnLk4HSew2ye
YEQwesTcDc+XnP/x8/Hp+DmJQBdxgSRMUu+OK86aAgXX5GLW2ZGIvYr7DuYN
ZABOJGeggxSOajcizyFwjx3iKEWA4E3hk289tiuLNc4E0nOiDi5MYcAgPaU1
T0gFXi90OTdoYVi3QffIhYGZzHGBVi8cGs3xLoi3iUBQVpDcwwR4WBCiJvAV
pjtUby5vXv/A5k10jb/MAQ0zcAy7TVHJVkRCgC364Iw2Jkcgh4LnhDCMtA3n
7CAMXtgmc/DmCC6lzgBUg1SULNSGI/6OTTAwqVkRngQKEi85Rnx0Q0bGFW6+
BnhUt98ekL9GfTJrBdEcIJfhu4/XN8ND/lf99J4+f7j8t49vP1xe4OfrH85/
/DF+GMgT1z+8//jjRfupffP1+3fvLn+64JdhVHWGBsN3538eMieG769u3r7/
6fzHIbuo9NhRTGBvU8PWDPYPcqW0H4B7IrOXs3T+w6vXV8dnIJagMwBbT46P
vwXNkG/fHL88w2+onbwkiSt/BbatB8A38AY4FfqvTK8sODKEs155OBVwWaA3
wNF//guy568T9dtptjo++70M4K47g4FxnUFi3ObIxsvMyS1DW5aJLO2M99jd
pff8z53vgfnJ4G//pUBxHB1/8y+/H/QVsfGiLyhNIDdBXPGYuwKKI66yc4Jy
aJxwAAOBdTj4NjYAywy8Zj2QIxXALY+K46t4mdZJhqnSOGTLXNFvslp8RX7m
/gnqKujJkyfqOir2/ZPW8rIKPRZvbokaHzPVh48FmIdizOWhDeD6aMzJimYi
qcCV80BWEGh4JiuaHFFs9OQYi+zeMAO0XZN0nbx6v2IQXKF7v7zR8zDyyCJg
5mFO03FlmxsN5oGiEj2n/UUIShFzZsjyby6EuLD0W7jLvAfrP0sRB+JcvzO4
iy+TO0Egoyt4r0q2A44gcgsTcZHCznyalS4cLWPl3iJjElZJZmBc9s5A9J+j
1C7500NyzqTIm9vf9MUkbOQ/UZMwMQR2NkQVYwC2VfCuMbL/+lRJiKI8QIYM
bTsmoiTGFHHucmKrqKKvf3QrVx8BB1y9v8a/z4leK//CDi4uf7y8uUy2dUNB
g/AN3ALGGWt2xSFvwOkC2mGmq2qNxIqqTHqwJyChBBzxaV0QQmCQRzLSw9/4
3kYQcf8kb1+jM92P2rfCciTZmu2iK4/ia8FUhCPNe4osMcNOGyirbGqppqxX
YjOIkZzBEry/SVgLjw4leGa94Odfv3r/ASBDBWEa2xUe5ljhMCZKQLQYcHeY
to2STaqTDE93yySXu8O9/W6A1hHF6OrLxw9vt5lVJmMHGtb4Fs7DUDudXGwY
id5riFkRnIKn409BknadJUUr2cKgbRnT64ZhNtL7Tn8enQMQFitONpgBJxo/
4xclqsxBmll70cmspQcgeAfzdGFeQbg1Zvr1DONb3p3FNBgA/9p3De5Si7b2
5RvUfqY+lYDqKC+Bu8j37drDW56iCoy10T6A/U0ydJ6FKWYQaEZG1gsLRpiT
ZcSC1A0BDovOMXF/nv3fIxlAcQPFeoeNVNfkI8uYqYCTp+w6OkNPyRpQ3Wxx
mAoi7zj3UTk2BByE5rLMVw6wuAcDCYRcOIXS/na5KgzBQwKLFwEsQsyBiMMG
OwUaKe/3Mpk2TtDF/2A+82Krn5qu+bybQhJ9rVydJFLFClGqpgSX7+al/RVO
+zoY8EKLGQ8ZUOa45N8wOxQS6LOmQsSBQg2xvQ8cFqSyae6Mpcdb7FSSYm4F
QcGUBdEQsAoHQQFeMuAEG/0dGRp0IKXbtbDokFeJpIQJvSowkSQQupNbfxgD
WkYEhfaDOEBwjCoSHFF3dxSVI9agWkjTmpcEljFc6tjjx2SFlYuU7+tkKz7g
a6S7d5QU/HWsVSpVKCm2QkLhWB+RLR/tTEJYS5QVAnrcWMG+7++DZca4BbQn
REFfucMKy4aljylBzLxHdJ1GTAFU70k4Su7eRxo8R9EOE17l6GT8+fO2YhAh
Wt5a+qva7eaJ8eiiXVPkm+LemWWryAOr3nAxwiM/tWdiOsIUOeZ7LMNU2DZz
g8kCrEcAi5LcGydcjG/tBLBaVzl6q6C86Gpgs9NQhmOVSJydmHDOLAYlzPRK
T20BltP4OEZvMl8p06gVxc6ov4LSVrpedFJL3pg0Wgmg6xLz1brA2j4VhFu5
O+ir+lOc/s5VnstHPJHvsbGftmGjMzU1OuqN13KHtFEo/jEYrpABv38SRG4w
iGNJAB+MVQbUwmIVMmfjuL5LQpEaQosZvhUyAuA5QLEwuH9AWGZWcOTsTCns
4ETozGHBE80bef2MfTNnGNeUqUuzEF52nIh/BEZSuATf+SFN7sd9jtKJHhKE
ELTWt5l8uwkF9sf8sFeUaKr2dkBF0JzAYoFtiLhAdo/6YNg3K+z96GsLJTIR
MBRFSJ3meSpvgtrQkSB3W9vxCNjgmRke+U06gTwftrBWZHvaSC/EY3bbmykC
PRX8mRZVOCfvypnF7BZb5PZ4+Bx/6pxze5Cd84eT3GdNKYD3oYrWMWoCfgW8
9swfqNIJlSn+hAWVXrKpX8iHw9hmy2qp3uGpwI5+RlPSwc6Uvg6HlXeLUnPy
KJugOu0wIBu633JrVJBGgynaXL5wXnL4/UXSuhBYF66y4rtU3LrTfkeFeRd5
e5oZxMDtEcGbVsyDo3XldnEfq/clg5tVfZjqB8TxIKo5Sxrs9da6xhdrocT0
K2aHAgsSFzTeHrR1tsLGjBdxVW4qqkk0BbuWVCHOemIai9wxgtv6Wk+6D+Fs
qXAERxi4xpETBiXNEquVOHM3ZpSotAtUsU0HrWCZrRNNy+pH1CviM2n1Saek
NMIGXpEyQ0Sqgk7R1YQaFadBqBye5DxJ5WS9Lq5EcBCqYvvbZhiGxyTSVrAO
7JHMY58GsrtdLbVb9P5wBzPaJoZ9Chuj+a08pSirKNIQec9kgmh03TWuqpuj
LamlRsf+h/6aYidjhrlU5wC9V3WSSO7b7zbDHjoYEruAUXFlfgGZ2nwvdEu8
4OwOL8SlYUu5Sik8r7g3g+fmUIdgzhXiNO65yrmq+E7KjfdPCMOBPG9JYDJI
LnMsycI/fWt/ToXPWK9lMAir3pFJsVj55/Ikh4EZZ2xgfEtwIW9/XWAR19iX
qQcz+MmQg3YUC8dxpKWtn1JgBDQd7Aq2KDGUULcTu8c5KemAva5M3Qb+XNr5
olbcLCGBG1AQu6DS6o1P2H8YzSFTI9BLUC7i/MLkc9OF67hiKZY3qYXRy7Dl
JD/ygCmWzUJ7qHzDSqFEHUre/c41PfV0Ohg831AF4CQ2SEwNAArrKnHunUJ/
Uof7SgGwSQRLGjIKWppKJQn63z95t7XgseoE29fNdrteVBhcZ+yoOBofdzv7
KMLez5edokckaz6UPRpBvQU7ttZJPIBRkQPstiO+bFtAWgnBTg5uZGWb6u4Y
nAjhQRl89LcQTzimovXrvcxM6KUIBdTukmQw9p/yTlYddM8gVXRh42McYn+X
RjO0oUfZz7UqNkZS2GGfGPs0ZINehGp/AYf9O5n3y88atztRV9KReB07Em+w
tw2jBMPPPEhBXWJKjt1jY/ZYvYPD0HNUZuwnqmyNjejiymh/F1bPSwf0ZuFZ
DEgkqLzf3WGNSbsb8na8MDY2eOk52WyknFbuE4XuIQze20mJ/exFvr0Mh/IM
kTrFh4s4MfcsSifBlh7M2s0NHVRMrtNTXP1re96wKrd7EumRRhdEP8TmP9mv
BAZlEmqjae1AlbF6BRLTJvslNzwZDP4L/nC3PYris5V/hos8O57mR/mLXPx5
clFDtG+iXhwd0cuD+4l6MrPzEe5C0eWR3w0/SD+jZsnh/cMsFzD38OHRVQVu
T9TRgEHKRB0fH6mDpDPoGTiJZfGbX7wrn25SGSc43kNwKydCdZD3kAXYQfx5
5HzFjA9ffYJCqSEvJNg7gWGowoYuiESekrpcp9uszcvIGq3wdI7w6uMWZnYB
52Oc/Mv9cFoOJ0OgY5Kb24nzk9OTs5eno+OT07PnL4aHQ/y1Bq+Eba1NZWCk
gZHXpoBPt8PJyenDX+lAzpRsoMt1YVbg+Rvi1lXbeNwVD3KKG6d68vdtKorA
8fP/rw12tkRHsw47ShMrAUXxLv9ETZoPMQQidUanVkmI35WGrwvxxR621sTX
et3JltN1BrAsXgLatqMUs46nCnY26fF8uzKd7lEm3sBWHtyEEAUVSP0A5uuS
ExrIip/ZMlovXYXJ/jl0aotQ3qx0hXi41zDObSRYmtpZueaiU9n6SDK0ctMj
ss5L9CStx5jUKtdpsbZt80Z6eX1ynYAFmgorkxTp57HjGzut+BdptApfKfOb
PEipiFCXQao62eLgo/cWtrFd2Pcwe51mWkOzSr80H7tZ91T+uY6B+e5eTjXi
4DvNmVJMBmHuq8UklDDptD0IhGxKvgNHJadQUcbmAMmr9mvSnAnnnh92caUs
0Lbk+G7lhQunbfDGSEsu62CKlesYj7A26f9IK5IIgJa6KJgXIVBPrtTUECzN
SQctR+tpUQOTzPAS4qlWV24B1+Bdpm2t9HB05Ay5ABY3zFzabPL4ZMyqrbVJ
r1WZ5gqQOYUDEy30dxejHTAXiXt31nOP+PZbF+DrJCsuGaNwbIVdYgpNlpbE
WSeNHnIY6zbZ1Am4WWYO+gFEm/EmHXx7/tP5pv5ZXeoHyckB7uy0R4bfRxR4
ol3GKTBf4T+ZPC0EtAjS4I3HUBEYbplzGNi4Jj4J6B2mN/U+XF7fzJpCXZa3
tnIlxxcHeEPoqboCE7fELFU6Ed1TPex2g8bw4wRCwLRZAGz5F+7+/KIuqIOQ
M0lfgNAZCCNq45fBlxH9kX9Gm9/gEVaJL4kvUPDt/v4f8WojmKUvZP1rPR0h
F6PtN3dbeD0UA0hKTPPSjQrfgIJQfZ480nfSaAKWwWMpsU1ZBl606YtOamvl
wPNTDRHv/8LStxbIAPl+e3n9PXYTVg4WADkBgSXzg9cCL3MLyjZBxcHLPsnO
7qJXChHfP3kRXbm+h3djUOqAw0CnOm+rkChVSVHSh1gJ27PL3H6mdE3IlqcP
Rp8ATgW7862XdG4oB0gkkN7SGgy+Jm0wGUyAJZJMBktRAm/Y3eLtOMn6cTfe
vEFwtqt5LTSASo4G7C+fRxake2euesftoH5wE1u7+uYFtwDTzjgHMEzawYa8
52F7G0TaqZPLSVvNKVnk1PvzJSq5TZTcN+LGeqRqz+UaIiLgIyD2Ot6xQSzp
Kl2to93lizXfhVwmcTCk9qh5FrRAegvwamu8awHzuUe3BWReJXfXuieIlJ2X
6RWLUbAqQ7lcRIpIXjS63+335x67mYhpAIjZVb1ehSIhlwNFuA5Bo4qCGlfh
hIUKBqYZYTUkXNQE5Y1RRLjxkxhXXIBh8NLoEq10yMzHi1Mx/Q7HS9fclpG0
wyRzktArWkHqV1duhjkMQSRR7LWam9JUeKGyc3MrTciizYFtJnPTGYAx396K
KrDKwDxm1+YPFakfbJ8NV+x5IuyxUXBDzJb0cLJh42wNVYlBFOpYid5Vf6Cp
x/GyMlfGBB9I4YivEYUQo3ORSCZF5ULxrTs0YENAuW5J7GUvgIPvwu1+dVeh
Nlabcvws/g8AJIoxn4jp0lH8DWw7CyI1vMfQYqmrTwKIdoib/IJNDCCrmyXN
UIrBUlvvQDNHKGeKGRiumLOwukb6SpZ8A2pmP2MuZ+MuIFpsgWncYC4n0rXM
PE1U2c4pjiUgbxOBmylo5OhHrBEyE4CeVVOtHEsMNvzjAd1a34Yre1W/v17b
uRKYDOvDqeBUmLZAdeK2dk0lolB7pcfpAjIwEX0Z19RF0WFjH0KDqfR+xP8Y
QLo9aAIEHLjBnyUooP8HQFqN0AFjiwkHQZ2+BE6Xnh6zf7VlA3YeM5rUM+al
NaRTlGHkKFtc4uV1vh8QyEvqxhoWrblFLgYNDq0r3vzuzSopI3YO/UZQqgJr
Hzv6D3a1kT5twdMMwhaEMERqpwc4dHgJwTZtTd/VtFnTNYNAsvQ/JrN1Gxyf
gHCGOhNjXwBM3ZEHQJbMKpP/bgjEegKQ77AW9woAilslyFGnADW91qDypgrW
6PyCxBdB4eNuCwRBm0L9q6M8ADo852mh1mgThJVrIsAkD27mLNjh/VlmUFzn
EXiCA+Syb6Axrb+Hm+lsBTB9I9kbjTakkAzOePC/Xqbjf7hHAAA=

-->

</rfc>
