<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vance-socks5-frag-deprecation-00" category="std" consensus="true" updates="1928" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="SOCKS5 FRAG Deprecation">Deprecating the FRAG Field in SOCKS5</title>
    <seriesInfo name="Internet-Draft" value="draft-vance-socks5-frag-deprecation-00"/>
    <author fullname="Daniel James Vance">
      <organization>Independent</organization>
      <address>
        <email>djvanc@outlook.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="05"/>
    <keyword>socks5</keyword>
    <keyword>udp</keyword>
    <keyword>fragmentation</keyword>
    <keyword>security</keyword>
    <abstract>
      <?line 29?>

<t>This document updates RFC 1928 by formally deprecating the FRAG (Fragment) field in the SOCKS5 UDP ASSOCIATE request header. It mandates that the FRAG field MUST be set to X'00' by clients and that proxies MUST drop any SOCKS5 UDP packets containing a non-zero FRAG value. This change aligns the SOCKS5 protocol with modern Internet engineering practices regarding UDP fragmentation (BCP 227), simplifies proxy implementations, and eliminates a vector for resource exhaustion attacks.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/socksbis/frag"/>.</t>
    </note>
  </front>
  <middle>
    <?line 33?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The SOCKS Protocol Version 5 <xref target="RFC1928"/> defines a framework for client-server communication through a proxy. Section 7 of <xref target="RFC1928"/> describes a mechanism for UDP application-level fragmentation, utilizing a "FRAG" field in the SOCKS UDP request header to split large datagrams.</t>
      <t>Since 1996, the operational reality of the Internet has evolved. IP fragmentation is now recognized as fragile and detrimental to performance and security <xref target="RFC8900"/>. Modern UDP applications are expected to handle Maximum Transmission Unit (MTU) discovery independently <xref target="RFC8085"/> <xref target="RFC8899"/>.</t>
      <t>This document updates <xref target="RFC1928"/> by deprecating the SOCKS5 UDP fragmentation mechanism to improve security and interoperability.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
      </t>
    </section>
    <section anchor="background-the-socks5-frag-field">
      <name>Background: The SOCKS5 FRAG Field</name>
      <t>Section 7 of <xref target="RFC1928"/> defines a mechanism for application-level
fragmentation within the SOCKS UDP relay. The one-octet FRAG field
is used to indicate the position of a datagram within a fragment
sequence. A value of X'00' signifies that the datagram is
standalone, while values from 1 to 127 represent the fragment's
position. The high-order bit of the field serves as an indicator
for the end of a fragment sequence.</t>
      <t>The original specification stipulates that any receiver
implementing this feature maintains a reassembly queue and a
reassembly timer for these fragments. This timer is required to be
no less than five seconds. The reassembly state is reset and any
associated fragments are abandoned if the timer expires or if an
incoming datagram carries a FRAG value lower than the highest
value previously processed for that sequence. Despite the
inclusion of this mechanism, <xref target="RFC1928"/> explicitly recommends that
applications avoid fragmentation whenever possible.</t>
      <t>Furthermore, the implementation of this fragmentation mechanism
is designated as optional. Proxies that do not support the feature
are expected to drop any datagram containing a FRAG field value
other than X'00'. The protocol also includes specific
requirements for SOCKS-aware UDP programming interfaces, which
are expected to report a smaller available buffer space to
applications to account for the overhead of the SOCKS header. The
exact reduction in reported buffer space depends on the address
type (ATYP) used, ranging from 10 to over 262 octets plus
method-dependent overhead.</t>
    </section>
    <section anchor="motivation-for-deprecation">
      <name>Motivation for Deprecation</name>
      <section anchor="statefulness-and-resource-exhaustion">
        <name>Statefulness and Resource Exhaustion</name>
        <t>UDP is architecturally defined as a stateless, best-effort transport
layer.  By requiring a SOCKS5 proxy to implement Section 7 of
<xref target="RFC1928"/>, the protocol introduces an application-layer reassembly
subsystem that fundamentally contradicts the stateless nature of UDP.
This mandatory state management for unauthenticated or semi-
authenticated flows presents several distinct vectors for service
degradation and system failure.</t>
        <section anchor="incomplete-sequence-memory-exhaustion">
          <name>Incomplete Sequence Memory Exhaustion</name>
          <t>An attacker may initiate a high volume of UDP ASSOCIATE flows,
sending only a subset of fragments for each sequence (e.g., sending
fragment X'01' of X'05' and never transmitting the subsequent
octets).  To comply with <xref target="RFC1928"/>, the proxy must allocate a
reassembly buffer for each unique fragment sequence, indexed by the
source address, port, and destination metadata.</t>
          <t>Since the proxy cannot forward the datagram until the sequence is
contiguous, it must retain these partial payloads in memory.  By
rotating source ports or utilizing spoofed source addresses (where
ingress filtering is absent), an attacker can rapidly deplete the
proxy's heap memory or specialized reassembly buffers.  This results
in a Denial-of-Service (DoS) condition affecting not only UDP
traffic but potentially the entire proxy process or host system.</t>
        </section>
        <section anchor="timer-management-and-cpu-overload">
          <name>Timer Management and CPU Overload</name>
          <t>The requirement to maintain reassembly timers introduces additional
computational overhead.  Each fragmented flow necessitates a
tracking mechanism to expire incomplete sequences and reclaim
memory.  In a high-concurrency environment, an attacker can
oscillate fragment transmission rates to force the proxy into
frequent timer-eviction cycles.  The overhead of managing thousands
of concurrent timers—specifically the sorting and searching of
timer heaps or linked lists—can lead to significant CPU exhaustion,
increasing latency for legitimate proxied connections.</t>
        </section>
        <section anchor="fragment-overlap-and-algorithmic-complexity-attacks">
          <name>Fragment Overlap and Algorithmic Complexity Attacks</name>
          <t>Similar to historical vulnerabilities in the IP stack, the SOCKS5
fragmentation field allows for the transmission of overlapping or
out-of-order application-layer fragments.  If a proxy implementation
does not strictly validate fragment boundaries, an attacker may
send fragments with overlapping sequence numbers to trigger
expensive memory-copy operations or to exploit edge cases in the
reassembly logic.  A malicious actor could craft sequences that
require the proxy to perform repeated buffer reallocations or
complex data-shifting operations, leading to an algorithmic
complexity attack that degrades performance disproportionately to
the attacker's bandwidth expenditure.</t>
        </section>
        <section anchor="pre-authentication-vulnerability">
          <name>Pre-authentication Vulnerability</name>
          <t>A critical weakness in the SOCKS5 fragmentation mechanism is its
availability prior to, or during, the establishment of a fully
authenticated session.  Because UDP ASSOCIATE may be utilized in
environments with minimal authentication, or because the reassembly
logic often sits at the ingress of the UDP relay, the proxy is
forced to expend resources on behalf of unverified actors.  This
asymmetry allows a low-resource attacker to impose high-resource
costs on the infrastructure, making the FRAG field a primary vector
for unauthenticated resource exhaustion.</t>
        </section>
      </section>
      <section anchor="alignment-with-bcp-227">
        <name>Alignment with BCP 227</name>
        <t>As documented in <xref target="RFC8900"/>, middleboxes frequently drop fragmented packets. Reassembling fragments at the proxy and forwarding a large egress datagram often triggers IP fragmentation, leading to high packet loss. End-to-end MTU management <xref target="RFC8899"/> is the current architectural best practice.</t>
      </section>
      <section anchor="implementation-status">
        <name>Implementation Status</name>
        <t>Modern, production-grade SOCKS5 implementations have largely abandoned support for Section 7 of <xref target="RFC1928"/>. Formalizing this deprecation prevents interoperability issues with legacy or non-compliant implementations.</t>
      </section>
    </section>
    <section anchor="normative-changes-to-rfc-1928">
      <name>Normative Changes to RFC 1928</name>
      <t>This document updates Section 7 of <xref target="RFC1928"/>.</t>
      <section anchor="client-requirements">
        <name>Client Requirements</name>
        <t>SOCKS5 clients MUST set the FRAG field to X'00' in all transmitted UDP packets.</t>
        <t>Clients MUST NOT attempt to fragment UDP datagrams at the SOCKS protocol layer. If a datagram exceeds the path MTU, the client SHOULD employ Path MTU Discovery mechanisms (e.g., PLPMTUD <xref target="RFC8899"/>) to adjust the payload size before encapsulation.</t>
      </section>
      <section anchor="proxy-server-requirements">
        <name>Proxy Server Requirements</name>
        <t>A SOCKS5 proxy server MUST NOT maintain reassembly queues or timers for UDP fragments.</t>
        <t>Upon receiving a UDP packet with a FRAG field not equal to X'00', the proxy server MUST silently discard the packet. The proxy MUST NOT generate any signaling or error responses (e.g., ICMP unreachable messages or SOCKS-level control notifications) in response to such packets. This prevents the proxy from acting as a reflection or amplification vector in Denial-of-Service attacks. For observability, implementations SHOULD provide internal counters to track the number of packets dropped due to non-zero FRAG values.</t>
      </section>
      <section anchor="revised-udp-request-header-format">
        <name>Revised UDP Request Header Format</name>
        <t>To reflect the deprecation of the fragmentation mechanism, the SOCKS UDP request header is updated as follows. The field previously known as <tt>FRAG</tt> is now designated as <tt>RSV</tt> (Reserved) and MUST be ignored for its original purpose.</t>
        <table anchor="revised-udp-hearer-req">
          <name>Revised UDP Request Header Format</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Size (Octets)</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">RSV</td>
              <td align="left">2</td>
              <td align="left">Reserved (X'0000')</td>
            </tr>
            <tr>
              <td align="left">FRAG</td>
              <td align="left">1</td>
              <td align="left">DEPRECATED. Current implementations MUST set to X'00'.</td>
            </tr>
            <tr>
              <td align="left">ATYP</td>
              <td align="left">1</td>
              <td align="left">Address type of following address</td>
            </tr>
            <tr>
              <td align="left">DST.ADDR</td>
              <td align="left">Variable</td>
              <td align="left">Desired destination address</td>
            </tr>
            <tr>
              <td align="left">DST.PORT</td>
              <td align="left">2</td>
              <td align="left">Desired destination port</td>
            </tr>
            <tr>
              <td align="left">DATA</td>
              <td align="left">Variable</td>
              <td align="left">User data</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="compatibility-considerations">
      <name>Compatibility Considerations</name>
      <t>The deprecation of the FRAG field is designed to have minimal impact
on the existing installed base of SOCKS5 implementations, as it
formalizes the de facto behavior of the majority of modern
deployments.</t>
      <section anchor="legacy-proxy-interoperability">
        <name>Legacy Proxy Interoperability</name>
        <t>According to Section 7 of <xref target="RFC1928"/>, the implementation of
fragmentation reassembly was designated as OPTIONAL. Consequently,
robust SOCKS5 clients have historically been required to handle
scenarios where a proxy might drop fragments. A compliant client
implemented according to this update will set the FRAG field to
X'00', which is perfectly backward compatible with any legacy
proxy server, whether or not that legacy proxy supported
fragmentation.</t>
      </section>
      <section anchor="impact-on-legacy-clients">
        <name>Impact on Legacy Clients</name>
        <t>Legacy clients that rely on SOCKS-layer fragmentation (sending non-
zero FRAG values) will experience a loss of UDP connectivity when
communicating through a proxy server compliant with this document.
However, empirical observation of Internet traffic suggests that
SOCKS-layer fragmentation is extremely rare in modern production
environments. Most high-performance proxies have already ceased
supporting fragmentation due to the resource exhaustion risks
outlined in <xref target="motivation-for-deprecation"/>.</t>
        <t>Furthermore, since <xref target="RFC1928"/> did not provide a mechanism for a
client to negotiate or discover if a proxy supported fragmentation,
any client relying on this feature was already operating in a
fragile state. By mandating the drop of fragmented packets, this
document provides a predictable failure mode that encourages
application developers to implement robust end-to-end MTU
management at the packetization layer <xref target="RFC8899"/>, rather than
relying on fragile middlebox reassembly.</t>
      </section>
      <section anchor="the-robustness-principle">
        <name>The Robustness Principle</name>
        <t>While the "Robustness Principle" suggests being liberal
in what you accept, modern security considerations <xref target="RFC9413"/>
increasingly favor strict protocol enforcement to eliminate
ambiguity and reduce attack surface. The deprecation of the FRAG
field is a deliberate trade-off, prioritizing system stability,
security, and protocol simplicity over the support of a legacy
feature that is widely considered detrimental to modern network
performance.</t>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>Operational visibility is essential for distinguishing between
legitimate legacy client traffic and potential denial-of-service
attacks. While this document mandates the silent discard of
fragmented UDP packets to prevent amplification, it is critical
that operators can monitor these events.</t>
      <t>Implementations SHOULD maintain telemetry counters to track the
frequency and volume of packets discarded due to non-zero FRAG
values. These counters provide low-overhead observability and
should be integrated into existing monitoring frameworks (e.g.,
SNMP, YANG, or vendor-specific telemetry).</t>
      <t>For more granular troubleshooting, implementations MAY provide
logging mechanisms to identify the source addresses of
misconfigured legacy clients. However, to mitigate the risk of
log-exhaustion attacks, such logging MUST be strictly rate-limited.
Excessive logging can consume significant CPU and storage
resources, potentially leading to a secondary denial-of-service
condition. Operators are advised to use these logs primarily for
short-term diagnostic purposes rather than continuous monitoring in
high-traffic environments.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document enhances the security of SOCKS5 deployments. By removing the reassembly logic, the attack surface for memory corruption vulnerabilities (e.g., buffer overflows) is significantly reduced.</t>
      <t>Furthermore, prohibiting error responses for dropped fragments ensures that the SOCKS proxy cannot be used as an amplification vector in a Distributed Denial of Service (DDoS) attack.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1928" target="https://www.rfc-editor.org/info/rfc1928" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1928.xml">
          <front>
            <title>SOCKS Protocol Version 5</title>
            <author fullname="M. Leech" initials="M." surname="Leech"/>
            <author fullname="M. Ganis" initials="M." surname="Ganis"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="R. Kuris" initials="R." surname="Kuris"/>
            <author fullname="D. Koblas" initials="D." surname="Koblas"/>
            <author fullname="L. Jones" initials="L." surname="Jones"/>
            <date month="March" year="1996"/>
            <abstract>
              <t>This memo describes a protocol that is an evolution of the previous version of the protocol, version 4 [1]. This new protocol stems from active discussions and prototype implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1928"/>
          <seriesInfo name="DOI" value="10.17487/RFC1928"/>
        </reference>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8085" target="https://www.rfc-editor.org/info/rfc8085" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8085.xml">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms. This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP. Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t>Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic. They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t>Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t>This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC8899" target="https://www.rfc-editor.org/info/rfc8899" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8899.xml">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="T. Jones" initials="T." surname="Jones"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="I. Rüngeler" initials="I." surname="Rüngeler"/>
            <author fullname="T. Völker" initials="T." surname="Völker"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram. This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased. This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t>The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t>This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
        <reference anchor="RFC8900" target="https://www.rfc-editor.org/info/rfc8900" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8900.xml">
          <front>
            <title>IP Fragmentation Considered Fragile</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="O. Troan" initials="O." surname="Troan"/>
            <author fullname="F. Gont" initials="F." surname="Gont"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes IP fragmentation and explains how it introduces fragility to Internet communication.</t>
              <t>This document also proposes alternatives to IP fragmentation and provides recommendations for developers and network operators.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="230"/>
          <seriesInfo name="RFC" value="8900"/>
          <seriesInfo name="DOI" value="10.17487/RFC8900"/>
        </reference>
        <reference anchor="RFC9413" target="https://www.rfc-editor.org/info/rfc9413" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9413.xml">
          <front>
            <title>Maintaining Robust Protocols</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>The main goal of the networking standards process is to enable the long-term interoperability of protocols. This document describes active protocol maintenance, a means to accomplish that goal. By evolving specifications and implementations, it is possible to reduce ambiguity over time and create a healthy ecosystem.</t>
              <t>The robustness principle, often phrased as "be conservative in what you send, and liberal in what you accept", has long guided the design and implementation of Internet protocols. However, it has been interpreted in a variety of ways. While some interpretations help ensure the health of the Internet, others can negatively affect interoperability over time. When a protocol is actively maintained, protocol designers and implementers can avoid these pitfalls.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9413"/>
          <seriesInfo name="DOI" value="10.17487/RFC9413"/>
        </reference>
      </references>
    </references>
    <?line 264?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author wishes to thank Michael Richardson for their valuable
feedback and suggestions during the discussion of this document on
the IETF mailing lists.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA4Vb/3IbOXL+H0+B0/5hq4pk2c7+sirJhSfZu0osW5HkvWyl
UrXgDEhiNTNgBjOSuLuuykPkAfIseZQ8Sb7uBjAzlFR3VXcWyRmg0T++/rob
N5/PVee6yp7oM7trbWE612x0t7X6/dXyB/3e2arUrtHXn07/5fobZVar1t6d
xI/yTH7RN6r0RWNqrFa2Zt3N70xT2HnwxW34Zr5uzWZeDg/PX71S+MtufLs/
0aErVb8r8Tmc6Ndv33yv3K490V3bh+7Nq1dvX71RX2nTWoPNbdG3rtvji3vf
3m5a3+9O9Efb0Sf9V/wPneEH+lrd2j2+LU/0v4sUM92Xu5kmWWrbdCzITIe4
4n8oZfpu69sTpedK4z/rvqrkRGemgTL0P+ND0D/RwfgB327ww2+80Ik+b3BA
i/9pOv7V1sZV0MavpIl/8n1XeX+7KHytVOPbGm/dWeylr96f0pnjn29ev34b
//z+9XdfnyjlmvXB49+/+v6b9Of3b/Pjb1+9in++/fr13+HN+XyuzSp0rSk6
pW62LmgYqafD66hveppVrld7zftU1V6XT/nDy/dRccd6nVyDfoz+8PnsUi+v
8eF8efNOt/Y/exs6vbWmtO1Cn3e6No1s2W1NNywra118vr7RKwtr4Cev/+3F
q1cvSKSictgxaLwr7+1a/+CwCL9Qtn6Hn/ZjGXamuLV4o/AwsWvoCEY3cLnf
bOtlyztT9XahWSHF1jQbq03lNk0Ynwcbdb7wlb533VbXHsdoYOMO/0BG22xc
Y21Ly+9Iv66AUK3dmLak70iSiaPpl385vdRv3nx3DJdz9a5yazoGHWev6bPN
j4YZH9dWrnYNa8zoO1t0viULYZPg+7aw2j5sDSKEFjddh2OHhdi8dmVZWYUY
gbytL/uCAxQeEE+nL9PhfrJtoAW+0b//Hh3xyxfYf43T0b44Q205tmhrscY8
2PbO4pOv675xEtFQHYJus8U7fKYFhSr/8J3264PVQ9G6Fa9fWzKACzWvT1oz
O+gmokRl7xB2BwHbd65yv4ldj8ieR0/4Iy81dULyq4C1O12ZFiaHM5oNjkda
u3aIacTB229nvIbf2Za3MxVWgXN0ezoF/ZRdYGuCtne+urMl/PvQ3HCtxt/j
5cJvgBG21HicHnGVZfOWtmsdP1+RZNiQw4/koJ8TLInmKLa/fFnoC3HDAz0F
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
JJBH/j9qeXYVKTQAAA==

-->

</rfc>
