<?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.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-masque-connect-udp-listen-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="CONNECT-UDP Listen">Proxying Listener UDP in HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-udp-listen-00"/>
    <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="September" day="08"/>
    <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>
      <?line 62?>

<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-ietf-masque-connect-udp-listen.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-masque-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>
    <?line 70?>

<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>
        <?line -18?>

<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"/>
            <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"/>
            <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"/>
            <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <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="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"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <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"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <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"/>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <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="28" month="April" 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 an IP proxy.  This document updates RFC
   9298.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-masque-connect-ip-13"/>
        </reference>
      </references>
    </references>
    <?line 232?>

<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:
H4sIAAAAAAAAA91a3XLbRrK+n6eYUBeRUyIlSoxic6N4GUmOWWXJjkSta2tr
69QQGJITkwCDAURzVUrta+zdeZbzKOdJztfdAxAQqcR7t3W0mzIxmOnp6d+v
e9But1Xu8rnt69aHLP28dslUv3M+t4nN9N3FB+0S/XY0+tBSZjzO7D3mnb+/
vr48H7XprUxtqcjkdppm6772eaziNErMAjTjzEzytrP5pL0w/tfCtqM0SWyU
t4t42Z7z4vbRkfLFeOG8d2mSr5dYN7wcvVFJsRjbrK9i0O4rLPQ28YXv6zwr
rAInJ8pk1vT1KDOJX6ZZrlbTvr4a3P58d6nubVJgmdbTLC2WYFvGWxiRPVof
0+wTHfcnmkDjC+PmGBdO/0xcd9JsSm9MFs3wZpbnS98/PKSJNOTubaecdkgD
h+MsXXl7KCQOaenU5bNijMUX5t7Ft1iUmH+4Q5GMD487xEJr5zi5z2sbN2h0
hHTHpX9M7fBLNNGZ5Yt5S32y61WaxSS7tv61cBH/IBb4B9RhpplZ8AMW879L
sh3+lRcgO/fVYjKgikheZLA1r818rvOZ1Suz1nG6Svil8FVt1k6m/Ft4U6bI
Z2nGTOE/DbKwhIuOLqXBg2J1LKXmCyior39K0+nc6nfvznnM55m1kG739OhI
DxbLGcRpDQb1B5N9Ams8K3I5rPoqLZLc4Ch/cXbF45mdwlz7+nwg09IYO7/q
HfVOwjMWkD/cJS634CYnXep0gp1s5iLDs6yYXFxqjq3pz1Ma7UTponnYAQ4L
e53VTjoYz1xt8D/7lAbMeuL1ySGTNFuYHL7UVy6ZbB60/mjHN6PzPhMpo5SM
tXiMI4M+Pjruto+67eNTOTA2tp4oyUKQOTnv6xuLvRY2wRqcSEiabGrr7rVa
rTqrE/bm0c3hyo6zPIITq3a7De4hSRPlSo1guAsbzUzi/ELnqRh/PVjqNJmv
ycgRDLQ10YxfVvE1s7Bzn2Opyil0LRz91kb7pY3cBD4zS/HaJLGmqNbRIwhO
4/8rC7/xBYsagmKq0dzZBL5vs3ubKbCSp1E695iGbY1nfg5PDvS4yIlEkuZ4
NcEmtIyp+HRhmdTS2qydp236t0Zp7j7ZoIrACuJ7saDlmLRMPTl0ou1nuCmF
cDpL47wuUSyVfGZybRMzphDA/BUecciAQEeEvHBxPLdK7ekh7CqNi4iUpR/2
HD0+fpHsHx6+qmWos5s356+OX718fCz1ESFn5GBLhUjFMiDbKBIYLL0RYZj1
PDWxJ3qBztF3p0SHVTVxn6GEUk9K9HSeLsYuwfgKTsYBjjkK7IBxhLBY73tr
QfXWyuFedU46p3AZ9RVNZn673aPHxxcHGnYRmF6WsiSiC/NLmsFhyc8MaUb/
yGkn+1rUTVZFGu7ot+nKwiyC9rCp/MAhMgu7gacmenh+iRev8Q/t/bLX+1bO
iC0RRq0KecLd045jm6+shYpXKW8s+S7zB2ytRGpDmFg1YzendaCH7B2zrDIb
WTh4kHL0yeae3i+Kee6WiFwkVN/RH2cOD47pAFmQMBZuOsvBA9wCYAFmRC5k
IihviSxBEodxFhRjNtQalsjqCO4HnvnRIzwluYu8enigAZw+TtlPpoWBe+bQ
FltujETkkiivCEDN8EewA3OE2cZ6vOZDe8RmJQ4ZHCaCf8ytiemcNKN+9LEl
zjx7Y5YuNtsMP2gTx5n18I8DhWWZxQZLgDDMpTUkbl6SLm0mlhulGcSbz9dk
jABMYDTB00FDDKo6APiig4pPllayU+EUE8hLm/4fWx9lbvzHAUBvAkCwaDIH
4oXsRixiy/O2jIL9SixC+winFg8ghYum1U5Ng+29PZIHCw5iYWO9sBOHrEXP
EleAezQBHw+seHc7ah3Iv/r6Pf++ufz5bnhzeUG/b98O3r2rfqgw4/bt+7t3
F5tfm5Xn76+uLq8vZDFGdWNIAZv+tSUu1Hr/YTR8fz141xLTr0sbaJdkMiav
yG0GS6BEYLwq1RDTmh/PP/zPf3d7FLfgz8fd7itYtDy87H7Xw8NqZhPZjfOU
PEKma2WWS2syokIILTJLl5s5OTf0NQNO02SEEOc3fyPJ/L2vvx9Hy27vhzBA
B24MljJrDLLMtke2FosQdwzt2KaSZmP8iaSb/A7+2ngu5V4b/P71HNFct7sv
X/+gnpp+QWkPWli4JJ2n07V44sNDLfdQzoGQ4WGMOcycXKu0QRXmfwUJnXPU
PzpC1H+aYWUbWCdt5Skt2ikCOtGl2ot3VZtkckIe8dXt6ObufHQHwbffDC/f
XdxyZH/V60pkF5ix1n4NtPdZcIbJyIugWuReciIHY9oUeNjxqsq6D3tVBkZG
Hia6SNj147DkKc7xB3IARluSMnFCmxCYjEOAl7xVAqOlQfpEVsZThkj2Bj8b
NWm5A2dIgkYJXiK6snjXQpRgl8COi1CwHGhJvAIxIWqlPs44tGU0xOHnZqhH
FtkEwFJffl4aiWeQaRm1q8Pl5TRK50810DCCF3J+AWrggWJ+GvCBCOW/KryH
MRXGCFLoe5M5wUshc3z9zdcawickCmHsD27Ph8PawNHn48ELHOxHiyPZMshC
TP45CMpUGV402KQoHTGYN4mijNOWctyylHMoXA8vSomWZ+9tnZ3MuaKZk7SR
0jwlM93aUfMivpgYx5g4O+dk+RzjBwKx8Frdm3lBJ80pSjHmCKzv4nQWZ6z4
Pd0wDdRCnHPI1GAbMPFgJMFEGpMZEtJI++Knm8FVQJjfkbd7n0aOtw4IEMZZ
t1y1pQBi0QQf2LCrNyNPRNSQEKMCLawGI3VND6kOJhJ9Aj2/JdjZtFVyp5gy
o8CZh4eYjtwufaav1G+//YaDRs61TZarnX5Z7fqAOgsw5i/ADrTf/ssXBzIy
EGCj90+OO53usYwzCbL6/e7pZiCQ2u90MPZI26uHvt6r8yXF4VlrNzNNTYuG
WxS5KsZwqj4bao3X4POTlOAKo60N1yzMjuaUh2zco1h12mGKYUqdYrmKKTrB
8mV4FRBIYBeq3WDA0mFCfUN6lgrwaSDFjNXMRbONFwsoZbDNi2qIqraNZB9Z
ABqy34GsyCyQBU2S7XxaZJGtodF6OBT+S0hfIWAmHFKZWN4MzmmAgZMphfaJ
PjnWY3JuAh/B1IFc/TIVVFhThKwXLwe5niAX2MxmbW02ZpAmSlOq9FDZ1vNa
IKdLAHfT7BPOgcgOLEgIvqkb9VQ3eoduOHZ/kW7Utm70v60bPoMcTjU1o3dr
JghItq5kVCSLNHaTUiql5/2OxPYzO7EZJQUqigGcqTmoUqSi3DOAfXiQsCLA
YrQ7pL2VkPaGFf2wRzFaEPkfpoj//ee//MY0UIMEfNTRQwYGm6ygzjfBdZMg
Js8hiz+FfLFBOkhlgwQlN9VhIedQH7kKAmUNiO1cCB18nhVyJleTQXGlIqAY
tyTNerVPbNjPBoDCHsjqym9q4biqhXK3QEXIuZFZGFNrizI1n0UFHJEJBHC+
rBmmCZ7jF08RZpxaaQvJPpDimuAgalgACsBU8PYFqUi0IG2mSZEX2LncwYe6
XeirDe0ONeXIOjMvYhQWYYefEio2ajNLWEoF6czcuzRTajAhxIPy3y7zsjVy
HrhsQNflFnjYeCTjayOeGJy26sk1itHKkdg7a0gpQKjg+Zt4z3qowk5o7W2w
6Ya9LRCytVWIOQKmanyXzYYq3gTFlL3BssXAdKDX0ER3/yCHFX6JSUBxs/QF
3zaIaMK6gEK2OFUVquBkelBWFKUWKFeE5mWZLGrbYdHKUJntpAVaiZK1DGxS
cHOL+hcu5sZGVaL78mXUeKkbBfAG33y3hUfh+x6RarmcrxXXstQ9RwRFsXTN
XRo4SlYg+1PXjN2wigBwOHJQsug043q4mJOu7p1dsZKeY67B0nGXeHpN+3FR
dvrtKQNSYeOPKimwmGXrhkA9uUkl5tLC1cbC6VTUzAUDoL9lAZ4CUmZ/If7q
O40lfGy6pbQnd0wlAW86pjbs/Es4IlZ4ysT0ixK6t41IAWfejdOqrUP7DX5u
RQehi8j2L2HtIGQjCRwUj11cchIkAxao97muLqyY7bJNUVoh2IzdvYsLVOfl
RK8Yve8SVicUx9LSs3SXkmnv5txlo9ZdRDS5t11RA45QZswe+hTnVGUA3dKY
BTvAcHA92GH89ZDNMKJcyvPh+3RV43ObPYGtli5oSk9ucZktifYagaMVVmHG
AlUIVSKUwnL1/d/+vl+/FXEmMXLL6T2iNIf1Q76lE52++AEoYkO3D0SxnTBw
jFA00/vrFMlA0Y1R4emZ+81e+iT7qMkXJqGzlumwOjzZw5ImI5cpdUMABAGM
STakpJDyF8woAxzeDoWDR3CDXM5a1DVG0UyVAF09jBHzSPyXkoe5sUEiC3kZ
/gCBNkpk6uumycRNi6ws+Or9A1VdKwUSLL8O3eG0Ob+Vt8QQ0OFDrRHwWD1R
AH08bHHXfOX8TNoACP1lq5Y3NQmDkrIXL7HLhFzw1MnEhTtqGErPKKf0dzu6
u9bSsYb2dffVceeoc9zpHUvKqb0+qPv1AWNZwVccbL729TohZMYmdyB/fHQC
8t3uSefkpKPvvKQN7uOE6780kQjWXCqbmToAbfYvBG7XoCqLgm2e1FvOrrJN
s5TV56LXf+fvVq7dFER0czm42u/1XvT128vBxeXNbX1eO/z9QBeP/XARdFbm
Jh4sL9wwXHMdfuWjGfIOXrBFyWxqkZ3p5+zpG/yP54UQhqx0FrB/zRoVX+Fu
4bozfcxvGBTYdo2x110c9WIwGlDj4xmRNI76cwHJQge3HN8IfJ/pbpfe1PB4
2K9WxZ3pXhgpi+ezmlHSqwpY4cXxSa8aCsDkTF9uQE2jnFGqzuz3Jbd6lwbV
9unCX99z3CLWj46en/aMCA+/0R+Nk9vXuutxFOfcUF6hlP0BaPM5vkt1PM/F
80rY/betmt1/2wp7dt5zatz9t0O5vzPxC1ReF3jeDGjV1WQVR0IQwxCkjpVV
XbAdywTN7ngjK6tbz+dC1v8nxdaj+heptndy/Du8fqFqqR2o6HIPyTxzhDs5
J5agf/iBOrh0kUwyrz43eFowyOcFj/Q9CxAMagBfLEnteC/XycPa7enmQ4PX
m23Ohu2Lzq7Pq9zy8ZHvKVahXvi1cFm4UWZ82rykYITvuCbla22Uv7S5AOhQ
ugul8j6Z7hLAkw3fdES0OMC9Fe3EFy10BrlpLb+poDu+e/qOjW5+r8xntygW
aiSlL3+Jx9/06P2r0d2Ljn5TZGTfC4be9Yv/wExipQcU5AaW73tcAOPHaQn/
pwRHJLuXF04HOkB32pBr0SyDQ3EzRe6j9vQgovQ2t/GU0RxAXHkVcdaaoJ6z
rccAkOVzFODH0I2DZRZzro0W1NXg66HMh7KM7UQ+CqRrX/4UkL8VpA5FDlku
DXbrqP8DK0HLKCMpAAA=

-->

</rfc>
