<?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.6.24 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-connect-udp-listen-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="CONNECT-UDP Listen">Proxying Listener UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-schinazi-connect-udp-listen-02"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Singh" fullname="Abhi Singh">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>abhisinghietf@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="02"/>
    <area>Transport</area>
    <workgroup>MASQUE</workgroup>
    <keyword>quic</keyword>
    <keyword>http</keyword>
    <keyword>datagram</keyword>
    <keyword>udp</keyword>
    <keyword>proxy</keyword>
    <keyword>tunnels</keyword>
    <keyword>quic in quic</keyword>
    <keyword>turtles all the way down</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <keyword>listen</keyword>
    <abstract>
      <t>The mechanism to proxy UDP in HTTP only allows each UDP Proxying request to
transmit to a specific host and port. This is well suited for UDP client-server
protocols such as HTTP/3, but is not sufficient for some UDP peer-to-peer
protocols like WebRTC. This document proposes an extension to UDP Proxying in
HTTP that enables such use-cases.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://DavidSchinazi.github.io/draft-schinazi-connect-udp-listen/draft-schinazi-connect-udp-listen.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-connect-udp-listen/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        MASQUE Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DavidSchinazi/draft-schinazi-connect-udp-listen"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The mechanism to proxy UDP in HTTP <xref target="CONNECT-UDP"/> allows creating
tunnels for communicating UDP payloads <xref target="UDP"/> to a fixed host and
port. Combined with the HTTP CONNECT method (see <xref section="9.3.6" sectionFormat="of" target="HTTP"/>), it allows proxying the majority of a Web Browser's HTTP
traffic. However WebRTC <xref target="WebRTC"/> relies on ICE <xref target="ICE"/> to provide
connectivity between two Web browsers, and ICE relies on the ability to send and
receive UDP packets to multiple hosts. While in theory it might be possible to
accomplish this using multiple UDP Proxying HTTP requests, HTTP semantics
<xref target="HTTP"/> do not guarantee that distinct requests will be handled by the same
server. This can lead to the UDP packets being sent from distinct IP addresses,
thereby preventing ICE from operating correctly. Consequently, UDP Proxying
requests cannot enable WebRTC connectivity between peers.</t>
      <t>This document describes an extension to UDP Proxying in HTTP that allows sending
and receiving UDP payloads to multiple hosts within the scope of a single UDP
Proxying HTTP request.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This document uses terminology from <xref target="CONNECT-UDP"/> and notational conventions
from <xref target="QUIC"/>. This document uses the terms Integer and List from
<xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/> to specify syntax and parsing.</t>
      </section>
    </section>
    <section anchor="mechanism">
      <name>Proxied UDP Listener Mechanism</name>
      <t>In unextended UDP Proxying requests, the target host is encoded in the HTTP
request path or query. For Listener UDP Proxying, it is instead conveyed in each
HTTP Datagram, see <xref target="format"/>.</t>
      <t>When performing URI Template Expansion of the UDP Proxying template (see
<xref section="3" sectionFormat="of" target="CONNECT-UDP"/>), the client sets both the target_host and the
target_port variables to the '*' character (ASCII character 0x2A).</t>
      <t>Before sending its UDP Proxying request to the proxy, the client allocates an
even-numbered context ID, see <xref section="4" sectionFormat="of" target="CONNECT-UDP"/>. The client then adds
the "connect-udp-listen" header field to its UDP Proxying request, with its
value set as the allocated context ID, see <xref target="hdr"/>.</t>
    </section>
    <section anchor="format">
      <name>HTTP Datagram Payload Format</name>
      <t>When HTTP Datagrams <xref target="HTTP-DGRAM"/> associated with this Listener UDP
Proxying request contain the context ID in the connect-udp-listen header field,
the format of their UDP Proxying Payload field (see <xref section="5" sectionFormat="of" target="CONNECT-UDP"/>) is defined by <xref target="dgram-format"/>:</t>
      <figure anchor="dgram-format">
        <name>Listener UDP Proxying HTTP Datagram Format</name>
        <artwork type="ascii-art"><![CDATA[
Listener UDP Proxying Payload {
  IP Version (8),
  IP Address (32..128),
  UDP Port (16),
  UDP Payload (..),
}
]]></artwork>
      </figure>
      <dl>
        <dt>IP Version:</dt>
        <dd>
          <t>The IP Version of the following IP Address field. <bcp14>MUST</bcp14> be 4 or 6.</t>
        </dd>
        <dt>IP Address:</dt>
        <dd>
          <t>The IP Address of this proxied UDP packet. When sent from client to proxy,
this is the target host to which the proxy will send this UDP payload. When sent
from proxy to client, this represents the source IP address of the UDP packet
received by the proxy. This field has a length of 32 bits when the corresponding
IP Version field value is 4, and 128 when the IP Version is 6.</t>
        </dd>
        <dt>UDP Port:</dt>
        <dd>
          <t>The UDP Port of this proxied UDP packet in network byte order. When sent from
client to proxy, this is the target port to which the proxy will send this UDP
payload. When sent from proxy to client, this represents the source UDP port of
the UDP packet received by the proxy.</t>
        </dd>
        <dt>UDP Payload:</dt>
        <dd>
          <t>The unmodified UDP Payload of this proxied UDP packet (referred to as "data
octets" in <xref target="UDP"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="hdr">
      <name>The connect-udp-listen Header Field</name>
      <t>The "connect-udp-listen" header field’s value is an Integer. It is set as the
Context ID allocated for Listener UDP Proxying; see <xref target="mechanism"/>. Any other
value type <bcp14>MUST</bcp14> be handled as if the field were not present by the recipients
(for example, if this field is defined multiple times, its type becomes a List
and therefore is to be ignored). This document does not define any parameters
for the connect-udp-listen header field value, but future documents might define
parameters. Receivers <bcp14>MUST</bcp14> ignore unknown parameters.</t>
    </section>
    <section anchor="proxy-behavior">
      <name>Proxy behavior</name>
      <t>After accepting the Connect-UDP Listener proxying request, the proxy uses a UDP
port to transmit UDP payloads received from the client to the target IP Address
and UDP Port specified in each Listener Datagram Payload received from the
client. The proxy uses the same port to listen for UDP packets from any
authorized target and encapsulates the packets in the Listener Datagram
Payload format, specifying the IP and port of the target and forwards it to
the client.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations described in <xref section="7" sectionFormat="of" target="CONNECT-UDP"/> also apply
here. Since TURN can be run over this mechanism, implementors should review the
security considerations in <xref section="21" sectionFormat="of" target="TURN"/>.</t>
      <t>Since unextended UDP Proxying requests carry the target as part of the request,
the proxy can protect unauthorized targets by rejecting requests before creating
the tunnel, and communicate the rejection reason in response header fields.
Listener UDP Proxying requests do not have this ability. Therefore, proxies <bcp14>MUST</bcp14>
validate the target on every datagram and <bcp14>MUST NOT</bcp14> forward individual datagrams
with unauthorized targets. Proxies can either silently discard such datagrams or
abort the corresponding request stream.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document will request IANA to register the following entry in the "HTTP
Field Name" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/http-fields"/>&gt;:</t>
      <dl spacing="compact">
        <dt>Field Name:</dt>
        <dd>
          <t>connect-udp-listen</t>
        </dd>
        <dt>Template:</dt>
        <dd>
          <t>None</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional (permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comments:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="CONNECT-UDP">
          <front>
            <title>Proxying UDP in HTTP</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes how to proxy UDP in HTTP, similar to how the HTTP CONNECT method allows proxying TCP in HTTP. More specifically, this document defines a protocol that allows an HTTP client to create a tunnel for UDP communications through an HTTP server that acts as a proxy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9298"/>
          <seriesInfo name="DOI" value="10.17487/RFC9298"/>
        </reference>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <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 that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <author fullname="L. Pardue" initials="L." surname="Pardue">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="WebRTC" target="https://www.w3.org/TR/webrtc/">
          <front>
            <title>WebRTC</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="January" day="26"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
        <reference anchor="ICE">
          <front>
            <title>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg">
              <organization/>
            </author>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <date month="July" year="2018"/>
            <abstract>
              <t>This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based communication.  This protocol is called Interactive Connectivity Establishment (ICE).  ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN).</t>
              <t>This document obsoletes RFC 5245.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8445"/>
          <seriesInfo name="DOI" value="10.17487/RFC8445"/>
        </reference>
        <reference anchor="TURN">
          <front>
            <title>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="T. Reddy" initials="T." role="editor" surname="Reddy">
              <organization/>
            </author>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston">
              <organization/>
            </author>
            <author fullname="P. Matthews" initials="P." surname="Matthews">
              <organization/>
            </author>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <date month="February" year="2020"/>
            <abstract>
              <t>If a host is located behind a NAT, it can be impossible for that host to communicate directly with other hosts (peers) in certain situations. In these situations, it is necessary for the host to use the services of an intermediate node that acts as a communication relay. This specification defines a protocol, called "Traversal Using Relays around NAT" (TURN), that allows the host to control the operation of the relay and to exchange packets with its peers using the relay. TURN differs from other relay control protocols in that it allows a client to communicate with multiple peers using a single relay address.</t>
              <t>The TURN protocol was designed to be used as part of the Interactive Connectivity Establishment (ICE) approach to NAT traversal, though it can also be used without ICE.</t>
              <t>This document obsoletes RFCs 5766 and 6156.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8656"/>
          <seriesInfo name="DOI" value="10.17487/RFC8656"/>
        </reference>
        <reference anchor="CONNECT-IP">
          <front>
            <title>Proxying IP in HTTP</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Alex Chernyakhovsky" initials="A." surname="Chernyakhovsky">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Magnus Westerlund" initials="M." surname="Westerlund">
              <organization>Ericsson</organization>
            </author>
            <date day="1" month="March" year="2023"/>
            <abstract>
              <t>   This document describes how to proxy IP packets in HTTP.  This
   protocol is similar to UDP proxying in HTTP, but allows transmitting
   arbitrary IP packets.  More specifically, this document defines a
   protocol that allows an HTTP client to create an IP tunnel through an
   HTTP server that acts as a proxy.  This document updates RFC 9298.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-08"/>
        </reference>
      </references>
    </references>
    <section anchor="example">
      <name>Example</name>
      <t>In the example below, the client is configured with URI Template
"https://example.org/.well-known/masque/udp/{target_host}/{target_port}/" and
wishes to use WebRTC with another browser over a listener UDP Proxying tunnel.
It contacts a STUN server at 192.0.2.42. The STUN server, in response, sends the
proxy's IP address to the other browser at 203.0.113.33. Using this information,
the other browser sends a UDP packet to the proxy, which is proxied over HTTP
back to the client.</t>
      <artwork type="ascii-art"><![CDATA[
 Client                                             Server

 STREAM(44): HEADERS            -------->
   :method = CONNECT
   :protocol = connect-udp
   :scheme = https
   :path = /.well-known/masque/udp/*/*/
   :authority = proxy.example.org
   connect-udp-listen = 2
   capsule-protocol = ?1

 DATAGRAM                       -------->
   Quarter Stream ID = 11
   Context ID = 2
   IP Version = 4
   IP Address = 192.0.2.42
   UDP Port = 1234
   UDP Payload = Encapsulated UDP Payload

            <--------  STREAM(44): HEADERS
                         :status = 200
                         capsule-protocol = ?1

/* Wait for STUN server to respond to UDP packet. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 192.0.2.42
                         UDP Port = 1234
                         UDP Payload = Encapsulated UDP Payload

/* Wait for the STUN server to send the proxy's IP and */
/* port to the other browser and for the other browser */
/* to send a UDP packet to the proxy. */

            <--------  DATAGRAM
                         Quarter Stream ID = 11
                         Context ID = 2
                         IP Version = 4
                         IP Address = 203.0.113.33
                         UDP Port = 4321
                         UDP Payload = Encapsulated UDP Payload
]]></artwork>
    </section>
    <section anchor="comparison-with-connect-ip">
      <name>Comparison with CONNECT-IP</name>
      <t>While the use-cases described in <xref target="intro"/> could be supported using IP Proxying
in HTTP <xref target="CONNECT-IP"/>, it would require that every
HTTP Datagram carries a complete IP header. This would lead to both
inefficiencies in the wire encoding and reduction in available Maximum
Transmission Unit (MTU). Furthermore, Web browsers would need to support IPv4
and IPv6 header generation, parsing, validation and error handling.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This proposal is the result of many conversations with MASQUE working group
participants.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA91a73LbRpL/Pk8xoT9ETomUSDFKzIuSZSQ5ZpUlOxK1rq2t
rashMCQnJgEGA4jmqpS617hv9yz3KPck9+vuAQiIVOz9dnXaTZkYzPT09N9f
96Ddbqvc5Qs70K33Wfpp45KZfut8bhOb6buL99ol+s14/L6lzGSS2XvMO393
fX15Pm7TW5naUpHJ7SzNNgPt81jFaZSYJWjGmZnmbR/NXWL+6dpRmiQ2yttF
vGoveGX7uKd8MVk6712a5JsVFo0ux69VUiwnNhuoGIQHCgu9TXzhBzrPCqvA
xokymTUDPc5M4ldplqv1bKCvhre/3l2qe5sUWKb1LEuLFXiW8RZGZI/WhzT7
SGf9hSbQ+NK4BcaXxv9e2L84m087aTajNyaL5ngzz/OVHxwd0UQacve2U047
ooGjSZauvT0SEke0dObyeTHB4gtz7+LbIIejz4qF1i5wcp/XNm7Q6Ajpjks/
T+3zMzrzfLloqY92s06zmATX1r8XLuIftD//gC7MLDNLfsBi/ndFVsO/8gJk
F75aTKZTEcmLDFbmtVksdD63em02Ok7XCb8UiVWbtZMZ/xbelCnyeZoxU/hP
gyzM4KKjS1HwoNgbi6j5AtoZ6F/SdLaw+u3bcx7zeWYtRNs9PT7Ww+VqDlla
g0H93mQfwRrPilwOe75KiyQ3OMpfnV3zeGZnsNWBPh/KtDTGzq/6x/2T8IwF
5Al3icstuMlJkTqdYiebucjwLCv2FpdKYVP6y4xGO1G6bB52iMPCWOe1kw4n
c1cb/L99SgNmPfH65JBJmi1NDkcaKJdMtw9af7CTm/H5gImU8UnGWjzGYUH3
jnvd9nG33TuVA2Nj64mSLASZk/OBvrHYa2kTrMGJhKTJZrbuW+v1urM+YVce
3xyt7STLI3iwarfb4B6SNFGu1BiGu7TR3CTOL3WeivHXw6ROk8WGjByRQFsT
zfllFVkzCzv3OZaqnOLW0tFvbbRf2chN4TPzFK9NEmsKaR09huA0/r+28Btf
sKghKKYaLZxN4NY2u7eZAit5GqULj2nY1njm5+jkUE+KnEgkaY5XU2xCy5iK
T5eWSa2szdp52qZ/a5QW7qMNqgisILIXS1qOSavUk0Mn2n6Cm1L8prM0zusS
xVLJ5ybXNjETCgHMX+FtOzIg0BEhL10cL6xSL/QIdpXGRUTK0g8vHD0+fpHs
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
AA==

-->

</rfc>
