<?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.4 (Ruby 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusv11-10" category="exp" submissionType="IETF" updates="2865, 2866, 5176, 6613, 6614, 7360" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="RADIUSv11">RADIUS ALPN and removing MD5</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusv11-10"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>FreeRADIUS</organization>
      <address>
        <email>aland@freeradius.org</email>
      </address>
    </author>
    <date year="2024" month="July" day="01"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<t>This document defines Application-Layer Protocol Negotiation Extensions for use with RADIUS/TLS and RADIUS/DTLS.  These extensions permit the negotiation of an additional application protocol for RADIUS over (D)TLS.  No changes are made to RADIUS/UDP or RADIUS/TCP.  The extensions allow the negotiation of a transport profile where the RADIUS shared secret is no longer used, and all MD5-based packet signing and attribute obfuscation methods are removed.</t>
      <t>This document updates RFC2865, RFC2866, RFC5176, RFC6613, RFC6614, and RFC 7360.</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-ietf-radext-radiusv11/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADEXT Working Group mailing list (<eref target="mailto:radext@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/radext/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/radext-wg/draft-ietf-radext-radiusv11.git"/>.</t>
    </note>
  </front>
  <middle>
    <?line 75?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RADIUS protocol <xref target="RFC2865"/> uses MD5 <xref target="RFC1321"/> to sign packets, and to obfuscate certain attributes.  Additional transport protocols were defined for TCP (<xref target="RFC6613"/>), TLS (<xref target="RFC6614"/>), and DTLS (<xref target="RFC7360"/>).  However, those transport protocols still relied on MD5.  That is, the shared secret was used along with MD5, even when the RADIUS packets were being transported in (D)TLS.  At the time, the consensus of the RADEXT working group was that this continued use of MD5 was acceptable.  TLS was seen as a simple "wrapper" around RADIUS, while using a fixed shared secret.  The intention at the time was to allow the use of (D)TLS while making essentially no changes to the basic RADIUS encoding, decoding, signing, and packet validation.</t>
      <t>Issues of MD5 security have been known for decades, most most notably in <xref target="RFC6151"/>, and in <xref section="3" sectionFormat="comma" target="RFC6421"/>, among others.  The reliance on MD5 for security makes it impossible to use RADIUS in a FIPS-140 compliant system, as FIPS-140 forbids systems from relying on insecure cryptographic methods for security.  In addition, the use of MD5 in RADIUS/TLS and RADIUS/DLTS adds no security or privacy over that provided by TLS.</t>
      <t>This document defines an Application-Layer Protocol Negotiation (ALPN) <xref target="RFC7301"/> extension for RADIUS over (D)TLS which removes the need to use MD5 for (D)TLS.  We make no changes to UDP or TCP transport.  This extension can best be understood as a transport profile for RADIUS over TLS, rather than a whole-sale revision of the RADIUS protocol.</t>
      <t>Systems which implement this transport profile can be more easily verified to be FIPS-140 compliant.  A preliminary implementation has shown that only minor code changes are required to support RADIUS/1.1 on top of an existing RADIUS/TLS server implementation, which are:</t>
      <ul spacing="normal">
        <li>A method to set the list of supported ALPN protocols before the TLS handshake starts</li>
        <li>After the TLS handshake has completed, a method to query if ALPN has chosen a protocol, and if yes, which protocol was chosen.</li>
        <li>Changes to the packet encoder and decoder, so that the individual packets are not signed, and no attribute is encoded with the historic obfuscation methods.</li>
      </ul>
      <t>That is, the bulk of the ALPN protocol can be left to the underlying TLS implementation.  This document discusses the ALPN exchange in detail in order to give simplified descriptions for the reader, and so that the reader does not have to read or understand all of <xref target="RFC7301"/>.</t>
      <t>The detailed list of changes from historic TLS-based transports to RADIUS/1.1 is as follows:</t>
      <ul spacing="normal">
        <li>ALPN is used for negotiation of this extension,</li>
        <li>TLS 1.3 or later is required,</li>
        <li>All uses of the RADIUS shared secret have been removed,</li>
        <li>The now-unused Request and Response Authenticator fields have been repurposed to carry an opaque Token which identifies requests and responses,</li>
        <li>The functionality of the Identifier field has been replaced by the Token field, and the space previously taken by the Identifier field is now reserved and unused,</li>
        <li>The Message-Authenticator attribute (<xref section="3.2" sectionFormat="comma" target="RFC3579"/>) is not sent in any packet, and if received is ignored,</li>
        <li>Attributes such as User-Password, Tunnel-Password, and MS-MPPE keys are sent encoded as "text" (<xref section="3.4" sectionFormat="comma" target="RFC8044"/>) or "octets" (<xref section="3.5" sectionFormat="comma" target="RFC8044"/>), without the previous MD5-based obfuscation.  This obfuscation is no longer necessary, as the data is secured and kept private through the use of TLS,</li>
        <li>The conclusion of the efforts stemming from <xref target="RFC6421"/> is that crypto-agility in RADIUS is best done via a TLS wrapper, and not by extending the RADIUS protocol.</li>
        <li>
          <xref target="RFC5176"/> is updated to allow the Error-Cause attribute to appear in Access-Reject packets.</li>
      </ul>
      <t>The following items are left unchanged from traditional TLS-based transports for RADIUS:</t>
      <ul spacing="normal">
        <li>The RADIUS packet header is the same size, and the Code and Length fields (<xref section="3" sectionFormat="comma" target="RFC2865"/>) have the same meaning as before,</li>
        <li>The default 4K packet size is unchanged, although <xref target="RFC7930"/> can still be leveraged to use larger packets,</li>
        <li>All attributes which have simple encodings (that is, attributes which do not use MD5 obfuscation) have the same encoding and meaning as before,</li>
        <li>As this extension is a transport profile for one "hop" (client to server connection), it does not impact any other connection used by a client or server.  The only systems which are aware that this transport profile is in use are the client and server who have negotiated the use of this extension on a particular shared connection,</li>
        <li>This extension uses the same ports (2083/tcp and 2083/udp) which are defined for RADIUS/TLS <xref target="RFC6614"/> and RADIUS/DTLS <xref target="RFC7360"/>.</li>
      </ul>
      <t>A major benefit of this extension is that a home server which implements it can also be more easily verified for FIPS-140 compliance.  That is, a home server can remove all uses of MD4 and MD5, which means that those algorithms are provably not used for security purposes.  In that case, however, the home server will not support CHAP, MS-CHAP, or any authentication method which uses MD4 or MD5.  The choice of which authentication method to accept is always left to the home server.  This specification does not change any authentication method carried in RADIUS, and does not mandate (or forbid) the use of any authentication method for any system.</t>
      <t>As for proxies, there was never a requirement that proxies implement CHAP or MS-CHAP authentication.  So far as a proxy is concerned, attributes relating to CHAP and MS-CHAP are simply opaque data that is transported unchanged to the next hop.  It is therefore possible for a FIPS-140 compliant proxy to transport authentication methods which depend on MD4 or MD5, so long as that data is forwarded to a home server which supports those methods.</t>
      <t>We reiterate that the decision to support (or not) any authentication method is entirely site local, and is not a requirement of this specification.  The contents or meaning of any RADIUS attribute other than Message-Authenticator (and similar attributes) are not modified.  The only change to the Message-Authenticator attribute is that it is no longer used in RADIUS/1.1.</t>
      <t>Unless otherwise described in this document, all RADIUS requirements apply to this extension.  That is, this specification defines a transport profile for RADIUS.  It is not an entirely new protocol, and it defines only minor changes to the existing RADIUS protocol.  It does not change the RADIUS packet format, attribute format, etc.  This specification is compatible with all RADIUS attributes, past, present, and future.</t>
      <t>This specification is compatible with existing implementations of RADIUS/TLS and RADIUS/DTLS.  Systems which implement this standard can fall back to historic RADIUS/TLS if no ALPN signaling is performed, and the local configuration permits such fallback.</t>
      <t>This specification is compatible with all existing RADIUS specifications.  There is no need for any RADIUS specification to mention this transport profile by name, or to make provisions for this specification.  This document defines how to transform RADIUS into RADIUS/1.1, and no further discussion of that transformation is necessary.</t>
      <t>We note that this document makes no changes to previous RADIUS specifications.  Existing RADIUS implementations can continue to be used without modification.  Where previous specifications are explicitly mentioned and updated, those updates or changes apply only when the RADIUS/1.1 transport profile is being used.</t>
      <t>In short, when negotiated on a connection, the RADIUS/1.1 transport profile permits implementations to avoid MD5 when signing packets, or when obfuscating certain attributes.</t>
    </section>
    <section anchor="terminology">
      <name>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>
      <t>The following list describes the terminology and abbreviations which are used in this document.</t>
      <ul spacing="normal">
        <li>ALPN</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Application-Layer Protocol Negotiation, as defined in <xref target="RFC7301"/>.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>The Remote Authentication Dial-In User Service protocol, as defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, and <xref target="RFC5176"/> among others.</t>
          <t>While this protocol can be viewed as "RADIUS/1.0", for simplicity and historical compatibility, we keep the name "RADIUS".</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/UDP</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the User Datagram Protocol <xref target="RFC2865"/>, <xref target="RFC2866"/>, <xref target="RFC5176"/>, among others.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/TCP</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the Transmission Control Protocol <xref target="RFC6613"/>.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the Transport Layer Security protocol <xref target="RFC6614"/>.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/DTLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the Datagram Transport Layer Security protocol  <xref target="RFC7360"/>.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS over TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Any RADIUS packets transported over TLS or DTLS.  This terminology is used instead of alternatives such as "RADIUS/(D)TLS", or "either RADIUS/TLS or RADIUS/DTLS".  This term is generally used when referring to TLS-layer requirements for RADIUS packet transport.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>historic RADIUS/TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over (D)TLS as defined in <xref target="RFC6614"/> and <xref target="RFC7360"/>.  This term does not include the protocol defined in this specification.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/1.1</li>
      </ul>
      <ul empty="true">
        <li>
          <t>The transport profile defined in this document, which stands for "RADIUS version 1.1".  We use RADIUS/1.1 to refer interchangeably to TLS and DTLS transport.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>The Transport Layer Security protocol.  Generally when we refer to TLS in this document, we are referring interchangeably to TLS or DTLS transport.</t>
        </li>
      </ul>
    </section>
    <section anchor="the-radius11-transport-profile-for-radius">
      <name>The RADIUS/1.1 Transport profile for RADIUS</name>
      <t>This section describes the ALPN transport profile in detail.  It first gives the name used for ALPN, and then describes how ALPN is configured and negotiated by client and server.  It then concludes by discussing TLS issues such as what to do for ALPN during session resumption.</t>
      <section anchor="alpn-name-for-radius11">
        <name>ALPN Name for RADIUS/1.1</name>
        <t>The ALPN name defined for RADIUS/1.1 is as follows:</t>
        <ul empty="true">
          <li>
            <t>"radius/1.1"</t>
            <ul empty="true">
              <li>
                <t>The protocol defined by this specification.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Where ALPN is not configured or is not received in a TLS connection, systems supporting ALPN MUST NOT use RADIUS/1.1.</t>
        <t>Where ALPN is configured, the client signals support by sending ALPN strings signaling which protocols it supports..  The server can accept one of these proposals and reply with a matching ALPN string, or reject this proposal, and not reply with any ALPN string.  A full walk-through of the protocol negotiation is given below.</t>
        <t>Implementations MUST signal ALPN "radius/1.1" in order for it to be used in a connection.  Implementations MUST NOT have an administrative flag which causes a connection to use "radius/1.1", but which does not signal that protocol via ALPN.</t>
        <t>The next step in defining RADIUS/1.1 is to review how ALPN works.</t>
      </section>
      <section anchor="operation-of-alpn">
        <name>Operation of ALPN</name>
        <t>In order to provide a high-level description of ALPN for readers who are not familiar with the details of <xref target="RFC7301"/>, we provide a brief overview here.</t>
        <t>Once a system has been configured to support ALPN, it is negotiated on a per-connection basis as per <xref target="RFC7301"/>.  The negotiation proceeds as follows:</t>
        <t>1) The client sends an ALPN extension in the ClientHello.  This extension lists one or more application protocols by name.  These names are the protocols which the client is claiming to support.</t>
        <t>2) The server receives the extension, and validates the application protocol name(s) against the list it has configured.</t>
        <ul empty="true">
          <li>
            <t>If the server finds no acceptable common protocols (ALPN or otherwise), it closes the connection.</t>
          </li>
        </ul>
        <t>3) Otherwise, the server returns a ServerHello with either no ALPN extension, or an ALPN extension containing only one named application protocol, which needs to be one of the names proposed by the client.</t>
        <ul empty="true">
          <li>
            <t>If the client did not signal ALPN, or the server does not accept the ALPN proposal, the server does not reply with any ALPN name.</t>
          </li>
        </ul>
        <t>4) The client receives the ServerHello, validates the received application protocol (if any) against the name(s) it sent, and records which application protocol was chosen.</t>
        <ul empty="true">
          <li>
            <t>This check is necessary in order for the client to both know which protocol the server has selected, and to validate that the protocol sent by the server is one which is acceptable to the client.</t>
          </li>
        </ul>
        <t>The next step in defining RADIUS/1.1 is to define how ALPN is configured on the client and server, and to give more detailed requirements on its configuration and operation.</t>
      </section>
      <section anchor="configuration-of-alpn-for-radius11">
        <name>Configuration of ALPN for RADIUS/1.1</name>
        <t>Clients or servers supporting this specification can do so by extending their TLS configuration through the addition of a new configuration flag, called "Version" here.  The exact name given below does not need to be used, but it is RECOMMENDED that administrative interfaces or programming interfaces use a similar name in order to provide consistent terminology.  This flag controls how the implementation signals use of this protocol via ALPN.</t>
        <t>When set, this flag contains the list of permitted RADIUS versions as numbers, e.g. "1.0" or "1.1".  The implementation may allow multiple values in one variable, or allow multiple variables, or instead use two configuration for "minimum" and "maximum" allowed versions.  We assume here that there is one variable, which can contain either no value, or else a list of one or more versions which the current implementation supports.  In this specification, the possible values, ALPN strings, and corresponding interpretations are:</t>
        <artwork><![CDATA[
Flag Value  |   ALPN String(s)       | Interpretation
------------------------------------------------------
unset       |                        | no ALPN strings are sent.
1.0         | radius/1.0             | require historic RADIUS/TLS
1.0, 1.1    | radius/1.0, radius/1.1 | allow either historic
            |                        | RADIUS/TLS or RADIUS/1.1.
1.1         | radius/1.1             | require RADIUS/1.1.
]]></artwork>
        <t>This configuration is also extensible to future RADIUS versions if that extension becomes necessary.  New flag values and ALPN names can simply be added to the list.  Implementations can then negotiate the highest version which is supported by both client and server.</t>
        <t>Implementations SHOULD support both historic RADIUS/TLS and RADIUS/1.1.  Such implementations MUST set the default value for this configuratiun flag to "1.0, 1.1".  This setting ensures that both versions of RADIUS can be negotiated.</t>
        <t>Implementations MAY support only RADIUS/1.1.  In which case the default value for this configuration flag MUST be "1.1".  This behavior is NOT RECOMMENDED, as it is incompatible with historic RADIUS/TLS.  This behavior can only be a reasonable default when all (or nearly all) RADIUS clients have been updated to support RADIUS/1.1.</t>
        <t>A more detailed definition of the variable and the meaning of the values is given below.</t>
        <t>Configuration Flag Name</t>
        <ul empty="true">
          <li>
            <t>Version</t>
          </li>
        </ul>
        <t>Values</t>
        <ul empty="true">
          <li>
            <t>When the flag is unset, ALPN is not used.</t>
            <t>Any connection MUST use historic RADIUS/TLS.</t>
            <t>This flag is included here only for logical completeness.  Implementations of this specification SHOULD be configured to always send one or more ALPN strings.  This data signals that the implementation is capable performing ALPN negotiation, even if it is not currently configured to use RADIUS/1.1</t>
            <ul empty="true">
              <li>
                <t>Client Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The client MUST NOT send any protocol name via ALPN.</t>
                  </li>
                </ul>
                <t>Server Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The server MUST NOT signal any protocol name via ALPN.</t>
                    <t>If the server receives an ALPN name from the client, it MUST NOT close the connection.  Instead, it simply does not reply with ALPN, and finishes the TLS connection setup as defined for historic RADIUS/TLS.</t>
                    <t>Note that if a client sends "radius/1.1", the client will see that the server failed to acknowledge this request, and will close the connection.  For any other client configuration, the connection will use historic RADIUS/TLS.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Other values ("1.0", "1.0, 1.1", "1.1", etc.)</t>
            <ul empty="true">
              <li>
                <t>Client Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The client MUST send the ALPN string(s) associated with the configured version.  e.g. For "1.0", send "radius/1.0".</t>
                    <t>The client will receive either no ALPN response from the server, or an ALPN response of one version string with MUST match one of the strings it sent, or else a TLS alert of "no_application_protocol" (120).</t>
                    <t>If the connection remains open, the client MUST treat the connection as using the matching ALPN version.</t>
                  </li>
                </ul>
                <t>Server Behavior</t>
                <ul empty="true">
                  <li>
                    <t>If the server receives no ALPN name from the client, it MUST use historic RADIUS/TLS.</t>
                    <t>If the server receives one or more ALPN names from the client, it MUST reply with the highest mutually supported version and then use the latest supported version for this connection.</t>
                    <t>If the server receives one or more ALPN names from the client, but none of the names match the versions supported by (or configured on) the server, it MUST reply with a TLS alert of "no_application_protocol" (120), and then MUST close the TLS connection.</t>
                    <t>These requirements for negotiation are not specific to RADIUS/1.1, and therefore can be used unchanged if any new version of RADIUS is defined.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>By requiring the default configuration to allow historic RADIUS/TLS, implementations will be able to negotiate both historic RADIUS/TLS connections, and also RADIUS/1.1 connections.  Any other recommended default setting would prevent either the negotiation of historic RADIUS/TLS, or prevent the negotiation of RADIUS/1.1.</t>
        <t>Once administrators verify that both ends of a connection support RADIUS/1.1, and that it has been negotiated successfully, the configurations SHOULD be updated to require RADIUS/1.1.  The connections should be monitored after this change to ensure that the systems continue to remain connected.  If there are connection issues, then the configuration should be reverted to using allow both "radius/1.0" and "radius/1.1" ALPN strings, until such time as the connection problems have been resolved.</t>
        <t>We reiterate that systems implementing this specification, but which are configured with setting that forbid RADIUS/1.1, will behave largely the same as systems which do not implement this specification.  The only difference is that clients may send the ALPN name "radius/1.0".</t>
        <t>Systems implementing RADIUS/1.1 SHOULD NOT be configured by default to forbid that protocol.  That setting exists mainly for completeness, and to give administrators the flexibility to control their own deployments.</t>
        <t>While <xref target="RFC7301"/> does not discuss the possibility of the server sending a TLS alert of "no_application_protocol" (120) when the client does not use ALPN, we believe that this behavior is useful.  As such, servers MAY send a a TLS alert of "no_application_protocol" (120) when the client does not use ALPN.</t>
        <t>However, some TLS implementations may not permit an application to send a TLS alert of its choice, at a time of its choice.   This limitation means that it is not always possible for an application to send the TLS alert as discussed in the previous section.  The impact is that an implementation may attempt to connect, and then see that the connection fails, but not be able to determine why that failure has occurred.  Implementers and administrators should be aware that unexplained connection failures may be due to ALPN negotiation issues.</t>
        <t>The server MAY send this alert during the ClientHello, if it requires ALPN but does not receive it.  That is, there may not always be a need to wait for the TLS connection to be fully established before realizing that no common ALPN protocol can be negotiated.</t>
        <t>Where the client does perform signaling via ALPN and the server determines that there is no compatible application protocol name, then as per <xref section="3.2" sectionFormat="comma" target="RFC7301"/>, it MUST send a TLS alert of "no_application_protocol" (120).</t>
        <t>Whether or not the server sent a TLS alert for no compatible ALPN, it MUST close the connection.  The above requirements on ALPN apply to both new sessions, and to resumed sessions.</t>
        <t>In contrast, there is no need for the client to signal that there are no compatible application protocol names.  The client sends zero or more protocol names, and the server responds as above.  From the point of view of the client, the list it sent results in either a connection failure, or a connection success.</t>
        <t>It is RECOMMENDED that the server logs a descriptive error in this situation, so that an administrator can determine why a particular connection failed.  The log message SHOULD include information about the other end of the connection, such as IP address, certificate information, etc.  Similarly, when the client receives a TLS alert of "no_application_protocol" it SHOULD log a descriptive error message.  Such error messages are critical for helping administrators to diagnose connectivity issues.</t>
        <section anchor="using-protocol-error-for-signaling-alpn-failure">
          <name>Using Protocol-Error for Signaling ALPN Failure</name>
          <t>When it is not possible to send a TLS alert of "no_application_protocol" (120), then the only remaining method for one party to signal the other is to send application data inside of the TLS tunnel.  Therefore, for the situation when a one end of a connection determines that it requires ALPN while the other end does not support ALPN, the end requiring ALPN MAY send a Protocol-Error packet <xref target="RFC7930"/> inside of the tunnel, and then MUST close the connection.  If this is done, the Token field of the Protocol-Error packet cannot be copied from any request, and therefore that field MUST be set to all zeros.</t>
          <t>The Protocol-Error packet SHOULD contain a Reply-Message attribute with a textual string describing the cause of the error.  The packet SHOULD also contain an Error-Cause attribute, with value Unsupported Extension (406).  The packet SHOULD NOT contain other attributes.</t>
          <t>An implementation sending this packet could bypass any RADIUS encoder, and simply write this packet as a predefined, fixed set of data to the TLS connection.  That process would likely be simpler than trying to call the normal RADIUS packet encoder to encode a reply packet with no corresponding request packet.</t>
          <t>As this packet is an unexpected response packet, existing client implementations of RADIUS over TLS will ignore it.  They may either log an error and close the connection, or they may discard the packet and leave the connection open.  If the connection remains open, the end supporting ALPN will close the connection, so there will be no side effects from sending this packet.  Therefore, while using a Protocol-Error packet in this way is unusual, it is both informative and safe.</t>
          <t>The purpose of this packet is not to have the other end of the connection automatically determine what went wrong, and fix it.  Instead, the packet is intended to be (eventually) seen by an administrator, who can then take remedial action.</t>
        </section>
        <section anchor="tabular-summary">
          <name>Tabular Summary</name>
          <t>The preceding text gives a large number of recommendations.  In order to give a simpler description of the outcomes, a table of possible behaviors for client/server values of the Version flag is given below.  This table and the names given below are for informational and descriptive purposes only.</t>
          <figure>
            <name>Possible outcomes for ALPN Negotiation</name>
            <artwork><![CDATA[
                             Server
             no ALPN  |   1.0    | 1.0, 1.1 |    1.1
Client    |--------------------------------------------
----------|
No ALPN   |   TLS        TLS        TLS        Close-S
          |
1.0       |   TLS        TLS        TLS        Alert
          |
1.0, 1.1  |   TLS        TLS        1.1        1.1
          |
1.1       |   Close-C    Alert      1.1        1.1
]]></artwork>
          </figure>
          <t>The table entries above have the following meaning:</t>
          <ul empty="true">
            <li>
              <t>Alert</t>
              <ul empty="true">
                <li>
                  <t>The client sends ALPN, and the server does not agree to the clients ALPN proposal.  The server replies with a TLS alert of "no_application_protocol" (120), and then closes the TLS connection.</t>
                  <t>As the server replies with a TLS alert, the Protocol-Error packet is not used here.</t>
                </li>
              </ul>
              <t>Close-C</t>
              <ul empty="true">
                <li>
                  <t>The client sends ALPN, but the server does not respond with ALPN.  The client closes the connection.</t>
                  <t>As noted in the previous section, the client MAY send a Protocol-Error packet to the server before closing the connection.</t>
                </li>
              </ul>
              <t>Close-S</t>
              <ul empty="true">
                <li>
                  <t>The client does not send ALPN string(s), but the server requires ALPN.  The server closes the connection.</t>
                  <t>As noted in the previous section, the server MAY send a Protocol-Error packet to the client before closing the connection.  The server MAY also send a TLS alert of "no_application_protocol" (120) before closing the connection.</t>
                </li>
              </ul>
              <t>TLS</t>
              <ul empty="true">
                <li>
                  <t>Historic RADIUS/TLS is used.  The client either sends no ALPN string, or sends "radius/1.0".  The server either replies with no ALPN string, or with "radius/1.0".  The connection MUST use historic RADIUS/TLS.</t>
                </li>
              </ul>
              <t>1.1</t>
              <ul empty="true">
                <li>
                  <t>The client sends the ALPN string "radius/1.1.  The server acknowledges this negotiation with a reply of "radius/1.1", and then RADIUS/1.1 is used.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Implementations should note that this table may be extended in future specifications.  The above text is informative, and does not mandate that only the above ALPN strings are used.  The actual ALPN negotiation takes place as defined in the preceding sections of this document, and in <xref target="RFC7301"/>.</t>
        </section>
      </section>
      <section anchor="miscellaneous-items">
        <name>Miscellaneous Items</name>
        <t>Implementations of this specification MUST require TLS version 1.3 or later.</t>
        <t>The use of the ALPN string "radius/1.0" is technically unnecessary, as it is largely equivalent to not sending any ALPN string.  However, that value is useful for RADIUS administrators.  A system which sends the ALPN string "radius/1.0" is explicitly signaling that it supports ALPN negotiation, but that it is not currently configured to support RADIUS/1.1.  That information can be used by administrators to determine which devices are capable of ALPN.</t>
        <t>The use of the ALPN string "radius/1.0" also permits server implementations to send a TLS alert of "no_application_protocol" (120) when it cannot find a matching ALPN string.  Experiments with TLS library implementations suggest that in some cases it is possible to send that TLS alert when ALPN is not used.  However, such a scenario is not discussed on <xref target="RFC7301"/>, and is likely not universal.  As a result, ALPN as defined in <xref target="RFC7301"/> permits servers to send that TLS alert in situations where it would be otherwise forbidden, or perhaps unsupported.</t>
        <t>Finally, defining ALPN strings for all known RADIUS versions will make it easier to support additional ALPN strings if that functionality is ever needed.</t>
      </section>
      <section anchor="session-resumption">
        <name>Session Resumption</name>
        <t><xref section="3.1" sectionFormat="comma" target="RFC7301"/> states that ALPN is negotiated on each connection, even if session resumption is used:</t>
        <ul empty="true">
          <li>
            <t>When session resumption or session tickets <xref target="RFC5077"/> are used, the previous contents of this extension are irrelevant, and only the values in the new handshake messages are considered.</t>
          </li>
        </ul>
        <t>In order to prevent down-bidding attacks, RADIUS systems which negotiate the "radius/1.1" protocol MUST associate that information with the session ticket, and enforce the use of "radius/1.1" on session resumption.  That is, if "radius/1.1" was negotiated for a session, both clients and servers MUST behave as if the RADIUS/1.1 flag was set to "require" for that session.</t>
        <t>A client which is resuming a "radius/1.1" connection MUST advertise only the capability to do "radius/1.1" for the resumed session.  That is, even if the client configuration allows historic RADIUS/TLS for new connections, it MUST signal "radius/1.1" when resuming a session which had previously negotiated "radius/1.1".</t>
        <t>Similarly, when a server does resumption for a session which had previously negotiated "radius/1.1".   If the client attempts to resume the sessions without signaling the use of RADIUS/1.1, the server MUST close the connection.  The server MUST send an appropriate TLS error, and also SHOULD log a descriptive message as described above.</t>
        <t>In contrast, there is no requirement for a client or server to force the use of <xref target="RFC6614"/> RADIUS/TLS on session resumption.  Clients are free to signal support for "radius/1.1" on resumed sessions, even if the original session did not negotiate "radius/1.1".  Servers are free to accept this request, and to negotiate the use of "radius/1.1" for such sessions.</t>
      </section>
    </section>
    <section anchor="radius11-packet-and-attribute-formats">
      <name>RADIUS/1.1 Packet and Attribute Formats</name>
      <t>This section describes the application-layer data which is sent inside of (D)TLS when using the RADIUS/1.1 protocol.  Unless otherwise discussed herein, the application-layer data is unchanged from traditional RADIUS.  This protocol is only used when "radius/1.1" has been negotiated by both ends of a connection.</t>
      <section anchor="radius11-packet-format">
        <name>RADIUS/1.1 Packet Format</name>
        <t>When RADIUS/1.1 is used, the RADIUS header is modified from standard RADIUS.  While the header has the same size, some fields have different meaning.  The Identifier and the Request / Response Authenticator fields are no longer used in RADIUS/1.1.  Any operations which depend on those fields MUST NOT be performed.  As packet signing and security are handled by the TLS layer, RADIUS-specific cryptographic primitives are no longer in RADIUS/1.1.</t>
        <t>A summary of the RADIUS/1.1 packet format is shown below.  The fields are transmitted from left to right.</t>
        <figure anchor="Header">
          <name>The RADIUS/1.1 Packet Format</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code      |  Reserved-1   |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Token                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                           Reserved-2                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Attributes ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
]]></artwork>
        </figure>
        <t>Code</t>
        <ul empty="true">
          <li>
            <t>The Code field is one octet, and identifies the type of RADIUS packet.</t>
            <t>The meaning of the Code field is unchanged from previous RADIUS specifications.</t>
          </li>
        </ul>
        <t>Reserved-1</t>
        <ul empty="true">
          <li>
            <t>The Reserved-1 field is one octet.</t>
            <t>This field was previously used as the "Identifier" in historic RADIUS/TLS.  It is now unused, as the Token field replaces it both as the way to identify requests, and to associate responses with requests.</t>
            <t>When sending packets, the Reserved-1 field MUST be set to zero.  The Reserved-1 field MUST be ignored when receiving a packet.</t>
          </li>
        </ul>
        <t>Length</t>
        <ul empty="true">
          <li>
            <t>The Length field is two octets.</t>
            <t>The meaning of the Length field is unchanged from previous RADIUS specifications.</t>
          </li>
        </ul>
        <t>Token</t>
        <ul empty="true">
          <li>
            <t>The Token field is four octets, and aids in matching requests and
replies, as a replacement for the Identifier field.  The RADIUS server can detect a duplicate request if it receives
the same Token value for two packets on a particular connection.</t>
            <t>All values are possible for the Token field.  Implementations MUST treat the Token as an opaque blob when comparing Token values.</t>
            <t>Further requirements are given below in <xref target="sending-packets"/> for sending packets, and in <xref target="receiving-packets"/> for receiving packets.</t>
          </li>
        </ul>
        <t>Reserved-2</t>
        <ul empty="true">
          <li>
            <t>The Reserved-2 field is twelve (12) octets in length.</t>
            <t>These octets MUST be set to zero when sending a packet.</t>
            <t>These octets MUST be ignored when receiving a packet.</t>
            <t>These octets are reserved for future protocol extensions.</t>
          </li>
        </ul>
      </section>
      <section anchor="the-token-field">
        <name>The Token Field</name>
        <t>This section describes in more detail how the Token field is used.</t>
        <section anchor="sending-packets">
          <name>Sending Packets</name>
          <t>The Token field MUST change for every new unique packet which is sent on the same connection. For DTLS transport, it is possible to retransmit duplicate packets, in which case the Token value MUST NOT be changed when a duplicate packet is (re)sent.  When the contents of a retransmitted packet change for any reason (such changing Acct-Delay-Time as discussed in <xref section="5.2" sectionFormat="comma" target="RFC2866"/>), the Token value MUST be changed.  Note that on reliable transports, packets are never retransmitted, and therefore every new packet which is sent has a unique Token value.</t>
          <t>We note that in previous RADIUS specifications, the Identifier field could have the same value for different packets on the same connection.  For example, Access-Request (Code 1) and Accounting-Request (Code 4) packets could both use ID 3, and still be treated as different packets.  This overlap required that RADIUS clients and servers track the Identifier field, not only on a per-connection basis, but also on a per-Code basis.  This behavior adds complexity to implementations.</t>
          <t>In contrast, the Token values MUST be generated from a 32-bit counter which is unique to each connection.  Such a counter SHOULD be initialized to a random value, taken from a random number generator, whenever a new connection is opened.  The counter MUST then be incremented for every unique new packet which is sent by the client.  Retransmissions of the same packet MUST use the same unchanged Token value.  As the Token value is mandated to be unique per packet, a duplicate Token value is the only way that a server can detect duplicate transmissions.</t>
          <t>This counter method ensures that the Tokens are unique, and are also independent of any Code value in the RADIUS packet header.  This method is mandated because any other method of generating unique and non-conflicting Token values is more complex, with no additional benefit and only the likelihood of increased bugs and interoperability issues.  Any other method for generating Token values would require substantially more resources to track outstanding Token values and their associated expiry times.  The chance that initial values are re-used across two connections is one in 2^32, which is acceptable.</t>
          <t>The purpose for initializing the Token to a random counter is to aid administrators in debugging systems.  If the Token values always used the same sequence, then it would easier for a person to confuse different packets which have the same Token value.  By instead starting with a random value, those values are more evenly distributed across the set of allowed values, and are therefore more likely to be unique.</t>
          <t>As there is no special meaning for the Token, there is no meaning when a counter "wraps" around from a high value back to zero.  The originating system can simply continue to increment the Token value without taking any special action in that situation.</t>
          <t>Once a RADIUS response to a request has been received and there is no need to track the packet any longer, the Token value can be reused.  This reuse happens only when the counter "wraps around" after 2^32 packets have been sent over one connection.  This method of managing the counter automatically ensures a long delay (i.e. 2^32 packets) between multiple uses of the same Token value.   This large number of packets ensures that the only possible situation where there may be conflict is when a client sends billions of packets a second across one connection, or when a client sends billions of packets without receiving replies.  We suggest that such situations are vanishingly rare.  The best solution to those situations would be to limit the number out outstanding packets over one connection to a number much lower than billions.</t>
          <t>If a RADIUS client has multiple independent subsystems which send packets to a server, each subsystem MAY open a new connection which is unique to that subsystem.  There is no requirement that all packets go over one particular connection.  That is, despite the use of a 32-bit Token field, RADIUS/1.1 clients are still permitted to open multiple source ports as discussed in <xref target="RFC2865"/> Section 2.5.</t>
          <t>While multiple connections from client to server are allowed, We reiterate the suggestion of <xref section="3.3" sectionFormat="comma" target="RFC3539"/> that a single connection is preferred to multiple connections.  The use of a single connection can improve throughput and latency, while simplifying the clients efforts to determine server status.</t>
        </section>
        <section anchor="receiving-packets">
          <name>Receiving Packets</name>
          <t>A server which receives RADIUS/1.1 packets MUST perform packet deduplication for all situations where it is required by RADIUS.  Where RADIUS does not require deduplication (e.g. TLS transport), the server SHOULD NOT do deduplication.  However, DTLS transport is UDP-based, and therefore still requires deduplication.</t>
          <t>When using RADIUS/1.1, implementations MUST do deduplication only on the Token field, and not on any other field or fields in the packet header. A server MUST treat the Token as being an opaque field with no intrinsic meaning.  This requirement makes the receiver behavior independent of the methods by which the Counter is generated.</t>
          <t>Where Token deduplication is done, it MUST be done on a per-connection basis.  If two packets which are received on different connections contain the same Token value, then those packets MUST be treated as distinct (i.e. different) packets.  Systems performing deduplication MAY still track the packet Code, Length, and Attributes which is associated with a Token value.  If it determines that the sender is re-using Token values for distinct outstanding packets, then an error should be logged, and the connection MUST be closed.  There is no way to negotiate correct behavior in the protocol.  Either the parties both operate normally and can communicate, or one end misbehaves, and no communication is possible.</t>
          <t>Once a reply has been sent, a system doing deduplication SHOULD cache the replies as discussed in <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>:</t>
          <ul empty="true">
            <li>
              <t>Each cache entry SHOULD be purged after a period of time.  This time
SHOULD be no less than 5 seconds, and no more than 30 seconds.  After
about 30 seconds, most RADIUS clients and end users will have given
up on the authentication request.  Therefore, there is little value
in having a larger cache timeout.</t>
            </li>
          </ul>
          <t>This change from RADIUS means that the Identifier field is no longer useful for RADIUS/1.1.  The Reserved-1 field (previously used as the Identifier) MUST be set to zero when encoding all RADIUS/1.1 packets.  Implementations of RADIUS/1.1 which receive packets MUST ignore this field.</t>
        </section>
      </section>
    </section>
    <section anchor="attribute-handling">
      <name>Attribute handling</name>
      <t>Most attributes in RADIUS have no special encoding "on the wire", or any special meaning between client and server.  Unless discussed in this section, all RADIUS attributes are unchanged in this specification.  This requirement includes attributes which contain a tag, as defined in <xref target="RFC2868"/>.</t>
      <section anchor="obfuscated-attributes">
        <name>Obfuscated Attributes</name>
        <t>Since the (D)TLS layer provides for connection authentication, integrity checks, and confidentiality, there is no need to hide the contents of an attribute on a hop-by-hop basis.  As a result, all attributes defined as being obfuscated via the shared secret no longer have the obfuscation step applied when RADIUS/1.1 is used.  Instead, those attributes MUST be encoded using the encoding for the underlying data type, with any encryption / obfuscation step omitted.  For example, the User-Password attribute is no longer obfuscated, and is instead sent as data type "text".</t>
        <t>There are risks from sending passwords over the network, even when they are protected by TLS.  One such risk comes from the common practice of multi-hop RADIUS routing.  As all security in RADIUS is on a hop-by-hop basis, every proxy which receives a RADIUS packet can see (and modify) all of the information in the packet.  Sites wishing to avoid proxies SHOULD use dynamic peer discovery <xref target="RFC7585"/>, which permits clients to make connections directly to authoritative servers for a realm.</t>
        <t>There are others ways to mitigate these risks.  The simplest is to follow the requirements of <xref section="2.4" sectionFormat="comma" target="RFC6614"/> item (3) and <xref section="10.4" sectionFormat="comma" target="RFC7360"/>, which mandates that RADIUS over TLS implementations validate the peer before sending any RADIUS traffic.</t>
        <t>Another way to mitigate these risks is for the system being authenticated to use an authentication protocol which never sends passwords (e.g. EAP-pwd <xref target="RFC5931"/>), or which sends passwords protected by a TLS tunnel (e.g. EAP-TTLS <xref target="RFC5281"/>).  The processes to choose and configuring an authentication protocol are strongly site-dependent, so further discussion of these issues are outside of the scope of this document.  The goal here is to ensure that the reader has enough information to make an informed decision.</t>
        <t>We note that as the RADIUS shared secret is no longer used in this specification, it is no longer possible or necessary for any attribute to be obfuscated on a hop-by-hop basis using the previous methods defined for RADIUS.</t>
        <section anchor="user-password">
          <name>User-Password</name>
          <t>The User-Password attribute (<xref section="5.2" sectionFormat="comma" target="RFC2865"/>) MUST be encoded the same as any other attribute of data type 'string' (<xref section="3.5" sectionFormat="comma" target="RFC8044"/>).</t>
          <t>The contents of the User-Password field MUST be at least one octet in length, and MUST NOT be more than 128 octets in length.  This limitation is maintained from <xref section="5.2" sectionFormat="comma" target="RFC2865"/> for compatibility with historic transports.</t>
          <t>Note that the User-Password attribute is not of data type 'text'.  The original reason in <xref target="RFC2865"/> was because the attribute was encoded as an opaque and obfuscated binary blob.  We maintain that data type here, even though the attribute is no longer obfuscated.  The contents of the User-Password attribute do not have to be printable text, or UTF-8 data as per the definition of the 'text' data type in <xref section="3.4" sectionFormat="comma" target="RFC8044"/>.</t>
          <t>However, implementations should be aware that passwords are often printable text, and where the passwords are printable text, it can be useful to store and display them as printable text.  Where implementations can process non-printable data in the 'text' data type, they MAY use the data type 'text' for User-Password.</t>
        </section>
        <section anchor="chap-challenge">
          <name>CHAP-Challenge</name>
          <t><xref section="5.3" sectionFormat="comma" target="RFC2865"/> allows for the CHAP challenge to be taken from either the CHAP-Challenge attribute (<xref section="5.40" sectionFormat="comma" target="RFC2865"/>), or the Request Authenticator field.  Since RADIUS/1.1 connections no longer use a Request Authenticator field, it is no longer possible to use the Request Authenticator field as the CHAP-Challenge when this transport profile is used.</t>
          <t>Clients which send CHAP-Password attribute (<xref section="5.3" sectionFormat="comma" target="RFC2865"/>) in an Access-Request packet over a RADIUS/1.1 connection MUST also include a CHAP-Challenge attribute (<xref section="5.40" sectionFormat="comma" target="RFC2865"/>).</t>
          <t>Proxies may need to receive Access-Request packets over a non-RADIUS/1.1 transport and then forward those packets over a RADIUS/1.1 connection.  In that case, if the received Access-Request packet contains a CHAP-Password attribute but no CHAP-Challenge attribute, the proxy MUST create a CHAP-Challenge attribute in the proxied packet using the contents from the incoming Request Authenticator of the received packet.</t>
        </section>
        <section anchor="tunnel-password">
          <name>Tunnel-Password</name>
          <t>The Tunnel-Password attribute (<xref section="3.5" sectionFormat="comma" target="RFC2868"/>) MUST be encoded the same as any other attribute of data type 'string' which contains a tag, such as Tunnel-Client-Endpoint (<xref section="3.3" sectionFormat="comma" target="RFC2868"/>).  Since the attribute is no longer obfuscated in RADIUS/1.1, there is no need for a Salt field or Data-Length fields as described in <xref section="3.5" sectionFormat="comma" target="RFC2868"/>, and the textual value of the password can simply be encoded as-is.</t>
          <t>Note that the Tunnel-Password attribute is not of data type 'text'.  The original reason in <xref target="RFC2868"/> was because the attribute was encoded as an opaque and obfuscated binary blob.  We maintain that data type here, even though the attribute is no longer obfuscated.  The contents of the Tunnel-Password attribute do not have to be printable text, or UTF-8 data as per the definition of the 'text' data type in <xref section="3.4" sectionFormat="comma" target="RFC8044"/>.</t>
          <t>However, implementations should be aware that passwords are often printable text, and where the passwords are printable text, it can be useful to store and display them as printable text.  Where implementations can process non-printable data in the 'text' data type, they MAY use the data type 'text' for Tunnel-Password.</t>
        </section>
        <section anchor="vendor-specific-attributes">
          <name>Vendor-Specific Attributes</name>
          <t>Any Vendor-Specific attribute which uses similar obfuscation MUST be encoded as per their base data type.  Specifically, the MS-MPPE-Send-Key and MS-MPPE-Recv-Key attributes (<xref section="2.4" sectionFormat="comma" target="RFC2548"/>) MUST be encoded as any other attribute of data type 'string' (<xref section="3.4" sectionFormat="comma" target="RFC8044"/>).</t>
        </section>
      </section>
      <section anchor="message-authenticator">
        <name>Message-Authenticator</name>
        <t>The Message-Authenticator attribute (<xref section="3.2" sectionFormat="comma" target="RFC3579"/>) MUST NOT be sent over a RADIUS/1.1 connection.  That attribute is not used or needed in RADIUS/1.1.</t>
        <t>If the Message-Authenticator attribute is received over a RADIUS/1.1 connection, the attribute MUST be silently discarded, or treated as an "invalid attribute", as defined in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>.  That is, the Message-Authenticator attribute is no longer used to sign packets for the RADIUS/1.1 transport.  Its existence (or not) in this transport is meaningless.</t>
        <t>A system which receives a Message-Authenticator attribute in a packet MUST treat it as an "invalid attribute" as defined in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>.  That is, the packet can still be processed, even if the Message-Authenticator attribute is ignored.</t>
        <t>For proxies, the Message-Authenticator attribute has always been defined as being created and consumed on a "hop by hop" basis.  That is, a proxy which received a Message-Authenticator attribute from a client would never forward that attribute as-is to another server.  Instead, the proxy would either suppress, or re-create, the Message-Authenticator attribute in the outgoing request.  This existing behavior is leveraged in RADIUS/1.1 to suppress the use of Message-Authenticator over a RADIUS/1.1 connection.</t>
        <t>A proxy may receive an Access-Request packet over a RADIUS/1.1 connection, and then forward that packet over a RADIUS/UDP or a RADIUS/TCP connection.  In that situation, the proxy SHOULD add a Message-Authenticator attribute to every Access-Request packet which is sent over an insecure transport protocol.</t>
        <t>The original text in <xref section="3.3" sectionFormat="comma" target="RFC3579"/>, "Note 1" paragraph required that the Message-Authenticator attribute be present for certain Access-Request packets.  It also required the use of Message-Authenticator when the Access-Request packet contained an EAP-Message attribute.  Experience has shown that some RADIUS clients never use the Message-Authenticator, even for the situations where its use is suggested.</t>
        <t>When the Message-Authenticator attribute is missing from Access-Request packets, it is often possible to trivially forge or replay those packets.  As such, this document RECOMMENDS that RADIUS clients always include Message-Authenticator in Access-Request packets when using UDP or TCP transport.  As the scope of this document is limited to defining RADIUS/1.1, we cannot mandate that behavior here.  Instead, we can note that there are no known negatives to this behavior, and there are definite positives, such as increased security.</t>
      </section>
      <section anchor="message-authentication-code">
        <name>Message-Authentication-Code</name>
        <t>Similarly, the Message-Authentication-Code attribute defined in <xref section="3.3" sectionFormat="comma" target="RFC6218"/> MUST NOT be sent over a RADIUS/1.1 connection.  If it is received in a packet, it MUST be treated as "invalid attribute" as defined in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>.</t>
        <t>As the Message-Authentication-Code attribute is no longer used in RADIUS/1.1, the related MAC-Randomizer attribute <xref section="3.2" sectionFormat="comma" target="RFC6218"/> MUST NOT be sent over a RADIUS/1.1 connection.  If it is received in a packet, it MUST be treated as "invalid attribute" as defined in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>.</t>
      </section>
      <section anchor="chap-ms-chap-etc">
        <name>CHAP, MS-CHAP, etc.</name>
        <t>While some attributes such as CHAP-Password, etc. depend on insecure cryptographic primitives such as MD5, these attributes are treated as opaque blobs when sent between a RADIUS client and server.  The contents of the attributes are not obfuscated, and they do not depend on the RADIUS shared secret.  As a result, these attributes are unchanged in RADIUS/1.1.</t>
        <t>A server implementing this specification can proxy CHAP, MS-CHAP, etc. without any issue.  A home server implementing this specification can authenticate CHAP, MS-CHAP, etc. without any issue.</t>
      </section>
      <section anchor="original-packet-code">
        <name>Original-Packet-Code</name>
        <t><xref section="4" sectionFormat="comma" target="RFC7930"/> defines an Original-Packet-Code attribute.  This attribute is needed because otherwise it is impossible to correlate the Protocol-Error response packet with a particular request packet.  The definition in <xref section="4" sectionFormat="comma" target="RFC7930"/> describes the reasoning behind this need:</t>
        <ul empty="true">
          <li>
            <t>The Original-Packet-Code contains the code
from the request that generated the protocol error so that clients
can disambiguate requests with different codes and the same ID.</t>
          </li>
        </ul>
        <t>This attribute is no longer needed in RADIUS/1.1.  The Identifier field is unused, so it impossible for two requests to have the "same" ID.  Instead, the Token field permits clients and servers to correlate requests and responses, independent of the Code value being used.</t>
        <t>Therefore, the Original-Packet-Code attribute (<xref section="4" sectionFormat="comma" target="RFC7930"/>) MUST NOT be sent over a RADIUS/1.1 connection.  If it is received in a packet, it MUST be treated as "invalid attribute" as defined in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>.</t>
      </section>
    </section>
    <section anchor="other-considerations-when-using-alpn">
      <name>Other Considerations when using ALPN</name>
      <t>Most of the differences between RADIUS and RADIUS/1.1 are in the packet header and attribute handling, as discussed above.  The remaining issues are a small set of unrelated topics, and are discussed here.</t>
      <section anchor="protocol-error">
        <name>Protocol-Error</name>
        <t>There are a number of situations where a RADIUS server is unable to respond to a request.  One situation is where the server depends on a database, and the database is down.  While arguably the server should close all incoming connections when it is unable to do anything, this action is not always effective.  A client may aggressively try to open new connections, or send packets to an unconnected UDP destination where the server is not listening.  Another situation where the server is unable to respond is when the server is proxying packets, and the outbound connections are either full or failed.</t>
        <t>In all RADIUS spercifications prior to this one, there is no way for the server to send a client the positive signal that it received a request, but is unable to send a response.  Instead, the server usually just discards the request, which to the client is indistinguishable from the situation where the server is down.  This failure case is made worse by the fact that perhaps some proxied packets succeed while others fail.  The client can only conclude then that the server is randomly dropping packets, and is unreliable.</t>
        <t>It would be very useful for servers to signal to clients that they have received a request, but are unable to process it.  This specification uses the Protocol-Error packet <xref section="4" sectionFormat="comma" target="RFC7930"/> as that signal.  The use of Protocol-Error allows for both hop-by-hop signaling in the case of proxy forwarding errors, and also for end-to-end signaling of server to client.  Such signaling should greatly improve the robustness of the RADIUS protocol.</t>
        <t>When a RADIUS/1.1 server determines that it is unable to process an Access-Request or Accounting-Request packet, it MUST respond with a Protocol-Error packet containing an Error-Cause attribute.  A proxy which cannot forward the packet MUST respond with either 502 (Request Not Routable (Proxy)), or 505 (Other Proxy Processing Error).  This requirement is to help distinguish failures in the proxy chain from failures at the home server,</t>
        <t>For a home server, if none of the Error-Cause values match the reason for the failure, then the value 506 (Resources Unavailable) MUST be used.</t>
        <t>When a RADIUS proxy receives a Protocol-Error reply, it MUST examine the value of the Error-Cause attribute.  If there is no Error-Cause attribute, or its value is something other than 502 (Request Not Routable (Proxy)), 505 (Other Proxy Processing Error), or 506 (Resources Unavailable), the proxy MUST return the Protocol-Error response packet to the client, and include the Error-Cause attribute from the response it received.  This process allows for full "end to end" signaling of servers to clients.</t>
        <t>In all situations other then outlined in the preceding paragraph, a client which receives a Protocol-Error reply MUST re-process the original outgoing packet through the client forwarding algorithm.  This requirement includes both clients which originate RADIUS traffic, and proxies which see an Error-Cause attribute of 502 (Request Not Routable (Proxy)), or 505 (Other Proxy Processing Error).</t>
        <t>The expected result of this processing is that the client forwards the packet to a different server.  Clients MUST NOT forward the packet over the same connection, and SHOULD NOT forward it to over a different connection to the same server.</t>
        <t>This process may continue over multiple connections and multiple servers, until the client either times out the request, or fails to find a forwarding destination for the packet.  A proxy which is unable to forward a packet MUST reply with a Protocol-Error packet containing Error-Cause, as defined above.  A client which originates packets MUST treat such a request as if it had received no response.</t>
        <t>This behavior is intended to improve the stability of the RADIUS protocol by addressing issues first raised in <xref section="2.8" sectionFormat="comma" target="RFC3539"/>.</t>
      </section>
      <section anchor="status-server">
        <name>Status-Server</name>
        <t><xref section="2.6.5" sectionFormat="comma" target="RFC6613"/>, and by extension <xref target="RFC7360"/>, suggest that the Identifier value zero (0) be reserved for use with Status-Server as an application-layer watchdog.  This practice MUST NOT be used for RADIUS/1.1, as the Identifier field is not used in this transport profile.</t>
        <t>The rationale for reserving one value of the Identifier field was the limited number of Identifiers available (256), and the overlap in Identifiers between Access-Request packets and Status-Server packets.  If all 256 Identifier values had been used to send Access-Request packets, then there would be no Identifier value available for sending a Status-Server packet.</t>
        <t>In contrast, the Token field allows for 2^32 outstanding packets on one RADIUS/1.1 connection.  If there is a need to send a Status-Server packet, it is nearly always possible to allocate a new value for the Token field.  If instead there are 2^32 outstanding packets for one connection, then it is likely that something has gone catastrophically wrong.  In that case, the safest way forward is likely to just close the connection.</t>
      </section>
      <section anchor="proxies">
        <name>Proxies</name>
        <t>A RADIUS proxy normally decodes and then re-encodes all attributes, included obfuscated ones.  A RADIUS proxy will not generally rewrite the content of the attributes it proxies (unless site-local policy requires such a rewrite).  While some attributes may be modified due to administrative or policy rules on the proxy, the proxy will generally not rewrite the contents of attributes such as User-Password, Tunnel-Password, CHAP-Password, MS-CHAP-Password, MS-MPPE keys, etc.  All attributes are therefore transported through a RADIUS/1.1 connection without changing their values or contents.</t>
        <t>A proxy may negotiate RADIUS/1.1 (or not) with a particular client or clients, and it may negotiate RADIUS/1.1 (or not) with a server or servers it connect to, in any combination.  As a result, this specification is fully compatible with all past, present, and future RADIUS attributes.</t>
      </section>
    </section>
    <section anchor="other-radius-considerations">
      <name>Other RADIUS Considerations</name>
      <t>This section discusses issues in RADIUS which need to be addressed in order to support ALPN, but which aren't direcly part of the RADIUS/1.1 protocol.</t>
      <section anchor="crypto-agility">
        <name>Crypto-Agility</name>
        <t>The crypto-agility requirements of <xref target="RFC6421"/> are addressed in <xref section="C" sectionFormat="comma" target="RFC6614"/>, and in <xref section="10.1" sectionFormat="comma" target="RFC7360"/>.  This specification makes no changes from, or additions to, those specifications.  The use of ALPN, and the removal of MD5 has no impact on security or privacy of the protocol.</t>
        <t>RADIUS/TLS has been widely deployed in at least eduroam <xref target="RFC7593"/> and <xref target="EDUROAM"/> and in OpenRoaming <xref target="OPENROAMING"/>.  RADIUS/DTLS has seen less adoption, but it is known to be supported in many RADIUS clients and servers.</t>
        <t>It is RECOMMENDED that all implementations of historic RADIUS/TLS be updated to support this specification.  Where a system already implements RADIUS over TLS, the additional effort to implement this specification is minimal.  Once implementations support it, administrators can gain the benefit of it with little or no configuration changes.  This specification is backwards compatible with <xref target="RFC6614"/> and <xref target="RFC7360"/>.  It is only potentially subject to down-bidding attacks if implementations do not enforce ALPN negotiation correctly on session resumption.</t>
        <t>All crypto-agility needed or used by this specification is implemented in TLS.  This specification also removes all cryptographic primitives from the application-layer protocol (RADIUS) being transported by TLS.  As discussed in the following section, this specification also bans the development of all new cryptographic or crypto-agility methods in the RADIUS protocol.</t>
      </section>
      <section anchor="error-cause-attribute">
        <name>Error-Cause Attribute</name>
        <t>The Error-Cause attribute is defined in <xref target="RFC5176"/>. The "Table of Attributes" section given in <xref section="3.6" sectionFormat="comma" target="RFC5176"/> permits that attribute to appear in CoA-NAK and Disconnect-NAK packets.  As no other packet type is listed, the implication is that the Error-Cause attribute cannot appear in any other packet.  <xref target="RFC7930"/> also permits Error-Cause to appear in Protocol-Error packets.</t>
        <t>However, <xref section="2.6.1" sectionFormat="comma" target="RFC5080"/> suggests that Error-Cause may appear in Access-Reject packets.  No explanation is given for this change from <xref target="RFC5176"/>.  There is not even an acknowledgment that this suggestion is a change from any previous specification.  We correct that issue here.</t>
        <t>This specification updates <xref target="RFC5176"/> to allow the Error-Cause attribute to appear in Access-Reject packets.  It is RECOMMENDED that implementations include the Error-Cause attribute in Access-Reject packets where appropriate.</t>
        <t>That is, the reason for sending the Access-Reject packet (or Protocol-Error packet) may match a defined Error-Cause value.  In that case, it is useful for implementations to send an Error-Cause attribute with that value.  This behavior can help RADIUS system administrators debug issues in complex proxy chains.</t>
        <t>For example, a proxy may normally forward Access-Request packets which contain EAP-Message attributes.  The proxy can determine if the contents of the EAP-Message are invalid, for example if the first octet has value larger than 4.  In that case, there may be no benefit to forwarding the packet, as the home server will reject it.  It may then then possible for the proxy (with the knowledge and consent of involved parties) to immediately reply with an Access-Reject containing an Error-Cause attribute with value 202 for "Invalid EAP Packet (Ignored)".</t>
        <t>Another possibility is that if a proxy is configured to forward packets for a particular realm, but it has determined that there are no available connections to the next hop for that realm.  In that case, it may be possible for the proxy (again with the knowledge and consent of involved parties) to reply with an Access-Reject containing an Error-Cause attribute with value 502 for "Request Not Routable (Proxy)"</t>
        <t>These examples are given only for illustrative and informational purposes.  While it is useful to return an informative value for the Error-Cause attribute, proxies can only modify the traffic they forward with the explicit knowledge and consent of all involved parties.</t>
      </section>
      <section anchor="future-standards">
        <name>Future Standards</name>
        <t>Future work may define new attributes, packet types, etc.  It is important to be able to do such work without requiring that every new standard mention RADIUS/1.1 explicitly.  This document defines RADIUS/1.1 as having functional overlap with legacy RADIUS: the protocol state machine is unchanged, the packet header Code field is unchanged, and the attribute format is largely unchanged.  As a result, any new packet Code or attribute defined for RADIUS is explicitly compatible with RADIUS/1.1: the field contents and meanings are identical.  The only difference between the two protocols is that obfuscated attributes in RADIUS are not obfuscated in RADIUS/1.1, and this document defines how that mapping is done.</t>
        <t>Any future specification needs to mention RADIUS/1.1 only if it adds fields to the RADIUS/1.1 packet header.  Otherwise, transport considerations for RADIUS/1.1 are identical to RADIUS over (D)TLS.</t>
        <t>We reiterate that this specification defines a new transport profile for RADIUS.  It does not define a completely new protocol.  Any future specification which defines a new attribute MUST define it for RADIUS/UDP first, after which those definitions can be applied to this transport profile.</t>
        <t>New specifications MAY define new attributes which use the obfuscation methods for User-Password as defined in <xref section="5.2" sectionFormat="comma" target="RFC2865"/>, or for Tunnel-Password as defined in <xref section="3.5" sectionFormat="comma" target="RFC2868"/>.  There is no need for those specifications to describe how those new attributes are transported in RADIUS/1.1.  Since RADIUS/1.1 does not use MD5, any obfuscated attributes will by definition be transported as their underlying data type, "text" (<xref section="3.4" sectionFormat="comma" target="RFC8044"/>) or "string" (<xref section="3.5" sectionFormat="comma" target="RFC8044"/>).</t>
        <t>New RADIUS specifications MUST NOT define attributes which can only be transported via RADIUS over TLS.  The RADIUS protocol has no way to signal the security requirements of individual attributes.  Any existing implementation will handle these new attributes as "invalid attributes" (<xref section="2.8" sectionFormat="comma" target="RFC6929"/>), and could forward them over an insecure link.  As RADIUS security and signaling is hop-by-hop, there is no way for a RADIUS client or server to even know if such forwarding is taking place.  For these reasons and more, it is therefore inappropriate to define new attributes which are only secure if they use a secure transport layer.</t>
        <t>The result is that specifications do not need to mention this transport profile, or make any special provisions for dealing with it.  This specification defines how RADIUS packet encoding, decoding, signing, and verification are performed when using RADIUS/1.1.  So long as any future specification uses the existing encoding, etc. schemes defined for RADIUS, no additional text in future documents is necessary in order to be compatible with RADIUS/1.1.</t>
        <t>We note that it is theoretically possible for future standards to define new cryptographic primitives for use with RADIUS/UDP.  In that case, those documents would likely have to describe how to transport that data in RADIUS/1.1.  We believe that such standards are unlikely to be published, as other efforts in the RADEXT working group are forbidding such updates to RADIUS.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>(This section to be removed by the RFC editor.)</t>
      <t>This specification is being implemented (client and server) in the FreeRADIUS project which is hosted on GitHub at https://github.com/FreeRADIUS/freeradius-server/tree/v3.2.x  The code implementation "diff" is approximately 1,000 lines, including build system changes and changes to configuration parsers.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This specification requires secure transport for RADIUS.  RADIUS/1.1. has all of the privacy benefits of RADIUS/TLS <xref target="RFC6614"/> and RADIUS/DTLS <xref target="RFC7360"/>, and none of the privacy or security issues of RADIUS/UDP <xref target="RFC2865"/> or RADIUS/TCP <xref target="RFC6613"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The primary focus of this document is addressing security considerations for RADIUS.  This specification relies on TLS and associated ALPN negotiation for much of its security.  We refer the reader to <xref target="RFC8446"/> and <xref target="RFC7360"/> for discussions of the security of those protocols.  The discussion in this section is limited to issues unique to this specification.</t>
      <t>Implementations should rely on the underlying TLS library to perform ALPN version negotiation.  That is, implementations should supply a list of permitted ALPN strings to the TLS library, and let it return the negotiated value.</t>
      <t>There are few other opportunities for security issues.  If an implementation gets ALPN negotiation wrong, then the wrong application data will be transported inside of TLS.  While RADIUS/1.0 and RADIUS/1.1 share similar packet formats, the protocols are not mutually compatible.</t>
      <t>RADIUS/1.0 requests sent over a RADIUS/1.1 connection may be accepted by the RADIUS/1.1 server, as the server will ignore the ID field, and try to use portions of the Request Authenticator as a Token.  However, the reply from the RADIUS/1.1 server will fail the Response Authenticator validation by the RADIUS/1.0 client.  The responses will therefore be dropped.  The client will generally log these failures, and an administrator will address the issue.</t>
      <t>RADIUS/1.1 requests sent over a RADIUS/1.0 connection will generally be discarded the the RADIUS/1.0 server, as the packets will fail the Request Authenticator checks.  That is, all request packets such as Accounting-Request, CoA-Request, and Disconnect-Request will be discarded by the server.  For Access-Request packets containing EAP-Message, the packets will be missing Message-Authenticator, and will therefore be discarded by the server.  Other Access-Request packets contain obfuscated attributes such as User-Password will have those attributes decoded to nonsense, and will thus result in Access-Reject responses.</t>
      <t>RADIUS/1.1 Access-Request packets containing non-obfuscated attributes such as CHAP-Password may be accepted by a RADIUS/1.0 server but the response will contain a Response Authenticator (i.e. MD5 hash), and not a Token which matches the Token in the request.  A similar analysis applies for Access-Request packets containing Service-Type = Authorize-Only.</t>
      <t>In conclusion, any mismatch of versions between client and server will result in most request packets being discarded by the server, and all response packets being discarded by the client.  The two protocols are therefore incompatible, and safe from misconfigurations or erroneous implementations.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry with two new entries:</t>
      <artwork><![CDATA[
Protocol: RADIUS/1.0
Id. Sequence: 0x72 0x61 0x64 0x69 0x75 0x73 0x2f 0x31 0x2e 0x30
    ("radius/1.0")
Reference:  This document

Protocol: RADIUS/1.1
Id. Sequence: 0x72 0x61 0x64 0x69 0x75 0x73 0x2f 0x31 0x2e 0x31
    ("radius/1.1")
Reference:  This document
]]></artwork>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>In hindsight, the decision to retain MD5 for historic RADIUS/TLS was likely wrong.  It was an easy decision to make in the short term, but it has caused ongoing problems which this document addresses.</t>
      <t>Thanks to Bernard Aboba, Karri Huhtanen, Heikki Vatiainen, Alexander Clouter, Michael Richardson, Hannes Tschofenig, Matthew Newton, and Josh Howlett for reviews and feedback.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <t>(This section to be removed by the RFC editor.)</t>
      <t>draft-dekok-radext-sradius-00</t>
      <ul empty="true">
        <li>
          <t>Initial Revision</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-00</t>
      <ul empty="true">
        <li>
          <t>Use ALPN from RFC 7301, instead of defining a new port.  Drop the name "SRADIUS".</t>
          <t>Add discussion of Original-Packet-Code</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-01</t>
      <ul empty="true">
        <li>
          <t>Update formatting.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-02</t>
      <ul empty="true">
        <li>
          <t>Add Flag field and description.</t>
          <t>Minor rearrangements and updates to text.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-03</t>
      <ul empty="true">
        <li>
          <t>Remove Flag field and description based on feedback and expected use-cases.</t>
          <t>Use "radius/1.0" instead of "radius/1"</t>
          <t>Consistently refer to the specification as "RADIUSv11", and consistently quote the ALPN name as "radius/1.1"</t>
          <t>Add discussion of future attributes and future crypto-agility work.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-04</t>
      <ul empty="true">
        <li>
          <t>Remove "radius/1.0" as it is unnecessary.</t>
          <t>Update Introduction with more historical background, which motivates the rest of the section.</t>
          <t>Change Identifier field to be reserved, as it is entirely unused.</t>
          <t>Update discussion on clear text passwords.</t>
          <t>Clarify discussion of Status-Server, User-Password, and Tunnel-Password.</t>
          <t>Give high level summary of ALPN, clear up client / server roles, and remove "radius/1.0" as it is unnecessary.</t>
          <t>Add text on RFC6421.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-05</t>
      <ul empty="true">
        <li>
          <t>Clarify naming.  "radius/1.1" is the ALPN name.  "RADIUS/1.1" is the transport profile.</t>
          <t>Clarify that future specifications do not need to make provisions for dealing with this transport profile.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Typos and word smithing.</t>
          <t>Define and use "RADIUS over TLS" instead of RADIUS/(D)TLS.</t>
          <t>Many cleanups and rework based on feedback from Matthew Newton.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-00</t>
      <ul empty="true">
        <li>
          <t>No changes from previous draft.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-01</t>
      <ul empty="true">
        <li>
          <t>Move to "experimental" based on WG feedback.</t>
          <t>Many cleanups based on review from Matthew Newton</t>
          <t>Removed requirement for supporting TLS-PSK.</t>
          <t>This document does not deprecate new cryptographic work in RADIUS.  The "deprecating insecure transports" document does that.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-02</t>
      <ul empty="true">
        <li>
          <t>Note that we also update RFC 7930</t>
          <t>Minor updates to text.</t>
          <t>Add text explaining why "allow" is the default, and how to upgrade to "require"</t>
          <t>Discuss the use of the TLS alert "no_application_protocol" (120), and its limitations.</t>
          <t>Suggest the use of Protocol-Error as an application signal when it is not possible to send a "no_application_protocol" TLS alert.</t>
          <t>Update discussion of Message-Authenticator, and suggest that RADIUS/1.1 proxies always add Message-Authenticator to Access-Request packets being sent over UDP or TCP.</t>
          <t>Add term "historic RADIUS/TLS" as it is simpler than more awkward "6614 or 7360".</t>
          <t>Re-add ALPN "radius/1.0" based on comments from Heikki.  It signals that the system is ALPN-capable, among other.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-03</t>
      <ul empty="true">
        <li>
          <t>Rename to "RADIUS ALPN and removing MD5"</t>
          <t>Add a few things missed when re-adding "radius/1.0"</t>
          <t>Clarify wording in a number of places.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-04</t>
      <ul empty="true">
        <li>
          <t>Address github issues 3..9</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-05</t>
      <ul empty="true">
        <li>
          <t>Add discussion of Protocol-Error as per-link signalling.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-06</t>
      <ul empty="true">
        <li>
          <t>Review from Paul Wouters</t>
          <t>Clarify client handling of Protocol-Error</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-07</t>
      <ul empty="true">
        <li>
          <t>Clarifications as requested by Jan-Frederik</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-08</t>
      <ul empty="true">
        <li>
          <t>Review from Claudio Allocchio</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-09</t>
      <ul empty="true">
        <li>
          <t>Review from Barry Lieba</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <reference anchor="RFC6421">
          <front>
            <title>Crypto-Agility Requirements for Remote Authentication Dial-In User Service (RADIUS)</title>
            <author fullname="D. Nelson" initials="D." role="editor" surname="Nelson"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This memo describes the requirements for a crypto-agility solution for Remote Authentication Dial-In User Service (RADIUS). This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6421"/>
          <seriesInfo name="DOI" value="10.17487/RFC6421"/>
        </reference>
        <reference anchor="RFC6929">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS) Protocol Extensions</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Service (RADIUS) protocol is nearing exhaustion of its current 8-bit Attribute Type space. In addition, experience shows a growing need for complex grouping, along with attributes that can carry more than 253 octets of data. This document defines changes to RADIUS that address all of the above problems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6929"/>
          <seriesInfo name="DOI" value="10.17487/RFC6929"/>
        </reference>
        <reference anchor="RFC6614">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP as the transport protocol. This enables dynamic trust relationships between RADIUS servers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6614"/>
          <seriesInfo name="DOI" value="10.17487/RFC6614"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC7360">
          <front>
            <title>Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="September" year="2014"/>
            <abstract>
              <t>The RADIUS protocol defined in RFC 2865 has limited support for authentication and encryption of RADIUS packets. The protocol transports data in the clear, although some parts of the packets can have obfuscated content. Packets may be replayed verbatim by an attacker, and client-server authentication is based on fixed shared secrets. This document specifies how the Datagram Transport Layer Security (DTLS) protocol may be used as a fix for these problems. It also describes how implementations of this proposal can coexist with current RADIUS systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7360"/>
          <seriesInfo name="DOI" value="10.17487/RFC7360"/>
        </reference>
        <reference anchor="RFC8044">
          <front>
            <title>Data Types in RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>RADIUS specifications have used data types for two decades without defining them as managed entities. During this time, RADIUS implementations have named the data types and have used them in attribute definitions. This document updates the specifications to better follow established practice. We do this by naming the data types defined in RFC 6158, which have been used since at least the publication of RFC 2865. We provide an IANA registry for the data types and update the "RADIUS Attribute Types" registry to include a Data Type field for each attribute. Finally, we recommend that authors of RADIUS specifications use these types in preference to existing practice. This document updates RFCs 2865, 3162, 4072, 6158, 6572, and 7268.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8044"/>
          <seriesInfo name="DOI" value="10.17487/RFC8044"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC2548">
          <front>
            <title>Microsoft Vendor-specific RADIUS Attributes</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <date month="March" year="1999"/>
            <abstract>
              <t>This document describes the set of Microsoft vendor-specific RADIUS attributes. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2548"/>
          <seriesInfo name="DOI" value="10.17487/RFC2548"/>
        </reference>
        <reference anchor="RFC2866">
          <front>
            <title>RADIUS Accounting</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying accounting information between a Network Access Server and a shared Accounting Server. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2866"/>
          <seriesInfo name="DOI" value="10.17487/RFC2866"/>
        </reference>
        <reference anchor="RFC2868">
          <front>
            <title>RADIUS Attributes for Tunnel Protocol Support</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="D. Leifer" initials="D." surname="Leifer"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="J. Shriver" initials="J." surname="Shriver"/>
            <author fullname="M. Holdrege" initials="M." surname="Holdrege"/>
            <author fullname="I. Goyret" initials="I." surname="Goyret"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document defines a set of RADIUS (Remote Authentication Dial In User Service) attributes designed to support the provision of compulsory tunneling in dial-up networks. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2868"/>
          <seriesInfo name="DOI" value="10.17487/RFC2868"/>
        </reference>
        <reference anchor="RFC3539">
          <front>
            <title>Authentication, Authorization and Accounting (AAA) Transport Profile</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Wood" initials="J." surname="Wood"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document discusses transport issues that arise within protocols for Authentication, Authorization and Accounting (AAA). It also provides recommendations on the use of transport by AAA protocols. This includes usage of standards-track RFCs as well as experimental proposals. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3539"/>
          <seriesInfo name="DOI" value="10.17487/RFC3539"/>
        </reference>
        <reference anchor="RFC3579">
          <front>
            <title>RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>This document defines Remote Authentication Dial In User Service (RADIUS) support for the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication mechanisms. In the proposed scheme, the Network Access Server (NAS) forwards EAP packets to and from the RADIUS server, encapsulated within EAP-Message attributes. This has the advantage of allowing the NAS to support any EAP authentication method, without the need for method- specific code, which resides on the RADIUS server. While EAP was originally developed for use with PPP, it is now also in use with IEEE 802. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3579"/>
          <seriesInfo name="DOI" value="10.17487/RFC3579"/>
        </reference>
        <reference anchor="RFC5176">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba"/>
            <author fullname="G. Dommety" initials="G." surname="Dommety"/>
            <author fullname="M. Eklund" initials="M." surname="Eklund"/>
            <author fullname="D. Mitton" initials="D." surname="Mitton"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a currently deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, allowing dynamic changes to a user session, as implemented by network access server products. This includes support for disconnecting users and changing authorizations applicable to a user session. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5176"/>
          <seriesInfo name="DOI" value="10.17487/RFC5176"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6218">
          <front>
            <title>Cisco Vendor-Specific RADIUS Attributes for the Delivery of Keying Material</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="T. Zhang" initials="T." surname="Zhang"/>
            <author fullname="J. Walker" initials="J." surname="Walker"/>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines a set of vendor-specific RADIUS Attributes designed to allow both the secure transmission of cryptographic keying material and strong authentication of any RADIUS message. These attributes have been allocated from the Cisco vendor-specific space and have been implemented by multiple vendors. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6218"/>
          <seriesInfo name="DOI" value="10.17487/RFC6218"/>
        </reference>
        <reference anchor="RFC6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Server (RADIUS) protocol has, until now, required the User Datagram Protocol (UDP) as the underlying transport layer. This document defines RADIUS over the Transmission Control Protocol (RADIUS/TCP), in order to address handling issues related to RADIUS over Transport Layer Security (RADIUS/TLS). It permits TCP to be used as a transport protocol for RADIUS only when a transport layer such as TLS or IPsec provides confidentiality and security. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6613"/>
          <seriesInfo name="DOI" value="10.17487/RFC6613"/>
        </reference>
        <reference anchor="RFC7585">
          <front>
            <title>Dynamic Peer Discovery for RADIUS/TLS and RADIUS/DTLS Based on the Network Access Identifier (NAI)</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document specifies a means to find authoritative RADIUS servers for a given realm. It is used in conjunction with either RADIUS over Transport Layer Security (RADIUS/TLS) or RADIUS over Datagram Transport Layer Security (RADIUS/DTLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7585"/>
          <seriesInfo name="DOI" value="10.17487/RFC7585"/>
        </reference>
        <reference anchor="RFC7593">
          <front>
            <title>The eduroam Architecture for Network Roaming</title>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="T. Wolniewicz" initials="T." surname="Wolniewicz"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document describes the architecture of the eduroam service for federated (wireless) network access in academia. The combination of IEEE 802.1X, the Extensible Authentication Protocol (EAP), and RADIUS that is used in eduroam provides a secure, scalable, and deployable service for roaming network access. The successful deployment of eduroam over the last decade in the educational sector may serve as an example for other sectors, hence this document. In particular, the initial architectural choices and selection of standards are described, along with the changes that were prompted by operational experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7593"/>
          <seriesInfo name="DOI" value="10.17487/RFC7593"/>
        </reference>
        <reference anchor="RFC7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic. This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets. This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information. This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="EDUROAM" target="https://eduroam.org">
          <front>
            <title>eduroam</title>
            <author initials="" surname="eduroam" fullname="eduroam">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OPENROAMING" target="https://wballiance.com/openroaming/">
          <front>
            <title>OpenRoaming: One global Wi-Fi network</title>
            <author initials="W. B." surname="Alliance" fullname="Wireless Broadband Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state. The TLS server encapsulates the session state into a ticket and forwards it to the client. The client can subsequently resume a session using the obtained ticket. This document obsoletes RFC 4507. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </reference>
        <reference anchor="RFC5931">
          <front>
            <title>Extensible Authentication Protocol (EAP) Authentication Using Only a Password</title>
            <author fullname="D. Harkins" initials="D." surname="Harkins"/>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This memo describes an Extensible Authentication Protocol (EAP) method, EAP-pwd, which uses a shared password for authentication. The password may be a low-entropy one and may be drawn from some set of possible passwords, like a dictionary, which is available to an attacker. The underlying key exchange is resistant to active attack, passive attack, and dictionary attack. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5931"/>
          <seriesInfo name="DOI" value="10.17487/RFC5931"/>
        </reference>
        <reference anchor="RFC5281">
          <front>
            <title>Extensible Authentication Protocol Tunneled Transport Layer Security Authenticated Protocol Version 0 (EAP-TTLSv0)</title>
            <author fullname="P. Funk" initials="P." surname="Funk"/>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>EAP-TTLS is an EAP (Extensible Authentication Protocol) method that encapsulates a TLS (Transport Layer Security) session, consisting of a handshake phase and a data phase. During the handshake phase, the server is authenticated to the client (or client and server are mutually authenticated) using standard TLS procedures, and keying material is generated in order to create a cryptographically secure tunnel for information exchange in the subsequent data phase. During the data phase, the client is authenticated to the server (or client and server are mutually authenticated) using an arbitrary authentication mechanism encapsulated within the secure tunnel. The encapsulated authentication mechanism may itself be EAP, or it may be another authentication protocol such as PAP, CHAP, MS-CHAP, or MS-CHAP-V2. Thus, EAP-TTLS allows legacy password-based authentication protocols to be used against existing authentication databases, while protecting the security of these legacy protocols against eavesdropping, man-in-the-middle, and other attacks. The data phase may also be used for additional, arbitrary data exchange. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5281"/>
          <seriesInfo name="DOI" value="10.17487/RFC5281"/>
        </reference>
        <reference anchor="RFC5080">
          <front>
            <title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
            <author fullname="D. Nelson" initials="D." surname="Nelson"/>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="December" year="2007"/>
            <abstract>
              <t>This document describes common issues seen in Remote Authentication Dial In User Service (RADIUS) implementations and suggests some fixes. Where applicable, ambiguities and errors in previous RADIUS specifications are clarified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5080"/>
          <seriesInfo name="DOI" value="10.17487/RFC5080"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAK3JgmYAA+19aXMcR5bY9/4V5daHBdbdIA6SIhm21hgeI3rEwwQ0WofD
nih0J4Badlf1VlUDxEjyb/Fv8S/zu/NlVjVAacbh2AhjJiiguyqPly/ffczn
80lf9avwovh0+urtj2fF6Q8f3xdlvSzasG5uqvqqePfqyaS8uGjDjT50c3Q0
WTaLulzDe8u2vOznVegv5225DF96/E+17eCh+dHhZLtZln3oXhTHz54+meG/
T2fFk6Nv4d+nT49O6N/Hs+Lbk6eHk0nXw8x/KVdNDQP37TZMqk1Lv3X98eHh
88PjSdmG8kXxtu5DW4d+cntFi3r9z+fFT037Gdf7x7bZbiafb+NT81e4xsmi
7F8U4ctm0m0v1lXXVU19freBmd6+Pn8zmWyqF5Oi6JvFi+IudPBr17R9Gy5h
7UXxTbEMl+V21XfwhH5/t+av8c9Jue2vm/bFZDIvqho+PD0oXoU/NZ/hQQbU
6aqs7aOmhYW/aUNgiMInYV1WqxdFCU8t/9MlfMNgPIAnJ5O6addlX90EXOKn
Ny+fHX37WH5FuMqvTx8fH+mvz4+f668AYPn125PDI/v16aEOdvgYHphU9WU2
y9GJjXf85PGzOOHT+Kt+evLk5Ln9+q3+igetyzh6Yos7PnoWF3eiK3ry7In9
+tw+fX5C63z96sdPH07f4a/wIzg7Dctt25TrKX+qR1DwD4NdHuEPeYf2xPk/
n8PhXvf9pnvx6JE8SRAvig8fX7/HGd++/2M26YdNqD/Bg4BsL4oPdSiuVs1F
uSp+quZvqgLw7RYw8b4l/VS1YRW6rvgDzLe8wNt2ulpVZb0IX7HMW5iLHz5Y
NOtHDaym5dU8mkxuQr2l47vCW6B3A/5m7OIb+p/wtso2r6r+enuh38xvrx7d
c6EP4GlA8Pm8KC+6vi0X8Nf5ddUVQA2261D3eEuqOnTF6WazquDCwR2b/1De
hbb42DZwt5pV8T5cNX1FXxWvv/ShxovY4Z6LbReKW1iQ0JlH5z+cES2SP1/B
3wcAjusAz4X46ia066ov+usA0I+DN5fwclEulxX+CQdUxkUVG10Oziu0r7mB
de692udp3jfF4rqsr2A3QHQAgMuAd1/W8uOrj4W9+ej85UdemF8WHFNzO7oq
oGhl3W2AvuA6LqsVbPs6wCT4sCymu4ZZl0UXFm3oC4Bx3RRAGK8CgWk5I8DA
FEif5xclfFRsysVneLarrmokhPRA37fVxbYPRXNxue1k8+sAWLnkfRGdD8uD
/CSFcCuJmenVn+m9nun91V8e85rgDyLnB4wp62q5XIXJ5Bskx22z3C5wCTib
bdXO4uefZbZff8VNdrg3/hBJEXwI8MfdyU47nhA+1M2FYhHavqzquPEODuY0
4kACeZq1K24R9Iy5S8IHOM5ij+bF/f366/6sQFS0jx7TRzj3q/g57hk+h+m+
b24DoNIMjrMBTB2bsusrODogAxVMCScCGyUEKvGoZ4QHKQLclh2de4Hc8Ypv
Cbw0K2CmGrGn9sgj8OGdXQTEBlsFjAHwMTQ/5YvTV+vA8y4AdwGFtx2iqoyJ
/PVW+CtRFlpPj8vtEWvgnb4CyrOkKwzv4cHhI+ViETZ9ebEKuD2AFX7YBVgt
fgmHud4A8k9vW7iboZ0CRjZbu/Az2BfejW1H6FxcVl8QIB4ucusq4PQ1oXYZ
t8NrbNw9lMXx3mXwdUm7AnKMI8Czd3jT9ObD6/gi3K9qocAN9aJZwjszwBn9
Te4cI4Xcw5tyVS3pwsFVeNt129ApaGDx27bq74rr8gYPCODxuW5ua8I+GBVo
DWDBuul6/qduEIZ3eHCMg8BMf/2VZ7PPgPvPirNA96s4oa/XiCsN7KDtBFKI
csg7BOloQlsNwALWCKQUjqUBAQmODSGAYJO9480q3rz9eDY/enwIxw7HB8MB
zbnr+rCe4anatzD0RQVUhr8DCt82a5z/DuEN04OYhBMDxrV3m765Ahy4Bigr
cfIrg8W/jaR85g8TNwGr2sExfjg/w9eIeto2YeBNW92Uizsm+YTHcDdvqiUg
1sUdIuqAHipnA5bylcxtD2Xp/UKIwyHSL+MOO9gO4uTiWmhyJ7wjLPUQ9MDs
8v5E+BsyjBXehFTMbj0dP+wnrmABO7kIgFwXAMt6CSjSN82S7+WQP+Xrhfln
IDQgaiH8EC1ur5tVmHflCrHspuqE2/VDQg/APROk4A0TGSAwEzkZTs+LhcsA
6BLgMsJdgFVUlxUDB74aIiUSNxgAEB6Eo7K9i7Pw+VwjKbrGW0cI0NQwKDwJ
G4VbHRLm34Z/3VYtz9VtN7Q0QbGjgyNE5r7ZiMARvlRA3QHFHUp2oUWgpQuY
yeZhAhC//xEWy6hPkwSmYysYC8eVSWEFpKBFRnIRLhsRHHAiWPMSCCSgBOhS
bd/RuJc9HVL+BO6fgBV6kifc9P+6DQivS56NHkRWhqesUwvxuUTtR3dijPzW
3jjAFbxMqanQR6KjsDIchygpssyuUbaCVH1ZwZ3cAttWhoaHAcSQ6K0KQYD8
UcxBFKdxl8wjcRxAqb5pgbSMyEB0zx3XvdiuPivWJqBWFFyFy143QteG6RmC
Nj1evXGRglTdYtt1cq9p8PCFsQwp2DKA4LLC35oWwQJzXIEuxjySMR24wqKt
Nr0JzD1R9JIgh6Dw0OPPYfrQEciI1cCg+DmSB7nzKkbCnh2lOmABjdcEMyse
6qUgWm5whc2LCGo3t3OyMl4RAESJa0Ze3DG6IwAqkWpwM5mU3CfkaoavIJCP
Dk5w9asSkRqe0KtJD4AaxYJjSndSUSryXJF9eWyktc3tfFvTgj7BsEgciZkE
2BIwq+IUtDmUEgCFYAlwJCvgLH64zbYFxsl0YlG2cIcAaZpNCWMV581nktSI
3i1xGBiA1w8TdWJ04Zk6W9Lltl6w6Eqci7f1Vl+XRdAN1SWsygVzMbrxNCk9
JMIySpZwmwJSxpuq2XZA9foSn5JXBoOT7nGLa0MqtqRhGEq2yncgPpVXYZ4C
KN5KlpDRMOAklINjEJd5dLjQeENQuqjv5LIbgWnDIlQ4MTwK176xwzYRH8gj
0tGu+BGWOP9Ydh0Iq7Dh821dh5X7AEd8dzZ/9/Hj6+JzuGN6QlMr0YBBpj1g
3VTWjMYRv2YU/RH/ps2iB4K067EnpCEgBWq2fB0V3E5fc+RIiYWnUInOVwMQ
AMbtHclYOCCIliU+w0IUH8tnELZZtumRJ4AwfXXthSXk2npmILMvVlvPpcPl
Jd1c5MxoT+BbbsIlyC+VCP0ssc3Lq4rQ0uQvfIBkimVTh+KmKoFhkFjD8r3S
6x5xja72klSTUQnhH3lmVDV5ZtZIl6lI/7ptm3b+ssQNRnzDR2DCssWlnS4Q
dPNP4V/geJSTCIFjgoSLqEgcQXwgCg/XjkjdkoHQow1EVMhRahfloxcK4EQX
K66ZHFd8eF25Rsr+1xBv5UsUOvCPH0J9BZxLyMueKcWJcL8v9FzHWoeSlX4V
CeycxXBZPP5TNBD8lRil7REWsUJMBWRhHvD8BFRZ4nisqBLfAwmmvIrC6Kps
ETFVFVfyGxVvoXW0TlH0VHWCbfXKdQcvLBtCERV43ZXIN63DEdjGIXDaZYyE
ONEOAReRdnrdbOBWL0Azr3sWxUh2g+tSM/jhYld95Kuws3LRE+EiTcs9ybwN
cL0sZDzSaXA8UcdI6OwSWRhRsLwtSagrdwrESAtp/KIU8U9mIDGAlwwCOQNM
OWtYemKQwaUh6Q6ExmqxhbNVphl3IxiVvLRVcYbOg6/C3vHhs5NH/WJDa6E/
tsvNvtuet7U4KdmZV3KzX+FMLHB1QVQu/wVevgg1DNWP7EYpVVlcN3jVFCKJ
tkG6LmJ5ueqanfoFrnKgXSyCt9eks+CILFqQZKUCybtXj5kBodmGV4I4a3YU
tBWVqyuQqPprIUWolJLiLxdimerrIm50rB4zZQbCNIPVmAUqpADA20z8VrSY
l9+ffpwhT+RfkGsDIpeRj0dZWdYshrnH+KyarVBbaqoFoZUc8+gISJfJIkS3
cHVbAgv2ArVbqnLEbhMWcA4yjt06kZt3LxbFr4ptXWpNIkVDB1jDX8gl91CS
I0vFvr8cuwe+FBjxrUVkZOoPZ/WlCqxGtGx8qvEQADlERhUFl40N+KzTexH8
BFE+iWxuAMZZU1zCrST1HF+/K9jutkAX1zIho6DylqSBAlR5MBZ7+PdWqPGd
CqYkSAg5TsyEkQfK8dRwv+CMNohvvbCylhVQsxcReMZMRLxoHMmI2SiAjQ2E
DcgHbKdSZCP9kAygan5UKQimBZq5FPFg5NILwndy0aL69xOqSsD9W5aZRHsC
hZQtGE7jR1QB1Nm/BzlI/ezRvwMIAoPCYhel6sqMeCk6KOVK0FzvVENmzQ43
r9xNUFNkC2fej5aYcWF8jxhDta6Qtkdk2TeVeg2sFOmd50xyy+T4H5LyleZW
I/4KZ6MDdRDA/mNNLjBa923VBVFuL/jR3mvOMyKjsmUHvI48OoxTCfVPTelD
IqKmvHvtXIbkdGh1PNc63OZWkGge9Fak1OqR2YWiqEvz5IRtYMwXp6C76PZJ
6Bfj1LJiAw/8gTeT7CEOkhEJZjBHBwNtUMerRfO63PagV6gd9MGBbXupFYQ4
373uvHstgWSfgHtNPPUSF38B0ECQmvHBDQ7KImAdGRbQQAQ6M66HHIQIq+B0
YLqXeMMuq6ttKz5B8iOKNomT4VxfDQBcXH7GyUtigm+D3A6y7Co3GXsBt7kW
v8YOMRBkS/QpE+PGp9GuR5bs6FTdQV7GbNvXqFQJgUaARat/Yswxs9vltiWy
I5YtUyWRhuoYUZdVDZZpLuC6l3BtLeyDSA3apjvvAuvrDO45DiL2qI9K7MVE
lFRBZ9pn0PmJTslmTacjghm+oAug6vGy8wmpYYSVVPX9qRfVkQOmWUQnMrcd
GcpGRX124eGS0ZVUo9m67Wf8vhPuSYR3AvvDYyvK5wBDJnrTVEt25OE06lU2
12vT8hemn8GXI95X9Pye4yx1s2qu7ljt/hzu0J8IvH767sez8+mM/1u8/0C/
f3r9X358++n1K/z97PvTH36wXybyxNn3H3784VX8Lb758sO7d6/fv+KX4dMi
+WgyfXf6X6eMwNMPH8/ffnh/+sN0wHFYqSI8QddiC6jQk3FoknCpP7z8+L//
19FjUE7+HeroR0fPQXPhPzBCB/5ACPFsduB0KneTaJ9AwrEoN1UPWghZd9gp
gTh4MPkP/wRELBTzp//03SQ3WZBRVhfEalgfIc3+fwrcquRUowamLDnZ9YGa
ZSeT777SyUXrVXVOPZFmQv5HQT4cjywioBT1iRkVacOrqlzNAanReFecgcxW
kXXSGOxwAg4RmNkfT9UX6i1GifNz8h0s4Sdy+NKWc6v+TRVuxfpn9+UQ8ITU
LTLAL1DhwjmU8RD7YBZAVjC4jojYYcOiMurDMtbUgQIDRxAc3peGz9PmX4Ew
e9WW6wjq3dt1W80cvW6y85ejk50jHZAQuOJlg3EZq2xODnxIxvrhbOdYRFMY
S85MOc3He5yO92rHgAaEh0fOrAL/mIwlw59G5qpOJK/j6KNIziy+CFmtu0jq
pKhqkFTQeXKJ9jLQuyhYLlqfFXXYPTslEjkF1QJZpJNSotEDJ5z6GXGqq1CD
LoJxCMyirsmsfxlAnWWVDu2PK4JIIgs7D61IjNH5i7AZEZhy8IsTeuTGOauM
h7lfejSIoV15GcTqLUflBhwRSBxaAJ9ScjFkV/koUUMQJQ/FRQaFHAaacQjN
Ydwpe8xjOAMzxYbBy5SeuTTZXBjUMcwnBaeA7/xrrgDM+0c7VTrQ2yCTyiQj
GwriedaT37E8wdtkdd84+zPt8fwePUflWzFZpvyEZOkRkUTdlay8XFYtcKKr
ymIWkPiZuQrHMMHbT4DipnoBVRIXMcoJNSDiDkybPC0Nx24MGBQfVEFUHbIc
dKP385akzQYNzLquYrkl4HaBiSEoQNv1RnDym2/4mfe4HWerJBQ9V+jQZkcs
mmNez++KKQdT4rdTZEqMQYNrQr64kWvCkqkCjfTFCLim1Q+jy6wWD4yXCtXe
LHYN3D+NqCJYdkMG08YpZ97yzCqXDYt76MTDwypZ35LpP6pmadQAWWPVTHMg
ZghnUhXLIRrp2WHVEeA2TYezsvsURWvWxkCR6BfX2eREklt2BKkcQO9Hz5Qf
A1iHe5niSS63KwxvWH2eq3tNnGd2hN6NjeS8wgC9iwAYgLJ7JmcTyBkgPJXH
jxgLgGhV9V5zqVJRHy/E2NB4muQCoEhY4GgVxu0i2youV6WewKIko64fUL08
fj2zAkR6c9IItZfFq1mTYYCeP9yOeNnIbgg4t2HCASju4mPknhAZRjEskgWM
OOz4Hn7YhNYiA1hEfesCJSR4Cw1/1dX1HH1VKx8toW8RIDkwoiP3iBq/Lss1
CHFlG4NGmL51WVwE0eU420VbhUvinbxyEtknHzC+rpRrFn3z7qY6oyJTRzGZ
ZaocbHrujgSjEImgwOeJpM1XxSMeLHERwjIjP0f7bFeU+xqQV2I8G4eimOuE
ddKX9NT3AV4eBo+h6tHxVWzZazIWXN2pfcKitvGPzlxWLgSXkMoREyQzq7Ja
i8wj0ALgHu97uiCErhMLmwaL0G2W+Ev5cjT4G5ezhzbQqxKFuxhyVfUSHqVH
doDE+y1fdZkb0JgDC2OQK2oE6wQAFASIQDJDJ7sPF6tGXWfuFk8mJ/vFB31y
5mcDDXTbovWBVKTQ0sGI6Y1FTDV9OTCQcSk/XzSElHwFSSnFU0RALEdhpKJV
TejEFCiSYDlQJqMx7IQP0cNMjnVZLT3VYOSXQCbZqFEWofc+Ekto9djTY3Sb
UG8yeZygfYIyDpazDGGMh45izl5FhvgUdRSdKo5nmQlTWpClQ5TvscGScLnv
+K4trsPic2I3S9mBAyoeCqAXhRDnkXgOVBTvGFaAamYIbWzP0fNhr1JcjByo
BjDynRdTrQ/vViu3nfxvoPss9OwSB5t63L1tW6AoOaJBFq6WKEZI0vous/WS
SUaZCvOYl8kDnmN4uY/JYhc9+YkcNeJtQNEFJE50MGdBL1Wropmb10ftaMAz
J42g3yF9Fln4DCZY4Z6nf2ZNZ8psSNNRMDaBRFQniMRbo9HFIlYwh2dm5Oxm
4kpP5QfSRy7LBVs3AWtQaV+bpsLfUICCuZ1oHdUI38acAxiZkDkq3sp2SFJZ
sJlCjNQYHZpG86r06YMbxuSRn8iYieFlfTI23uJI/2EENo0iL041SeKp9XZ9
AX/OinAAcuEUjUWk7YuWeT5c37q8k7Cl9XbVVxgNA3cP1RMECEZLlW2FN4mp
dv4kf8dmV7VD4Fb72yZHClwHntR6u56yoXNdfpG/cFjYkW6FFeIS1CQ4GMlA
YjLAXop0XSosGgtxnIf2QqsLKzpzBaOXEQyCjt1v25b4fXaaqgZIZEN+q5gH
mNOZITlL9AymD0B7OahyaZiJxtxoygex6H/Cz+QNIsKfcZyi+KUoeKgzGgpJ
Ov/8wjmlNgJmOP2On8m2xgBvHXPHzy/RmSWak0YrHkwA4dxzJqMfZgMIHRy1
/cDTM7SK5EPM4u9H8AVjohy0jjNJp9m5gVGrF6mUMnG+gaNsAN2Af5WOi40W
KeZTTAnQWRF1hCuxH3NwiStxVEW56AIYNQoz0VFVFO+B5hKJkLtKuZoqWrBf
SYIpLohcx1gJxP8RrQzf6BO3DQe+gNqCcZNqrTIOGwP/gXsQlx8aQ4ZqpThF
TBPH98Ycps4bi6AtirOt98EmSmrQwAgOJySARAejO4ktMyYExFSRzKycMAwx
Sswwa4MEDND67GTMYazG+agWjWnQp//V9knibLKft7VRrS585fqFsfK2Yfqp
X/9FAHW6YktL5l0iVwXzzqrOvcMj0B8MidulLSAuoZraNTXJVrpmMh2iu4gi
UULZroin7Bu8RDaJIekuZnaYt8KBdIngxEJaDMGP5N885y4Shb9nJpZbOlJp
iqgr2tFQvhVBZTIhcttNyDUjnlCCPMWmEo/2li52f34nNn2nF9NBITMcAzK9
EMUIPhw0GC6Z4RHAEQ1A4jCnDqbE1EAERi7waMCOXriLkGn5EuPWcSRT5ISe
rJs7HkOZVIyJSTApY0RULTd0IBLVYCau2rvlKC0UaFxlISzCaVd32RJTYx/b
JFnILf4gmAkfwf+/81qUWZdoaxS175VqJ3HRu6JojY4oukUckXXD+8fk11OF
3DQ71XnpLY7ftpWT9m1zkRqea+FINkjComeFvo8pmtGyjbemuxbNMbW3Isnb
brxTBbFtHFVlW+8tNgK1zNRekxrknGZEoZ1dcJqc2in4alPsJaqI8MeVuEEl
+YT3QAPsAMgbCVORCGeeMaGZs+wlHm7nrYRLSXYOpR97U3a4Ro4xY8LL4U37
vwkvCSfNbtCZEAeCbrNg+5rZ+dxlEA4E2yWp/g0L9LgqGjBC/nAaz+o8OwFB
wtwoo5k9ER1Vi3U2GntI5GaVBngHkvSNGyTbtjfDqIRolocoiBOfX4WWpPFp
3fzFmSD+ohdsWuwdHR/uD26WO88WK5QgAdyEOkE8WlEP7KrPX6Gcdc3wSO3x
Cuv7ycOO+61Avf9+7+YI948+oNMs6+2cxxEEL8qtQe4kh18U4fQ8zRe2lbuG
2WxdP/Kkl0/MSPh3Wj+q+vXAlMeoRZxdBbJEBt2j/FhnndlPsHkEKL8NBZ2n
kAaKBCklq8kN7EIx8IV7c7iljQrTLkbi2XqLZRaxk/wsMQaaDX5khdHTiZJq
ZdQdSNsf7mQ1ivoqv2WWHs1jGkHS2UAIv5U8HDW2Rf1hp3QfgdVpuZAuScp0
D6Bzy+g7mizXMPeSJUJauwrut812taTYOEqbYyrXXw+KnIxuigxF/ObIK4lk
yk6UaHJq2o5TMu6czkAckYxjnt8OBF094NIM+yQcO3dLt6UkMfTu3c0SvpBq
VBfBi9Qj2qlFbitgMZoLIUbZJSBaN+TilpRssvNqiDWrRI59i5vWBy4yEdbx
KVibqUDL4QIODOz8nvFVGuzILQsPpO1VGKQUKkJLgrBnemxM8g7K1N6yhXWu
2NtO9TfK3L+B8hyg7zpNmu2aFRegGUbiKwjsMozbWL1jUqCg9IkokOIujcnJ
Hgl2yN2iRVFa20qs3iXvIk3Qkvy0PFJ5JICfdItldXkJx4PobOmToqehTTCV
VThsLBE0rFRCAgR3i2MEZKZ/YECE3N6+0X0njloNlDet/Av59RDHRCvy2lBq
cc/uJitvMABHw1EGtESWsakbYxqXwBWaO6LRZIrFWBJfH8OEbAnkcFa+yidA
C8vT8ILfxmFi2K06pXRWZMcs098idsK3Nz5G2ev+8CgQC6SaHF8yM28AGSRI
Kfq7rwtgZrWFOsxwGVYdYKTCl6QqFjr+nc+JEhppccnSyEFCKVyYYICZEXiB
ky8OCtFTsZ6GGrVj/lpUNEXnTTOCxlehbJ3XgSqS1EhYqhc6BmGbLiLGdXRs
WJZfPWpu7+HebHpBRaRBTrhINCVHolBb6lQ46j3HXQb2TaD/S5gQPow0G1lK
syANe+ltBogPxHjTuxJpr0v03NYYVF6ShpithyxluCN4Y8mMINf4hdyL401V
akVFQl8GsgQ8ZR7+mdgKhKN1PD4Cwem9rNhUfVapioqj3fmjJ/uVupZuy6o3
j2WmGrPnibhuAQIwQBq16KVWNQGdYlX91Sg3JgWwf320MkdiJvzJ6qn5yyQm
ExeCpDaFWBxB/Mp62NEUY4kbzra3M6pA+G4erJGVP4jy8tilfFBZw12S/MWJ
aRlp7JPxSCRO1m6RJ5mcnSj+iE3lBaay5j5VhpomYJGwgLKxRNJFZkEhdVR9
g7/gDAbiDZR01I+lxKTebR9jFGWdrzwJrXyVWFH+GtrGlKT08VmOCuI/Ir8f
gQLtIapMbZqKs/goAKjxwQ6z6E4UtZxggTVEo+usHLnrbBNIRVoSTxF0475Z
t9xVg56iGP2EtggskhBDbytQTCUSsDH6mZAodlon9C7JDc/WbEmDMDfwBMoS
VLFEo4GtvCiqYxdaFYP1DbKO5gaHmcVtvv2IrpWWJBDMMGExKxlSk+DO2NOM
QnzOTaN18GtvGZyabAL3NQZS2as6TpIP2V0HL/RkViajX1htSF7JRCfgLVV5
VeMF1P3fUF0NpenffPNN8SOJ5hqlP6fCFzTqmREzupJvGInE0x3Zsq/o9juo
jVMkSKxlTQRndXnRaE1ANLlLbq0eM0d78NzutnIKb91hIIBgAQU0U/EWzZmj
gg5GGgyFxSVCEwsWJRcnJ+MDFncrOSEeFWNsYxKjhw+Feul0e46ajfJedjgS
hu9LaqTb5C3utnikNmlxPFCUeC3BYa6+jw46vgi40CLOLJpNpWVN0KCR2ICj
EYTlGxpYHWHkAiSjBdFPFTbGJ5Sbo5ECZfEJLUJzySF2WaxiI8KiO1jpS2yd
EiWuogpFqFqdGpxHKE46Gxk4bMp6vDoM1+URB+CPdbRuWTXaYu/x4dP90RnI
aSATMMYkuW6nA0G0s3gfDEiRw2Dx725Tdp3P/pSKaFLLi/0Ot23Vh+RtKQEQ
xOA007qYga4xZ/M3YxYzEdsoNhQmZkvOqvoc2OXINVokibxv7yT0EsOL2FqD
xNayh7MibmS/oLp5pdj+5AGCNbFqH4ghSCcPcREFv8eKnDgkEpOdI5rGtTiU
pdpqwOiutOOY4kNqPleQUik23JHsKsyYyHwtZJyiR0auosYr8puosGB+ch8x
BV9cBS1U44gRWs7NYHO/aR3pSR6ev9M/I3ycqk6IlRDLXSKhCZeX8IwYf0dQ
MSWvabnV8XutUgQI+uyn3XZbjMlkRkNioKskzphcXgahFVKxJEZo2XGT/NrE
Aj/3SAZYe6HB8RdkX/dyCqD3Lbli2karscLt4NM2p547K3IH92zpZGVkj8yT
ZLnf50q1F3cD+WhGweMWy4H10/AQA7DxVVFqLC9y7fPygiSms+16XbaS/rpB
WYSPAiMkr0QsIdOThJbhrs0Ma3nOb/PigKXd2izanUC47SmiBevTcJAmhrWp
GKDWDLaW8y16JDKkOOVknD+rM0Ic6N7RrxlgSYgAexJ8wCGKQpTEEEU2cvEu
E6FK69mQhHEggVm7oovoh/1G6TPqHaLAJImJ+qWwcCcKV0JPtzgT8dvfFLwV
f/1l8l7nomGRyMjP+K8v8fbOz9x6f3GhXF81xCnKa/kAEsi1ewAXWYVbT1/X
r36xFb60mUZfp3P5+QVXxP+P04+KUopwMb3KpQpPf2XkZ1QByLdYAYd1S7v1
MblZwkwoaYr3bNlSiSaXZJcNY8iv2pDFJndpNHmaZ4SsC5f1tzmuXHD/0GmF
uzjtUgVzfNLZPfKci4mRtBOMc5HTuxdUF9t+FFTCnWNkQ6o370hYsP1gPYed
VrvUX/yQwCzHJQsUWxDOb9KgX4Bt+2yw7SjIB43bs2CAASASvSDLPvvb955b
5B7Yu2zg/r0na8SRSfz9Hbrd18AYQ0Zpv9+PFV7hDOkUY0SoYtxLQ1lnHD6f
xrMcTtMdyfvJ7RgZhj4fGeU3BYhZ5NPg0phrRhQT5/9Kl+uCa0SW9eZZudss
GuOJJGE8RjnS3Agt+JGJtmI+ziqoMF0VKzHnGTBSSgDsWC0aIb8khZAoZILb
jmppsVJ2b28PQpQdKoAstNXURg+Onqq8UK3aLN28T+SjTr2oKjC6mlD1SMUJ
kLjegUQeVquyDngJ36LrbAjC8Sg+iVxgpy7idUwej0WHRZJ1+ug4ehxOyeAR
Fte1CKqo7fsqriwyq8MRpwW5S0yeSrW4umWeh+o6TJQaympOKV8JILU0UQar
pCVKwvwDOM6bcNVuouVc7SlWWG0YhMgUNnEO7YpCHIlOVS+DMxz6yAwUy4d2
NKcLcBE5rCYipjiJm5TMnt9wjkRXrTrUWC337nda1dh+VZl9BnMKd+QuU5kj
WETFFngiKDjVqrpoh9Xt0St5dRU6PYCaHYYYBq2INzAI0pNx9bS0QQCuQz62
zxZw3eqyrRp9LPrwmjrNnZUqeGJyoCHrCu9YKZ7UUizkEvi7s7ZMdhjdri3g
ttVU2EmPHdj8rbrfYvU59o4vA6v3MPx1uaEoZLUOAbq8qeqS4kMslS0hfZec
tyOdPPJ8A9LMqT4XLABLjLIWp3jv2hQlg2qaQloHHO/kDVWFDktaGtC9Mylh
8MlKGEwmo34nhF/XS55j2ccjTrKPQ4lR887GoBHFw1IJyqpeWCT3yDPE8PlT
UNypDsvPP/8T1rA5/PZbLC3SagpaIkTFGoiDEq/4RtViK62bUhmCsaaYW0UK
KSZnW+OD1EDfkEm21dJaLjeNA5WWcJpzxA0ixX0PfB40aq1ElkSGpDkdSaSM
+ZiIx1ggqt7OSOIsjjCFFm8v4IMLHl4IVzJLMwZ6766tshe4SqmdOxfvlCFm
Pt+kcwknnVqEubKAIGlScISLC1DCKbGzqXDVqZjwKeak4wjQyakF0GrWCy2e
rVDJcnOZrlxi6BLeXzt4ovIWgrJs0gFi04TEKelBpHjuxPAsdZTS6Ucj7jju
8DaNvDMXL/tDUvhzdR/brZ6els5e+jL97qD8IBgilLm9ykS7c7cwOeDfNktR
ZLncEl7RRSevx9vOiut5kcHQ1odfef3oAVe0f0wyD9CXBLp8S9cJD4HMty7g
cacPTz2VxGa0rBt7eO/xUfvqrQzOvLa3RFul99SXUfJpcTturKYZk+FMbBiC
QMoyKNEzu/25sz1FZ0DXq4qGkCk1HT8SruzIz+TC+2VYXn6eQJBEpe4iUVRR
bUuip8UDfONJx8doRbcODxiLD/Sxu7dWkROzpD4W+UJiKh25CcwBZx2XKA47
7UNAC3FBcsNitSbjIGZUouTvWEHV3ddOwKrNnicpy5XUko1FwBIwjgWxaobg
WFQsywhDMDNgxVk81D59CUnXwkBrBYtfQYu02lZ+Mq+qvHNdDvoekDzqe6ho
oGSvtj+5864hiZr5tDvLowd6s0iYyO46xBL1rIUAhrWnuYynDGdpQxch1pRl
yXWk96KVaS8pQqxerlxfFhTcEUNUkphbaHraDQ3oGgi67CBINpPXUwbFjl0M
ae8bxmRfQZiuAlWYjBb84AHWc3VASn2n89UK7UA9rnszy6e5xmIcHvnseOSz
E3z9CL46KR4XT4qnxbfFs+L5b/ls8u/nf+P/Jpy3TG031Pz9SXrczI+KLK9Z
mnL4n1/+bmvY9cPe/ft+/u+v4eGfX+4dwUA6hgdfNcLXreHvAgfXUujg4OCe
Mc0F8s33TODEFXKeXryEyKIDBLFNywYS5lmLJUrEwZ5CoibHDlEUKXK3cWKT
uc2/k6GynNx05Iz3PFBMeTKJlyDWbbVrMVyvz7ClL1Hsd/Ikdy3lbUwjLafq
ZuNZ0Vp2/VbbTOnrPtpFOl2RMYO4njyDfmmgVQI/C2+J8YhR97JuW6x06ZNa
LDbE4A0retyPQSOLj8HYGKGqOx+VPlYq/2NkGisAFhDBBEdPwPcEIrPibcPQ
73YiQf7Kb0UDAraVuHSQx4Nutq3ML4I2Nvqs6mi48m3NYAwx4s84eEXOzkTo
/nrYdkwhKKuLZQDRxIf9dorllqWtYNEkGsPMgX4wrYkcvH6X8w/w03KwTdb4
Jvd8YFcjLf+Qd7rIsHJXGb6YHckPl51rDHexai4YESiclcyPbr1ywm+k1nra
/6BN6/rACfy3/773jaDtXHa4L11jMlwWAzq+YBiYvhIRM3bNivR8QB2OPX6G
FYh0e0fH+4InONWKUNIwtgv63cgNkqrjluFhJK/Y9fKDd2r4KldYlb52uGPx
lZgUHtt5swAd78Ib3OpOfQSvQiysYDWLsmsk/p1vyHrHG/0oSPlzfojiPfcj
sLLM+WO4eDQJcoLitq4QszQEK9GApJ4WXQuvX78ZVJKdjRiK26Diobt/hlLV
oNyGv3hefFZaJOaKfCycdq8N+1TtpojlIbw5sHSLQVlVg+siQDi8EctoFHuk
c9J3ZLhdLPr5qwAi+PxcUtWS1BMrtR0Np0+oX+FsfFdxR9Q5PnrKuOEyAc+a
xc3SdqZByvvFreSxmPFgR0/0moiqnLlbWt5ooaofoPqzUUos4Ypp67VISqPa
5gjqKIYRioUvJVLIWWzLx7R7j4SWo31W/BcwJyW6Zd8/3rdZJIgSWT/aGd6+
Kk4kcFJb1hHVZeFjsEhruAigXZUb1+EXIZXVU/GmTzgmbEAyAqcZmVKkpOKO
6p3sEyOzlD1DG6NvBxVhqHU1p+B9EYtm5uYZsVQlzMPQk8uKm05XFifH84uK
YlExTymilOARBnSmLgCNci/tnZgUS0VjMFlHGzABMi9hGikLxg1GZWL5SuLc
ZF0cUxe0Y1ZqRCV5EzTyGGEgC2Dmek38DzMNmC8KLedbI9vZeXnSipWor/Su
Or7FwHF/Ox7Awgnsiyhb+etXaJyPJxdoPWFnuhXeE2JtzRRnCUHMXiY7HvWS
KCUJrRyRjuLryW4OrG4Ww09C95NiTLZgcebT6kTKw8wbxN2qZgtJ4NwXpLOE
xbJK39Qk7X+pGB7bZRkwLgIHeccyI/IQTCBIQk1QGFpcrrnGC3YJO+1zoYmt
VOTfodszs/gR52nT9oGJ54i8k9V1wzMTUlGzz4vtVScyE4COTEbiZ5A0DZ9B
73Ii3NqTBbITUqMNuu0FmtHwEmFPGc5+60DMXkgHKSI7zbYnY9tgMOEXVetr
nIQvmwpuAKZyWhLUNbYuVHZAd9bLtm2Ys7q2aJuu0+KClsouah+c7/H/ODme
FSN1QLM4X475FNqgNlZeuScTio+cIQLKRO7ap/qhcALEvMXpFkOpU1BwDiLt
I5ockYvUC03LMx+wOGLZjg9H2nFSImLVtgsjvM31NB1TLmBNf7izAo3Ug90q
twyIIpkWHfTXwus5a7wTU0Q8jeugQf5Wx1HqHurljCIDjSWOdk9mNNQ++jNI
BAA0UPUxUWtS14c+IkKbntoU2/t2U1gBfGD8BeugCEHQnl1OMxZXRB/P0xfT
8yUPjKwPSKm1Vy4/a5iMbqYUviFdMS0IIFbntnZyYj9mdBRhw/XT1iLAKpD5
TEW7l+SyVr/FnZhoh6KihK+0wSKkyIVCkWnYD6jusr5QKYQFwFMpH4F30PAy
FlRgIR/5Ad7VzIMWSS9gEZDe8irG+/FUaWy9coaSuy4uUWIu9qoDQHQ/PUYQ
gsoHs1vJUt+GfeSWSCp5FvGuuxkwJAKL6SFJ+peivYa+KUfAg1JE9QF9QLRX
ytlNDkcVDoNf5aqlkIu9rr5iKEXKqICK7YNrrSZROewHiwEqeIVvSqwkBu9h
jl1phXypq3bXrLaaN83Uw0e3aFALfEkp+hz5ILCFFXnmYaL6EE/4Jsh7a1wh
0hpJC9Ido9h5GW+RQAWvjSGAlxGQuyWREuS7tX48jckwMxY67XkKa0XRbygT
jgisAlR5N2u3N2jCirE6uoSrJoJi3BTkIgRAzd9UqYvTxGmnn8+8JXjh/Lms
oMT6wrBy2qKBjvm+tFPepZo++fVX002PD55YPQ0bxXNuosmDntYszxErmRVZ
9RVDVUkooWlPnpw896FEJ7AGlUERZbMCNKhuYvsa3uPYwgS7DYrDURZc26Gl
OFWujb3ZSpIVrLRe3GneEvfpurwziiYg17b2SXigpsmDGrXVDNtPdmXVClP8
PDSN/Uq+Nt9a1jKLBy43Ub+07ICwiGVQ8dxCMrB030igmnjYK6nm4vyrIZa0
dRH8LEum4+9RMbvEsLOfxFy4zMZlk77so/1S2xAu7cdXH+cXZTe0VzCCW0B9
OqT4mtnl7sNARsvO5isy/Tozp8UGLlRfTeVwyYw1h7AGGKc6iZ3nLmMt91+M
JltxdIhGUWEuS91Vi8RxHc/O9bXk2CNCl9bVk0nVqf7a+hPjqcdi2S+jmGzq
vNW64MWmwLJcYY1BwgIi5LnZZaAQodqZx2NZJROGKHJEJWNPZjQzdozpWwJ5
Y1mc0TqRmGowrxP4N4sZNtG+M91oSSRXAjXdOOVZEBYOBDRUVGfiHZmlYSad
02iyUpFlJr+8veSuv4MqIcTa+IxImxqoamwzkz2O8GStHKJ5qLFYzKoBgux6
2ObRcBecwaFWEuN84hKLsTmUi7voPQJK1KVFvLyOhd2IHwbJ7eRQCU0GXnFL
RC4Jv15va7I5kLykGfnrquNAwc7axsZHlU2IYBelc86TMDFcummoprBshieu
+eYgPgS5Zpw3Mso/nxw+O5w59nmMxl2KX31NRi8aBXPU7pyRC5TaKyveRten
YkEaNWzLhITfYZj4FoZsBFLfAEpPRNCMwFhLsj2w00P9Ek0JOAmMw6Uy4lcz
eKEbNVAisIGPthJqTAoB+YZglO1GSWbWtlwUnjQN2PScFcgnWl0fRkGHbSk+
FZLcWwU37BmWadYlscCjzCELdYWiRk3MVdYvPE1jcMk2A4/q3g5Xc5xif7d7
iVLWpeLdCPceL//snkv4f0rUJM+8N784xbnFiDYKCIKpJ5N3eKCxikCM7OEz
dCq6LXcqp3mLIbVSQvZuoMmrTjbWPk8i2rJ6W5XLWhvtFC4mQauJOdrNcYT7
Vdqkr8xpbSwQ0WMzk/Fur880ueeDNBsOnmpj/Gst0ZYS1cfRd9JeRDKck/xx
dwlmZNG7olAt6rpjrSPqSw4jKLm/65j+f10tLVQ1eqZcB2RmtdfNZn5xN4f/
GJtN0h0Q2A40CgITPZq4b6xYRXzmumwp0nPRht7dnphBr42ZqYJw2HB4ovrc
RjLNkhT5xpfMiIyaizwsXcSkIaUajrbI/1YkhnMxiruN1txALIXnMcINV/Vo
uMaGdaLcWYTjYovc+UdgzNg52gE4oR0RUJZuYtY4ugRdXFQxxcS3KZsspahU
W3Wfs3IJG5myiz1qa7hZTftZomvVXMORfshEuWYFyG4c0PIBFQ7UpHH0QlKk
rRyvtgxDm9WC9CDSlAhZ1EoF1JXlSsQaqvMtsYWRWFTdOKrNxBEC6/pyl2ss
ZWalJxtcgGuEsKMoT2xxBROKWOozFRJZmmov0a1m60XsII7zIh8Wjkhm1bu6
XGNwYwjcPL6hFXK2ypNn1OxY+lhJno8yOu1x74XOZYXCDNs58WY3LZUnvAnm
s2PzLlaTWyeHzQ2TC7IX48hVX12J9tsJKmjcOSknXS8Wak5TFzHDl0Vzcd5e
vMCg7woll72T/bSJbnzq6BAf042LW6RL/JFWySRXlVwXr8BQlYxen0Iog4BA
fAmkmorVsJIk8uHY9jnYR4ousfAlulAkobGNQJmTVtfiTBJktGxn564Va6iv
Tz/ON7dLzQp6fnJE7vamLXyqYnwruWelKxnlxjvHT2XA42c4oBb14Ro47FtZ
XDdE7ZTmX3GJxHt2w1YcrDFCKZF9mJsCR8VYLiVYR/vRWk2OLmhTWsI/kP5d
OSi4B5tYGsW6svOKrxrg7MqARqoFtzHQOtTUQczfVb03aEypOW4ZmMyikgyc
JExABCiNEEjYTC6n7RABrKGlPWu2W8qQ0Y52GqQRibk0GIzsbpSmOfZjEQ2q
MQ9b8VoBNcc/2E21i6XsmZEtj/8YMEJTdcvO2R0c+790DOcfOK3vH2SCZ4eP
H3tz2hNEUF5ZmveWrzQNJoQzW4Wy62NMZgy2Yi7oI2+iwnF0/GwYnDUs8lpx
QeCeS5MS39oFHisZjEUZ2Tmadr+JQTCwz/cugf0B9t5ncETG/Q+pK2mloT6Z
jfSWhCj2LZMGFCuP0V3hY0wi8sgfHFHwAkYHZMU4PTbiKzh48XFZeD1FJkAn
gHbxe0hSiQUL7jnyOIrUn2Y5j67LpsX1UJARwIVo5o/nb+bPeGlSgxSHHLb3
YUi6PSj0ctx8TCK4WQMH2cZjJW0jsSZqByptPVgrdR6xYq3pG/mznCctGeCo
IqIpu6fus1isoOo2KwqKAC5FMcj+bbOa5ivHEbUkGkYUxNekMOEonGYs8KGd
SRErR0+6DMkhCiF6+T2wppfX2LYRMEGydPPbhKZ1yTRUBozvoXLN78nZu9Aa
V4w/neJByvb4UHlt77JrRlJqSMxDXWu8i0DKHKjo386h7uERIk48sBZlVNle
RRqvurG+9RZzqfl1zh1F43w1MzhBZsBVBrNINhGlG45kGgWUZK9yKA3XRy1/
15nBTj6KfE01mIM2JmCLxOjKOl0aYrtbXgSXlSMBzLvl6nbeaHvfzg6kYSNW
uS+xhbGkHprteBxY1oGz3HkMXJF7J5Q0bxyVHA6MJZPyfXCNVs8vVYwf3foS
OEyQTVejvm7ktxhFyybbqwXzUyU4Ek4zAST7cOzQn+USwt9JBEnML53aX7Tm
riyMr8n8db3kQsfjqzphwTpaYR5keWn62o4i0GVxVq766MN5BZuY+7SGLk3d
9QajDGjRaK51RjkiQ05M2U7W0DEKB/NqKLDsPru/RWR59m9ZZNkNkv8vtPwb
ElqyYxQC9mdgkk07P9NEVW+AxcjH/HuHtURqKCJIW0F7w19Oz+LZVy3qe26V
SGVU0bRWPe/O5u8+fnw9xxyK+Z8C+6T0w09hccMfRmOmULEnj59lRpohbf07
aHWPmU9jaSouODBPuAYzgtGvBuzg5Mm3z7MWAvuJcheDv3bzZ4pjGRArUuYb
LSkzSC+WSMuHlklmf/US37OMWUZmzENTrbg6lNTVRTMuSqXRPQyIP61qMnjF
96ejjoOnz4+f+wNGL0LauuJr9pPZO6QOgwlDKpyPCVKUy9hxqWJqALTHjRr2
zWqSxFOI32bFlf6zSl3OZPvgomtLevIRDVW/G36/E3zeaqxZF2paW6a1J74C
0pLAhZWWqFEYybVfd06UAqPNRygMInOgLBSD2MjHVTLItjQlq9Id2pimLg1D
dlmO2c2XX3EIEgWrlW24Yh+ZP6NQndxDEjLIhi1mWfPVpYWLeTkcvSwVFreb
DXdHoJy9Oe/1KxFcSvpv+6vG5W2qGciqbPveRyvcRnmVUwktZ9UGCVaWqK7x
JdxLpBD7eaOo1ag287tUrdmYNlPuePXHVx+594bmI7/8OK7buB4a8VC0CP3y
a/ADTbjk9RjfUpazR6tEOZEcPyFVbTlmg/mISZZc07EuRvnGCUrEUxJnsTZV
CaeJ9SayLKivwR+68KHTTF5sz4FS5rjiybndpPa6mR5AFAuGvldzpKtNNv9B
hwErnEckGCkFl7/gg8QqJFk0BV9TlZBGVyW0bdCPIsbukaWBO7hTGKVGatVf
Sw0pZwfdqkhIxuGpJhQRUp35BMa54VQSWOJVYMIggqZT5X3/ssTpEDvMnCUe
KAs4YVqrxovx7ezEA190R64c3jTPN7VC8qhLpFADNfNjK8eX9PQLWlMxqV1q
dIyKJjvays8nRVVdoyGu6VeHq5JrsVCwscvUcxGQ9IroLJQtzuVbomodU4rU
i7tTOsRCQlwywlX42oE/+qxXunKOfnyU6+2/WXp8e2mBqcILnbiRBBo6oe1v
kDg0X+UrtzzqoMqLjbVhRSt7d/py/olycqq/JuL9KLSO/01AS+zLM1SA+Bfs
jKTB4UTunCakOJkY3aSZUiyCZGxnZ20iHefdqycz8XNmQUNuf67uQWdp/r2F
K+VZBUnc0pjVIZuJTC9ZGAjpvWKD8MWdxt2ceXTO6IaSKKi8FFNWI3a8balq
8SA6jByZZZKg/klOYyrfe92sw28Z3zvqv3IajrQSQWLOsfBChqyXUUQ8jG1g
1CTlYuy9hBeTXJleWFY51eIVq6zx1YFdOs5GsasrjXXIiqhnXWI0dNdldGSN
ZxihnIXJ6syO7NEXm2PDnUjGlbZYxJ280LoYo5AweysbmJcYV2nmZV0c8Z+Y
sN270FwNCpZkF+HHMAgl/1Zdub6orrauKIoUt/Hx2suYMMp247evNHRzByEd
NQoMqrO5UjNctgfdG70/Py29YmvzHV+muJYpLiZTeXzNizwgKEnN99jhC9DE
Sj+zsVh7l7rMyqL4iM6TkNgHMFssNAO8+e32mf8HPKP4QIrkS6mFG0VZldKw
RrBEqgrQYlvjzii3hovWvr0y1+kdybvgrNVBQOwsjdjWjovndD+055wLoimL
bs0hcbS2ba3cvW821cIlx6Y1G5nKpfTDx4aVLi1xIN4bi1JCjDhfWokUbqTh
M0o1CNASF6vOGZCt5+iGSzdSRZSyLy/Ig6ZXVT/hrI7b2uosli3c+AvtWS2J
TWza5lKqCB5zXXl3rVYfT9a/RBPEXX9NZ8GdYy2hyzV55dZS1Q2zJeHV1Hb3
6gpNAPANLqm9s/y2QWVcqUqUJAJi1y9rb07awRKT0Oos39NBHte0IgubhEiq
/WSYJXrveWm+aPoc8edB3SSxmVxQwrOHKKKOmGWwrS2lHnGHTCrU4YKqgVW3
rvYKSlNNa4qFdvhLkjhM3bQys1JyXjP7rqPCkTRNjVWxlhEnuRZJAgoZTsll
TohlXur4BWf7L9uuV0Nt5xmYBjGmzUwoFJczX662FQhcxBGU991/WoLvXGVO
mi4v5C6sgZgUILfCX1LM4xJ7Q7OVRwq5k9ybOno77qpK8dB4iyQYFEfPOt+U
knUG58zqbs9okvZdRYJNugRar9tmsxkW2+qYOlVSKOGtq0TPtUpi4oMvbC8H
2cQoWJn6jpnnrqNlKVXPVt1FlRn3UmFxqy1uHuhimUpFZacGMVxkms6ZDeSi
WSiVyAX1xRLRwijobDGrmqRjMdzh9yT+KFFHQxJVeqmX876ZU9M8Gwnptt0T
K+9yxinX+pCQyStkpKs7l2gKUG0uAL9rqvvrK6p6i9tP105fIWa3o310TmP1
MIYmTeycNax+lDP/pFnTrl5CImtKLOtoL0yi3d7CrX0ozFSaVr1J5hU69+Tw
uNjThb6Hlz8BZaSN7mFsyt0+RxY9OXxS7LGcQR/jv7hzXB6tbX80cYRlxLDa
FI50xK7oLoYDszfQ9kgkxR6QS+rUphn7F8rkM3RT1BQ/yWftoSWJe1Tb0An/
Ro6tbXOv7IOFySeHTxEwWsXlx7q8gScRMtHPKKJmgkiyG+fxGag5GzQEKTJg
lgTmNMeZRzbhj5ydecZadnRJRQte38XKQ0hDSSoQbygntH3F4T988oIgO8E1
CO4BJX3b1l+jAiY8SIseGhkf37vXyGQ0x0FdqW6+w5GuEcufBhb+ApbqGKFH
nSPlUSpwMqaCF1ACgLka74xkRvuZ8zLlnsIxvFEAznX9vXcbmCNIwccp956P
O2pcrq4w2+J6fW/OV9JGgteo5V+MqEpWAh+QpoxocF7YSb8Qqn8/+sMuFN9z
drvqY6/S+HzlchlTqHSeZJIGEDVvM2Jp8KFphiPk1nKNsjJ6DCGXs6/vVjSf
6JZj6dnWV680sqdqv6ICiu9We4eGGq0mQclBVqyCkXpWIMtaeZBoPCrWnyq0
47tJKCIZcz4Ntz1ymOWFfqWzZrNJWVbCWBUaZca2qJXyVzJLh2lJXIGqolm/
EsPlziRL53WXJklq2uFuKVVPXTdMcKubKHPLkXiHq29R60WUrtcSZOMSCvfI
WraGtaQ0X1YtLKQtK58QnVb2cMbkM6qQMZdGqxNNbzrxDz+NIXYwY+zQY1lO
+G1S+aZPLUfMYygvd4/aEaZVWfHK0+Eli5FohmHThVtk1MvmKhJqSa3zlhjy
DaQpxlZnejw9uU8TXgbRxUI+WuluG6SELu6D6H+dcefBLLcyvbq2ogEiPgpb
Vq5Y7B0/ebrv9FEpZQkL9M+rcWaHK46oSQJW56ylSmMFTDM4rI4QmGItLCwm
1DvCe7soGmGPatV5AOsHOBB352sWl6NL3F37UuLDI2OmYlWjBZBqOph7bHEm
KZUWXi1q8tiaLKo9oLNObSXegI2rWnBkMhpEXE3q60Et6UtLXo2uxZ1buWzy
Uk6x2l1lXdfM682iHLrDr+itsi8xpQ09O6TdUwvtQTg3M5BLPFuxSDDz6Vyx
ObILjDbxUZsbcnf0kyTyrpWUWIbERo1VCuYcj9dlidIzFTKWacoYV2NMh6eq
CHiL2bCOE7XhttVCTuJUGvEpVb0JJHtbTpunlD88xhUcLVCfu1jsxug9Db1v
Rrrc8ybVyqyTypJLWLm6h2jEQf4kE2xXwUrr0o6SeCDcXNwYVwMabI6T04fe
vyRJZZaHf85y76D4j9JPMNiy+BzuOnErUdn03AdoFYKMeJJ7g0XMXbkS6qCy
4s09BYZqj/LWdpeFDcV6J25ci8AbuoZiGyeRVUVb6L9+NNH+nf2mMgkMTnfG
CSMoY60vRLoZ+hoHlhm0eW1XZIDizLqVsEOuYIakT2JwpOM9FzEfFG9wln75
LjX459XMxV7eqeAQc801m9dq2IqUwezRWuhpp6rYeNqKCdX/0HPiNtb1K9s+
lWDS/kvs1CbX8/z0igQeSZLkz0r+bEcq9uPjI2kvmCzS5WmfYunFZfWleGlN
KusdGdpHEgM5OCMu74TFbcgpzDkjXJlD6s12hABStm+sF69YzdKG5rCd5qak
/Pt3r54Qua5JCEQTJzUPk0IAFDFZ3ZQLEwYd/FzDMaupcwsHT8R2s2ruxMmk
iaRhuW2bcq0Z+c8pGY3S1l+/+vHTh9N38je88wFg96kpybXw888fPr5+j9+/
ff9HgpRM/Epn7nBmIqHlstkwjyIrNLEojrJhjLLGm9xWIuavj3j+2JYKA1jU
0utXhdX4y2PnATxjvftQJtxYXWZF3dHyJj+JE0gCdMsVJl+7DqxWXl0T9iXc
OVYe5pp0ST3vHTcf2cGaLKtUGmnY5ZXXWeHdT2vmot36SqtxaanjhpQPoh5S
3YdIWNbiUJB4HNVROQGRg7XdnCT5NndJoQNCBz4lKebZBy133G0v/oUp5Gi3
TdKYsn1LLIc2xBw0mJYSV1wrbqTDHrAKQI2MgIibu2mtw/D4mdhiGDu5yMcI
pCTSEW6wSC4742fM4DTUZkyZ22Ok2hcntWehVmnkdFDSJ0ixiip20x5lMrTW
i1IiE5bhJqyazVokIlw7ee+S9SOnTAGoOfhZBfCEkHs7jqWQMD0fN/FUQzf2
k6NvnyJC4UvTc+vqbJxuakyMu6P493xI11PXSjgLx0ZZDPhCSWGML5vT+fvT
PxFGv8J6JcTR6aMkkhIuEhvv1ABEyUkduyfFiUZVKiMumTo8vnmxx8elxGwU
M4eYa4ZShl2raj9ksp9RE0jnU6W0N29aJu0pNw9mTV7W7ich96/NYrogXe4I
qPcNdRQvawMCnxIrQVkBseS8fVm7nkNw0QKwQMaxCsurWNyVMTxWMCX9zY+L
cLTaEQMCH2vksfsGBSANGxjznW24WItbrKp6t/ccbnImu6C1g7PlBPFho/au
OTSmIbZRpU26NA/n71CNvPcB2W40EolH0WufsIOdKKXd6IGfZZhA3EvatrpG
d3Ze32UjlpbKMKLOkFrYkFGShylp6pyzU6o/70RhaSzgXU+dpK5Y2arSqyOq
3qrOvDM22pdFG41oV4lRppa2D1zYVjsXZzGSyTgUkEPhQjP2n/J69V02EHIh
ERTa2EQhFf/I6/N4zC4QS3DXjckb0SRrBVu0x0WXO+ZYi20ZnSrOnqIh1XhU
D5tvMQj2rGu2UgIr59MJC4MNNytOyqZylvssfK3DEjGejAHRRpzflK/wpPKb
DKrjw2PuzvtWgrIA+toLcO8tZzntT10FJt6WdpOQC35p6FN1Jp+xdKoo5E0/
WZhjuVqbaH1NRmzBkJjcEcPbo9XNm/nFX1BjJgl66a11N1fSGrmocv67Tqkk
cfR3ntXf8Xye6Pnc5zWakkzSBb0dvtsaSbBEi1arrRlrWCOyoktoHOI2GJ1Z
gRJixu200I9pZZl4oNQmuMM9qzYpC0/hcm30injTOEZEkcXgjsy3WsBSdh4A
B4ylh8DS2xu2LZxJy98OCB5/gvXw6PyZspO46A11TiIyE9Fbi+9tsfeJ2hJi
HBoZqGjkWFYfdXymJWXvOmNZE2KKh26SxDTd8OpOab9lkmjkso9X7LTM6eW2
XshJqnGdNadwhXo2v/MiUbapojgSQmyDyAVHNE48SZmUEMgdnTqj/u980ta9
lygxljutY8+xtJpknXQLo0mS9KJhjayCkv0UTAO1LoLnhbAIbgwmTIYcgpy9
yteE62YuLCKo4Z4mGjJqTglC1tvGwNcZ+XP23NHaqMNI/zzTo9So7MFhczu+
EukVh2lVXCf7gBPZxX6WinioG3KVwCF+0e7YrUcdu6Q4hdDPYSNm64VExjgM
dZ85d9IijcJNfVQpdHEKb2rg6qdc0M0X8y9HrQsWtU/IMqyW4yqo0V21QvNy
xUuRgYh9Er7F+tE74agNtv3UWR64DF/1fu8YCUqCyUwKMGtZdLSnxQD+Tost
aLFTDagcc9e9R7qRmOKoNsIoBYtFDNjZ5uoXqNY7qPe0o5ptXjWNfeHDugu7
iuFmtU2yat9WPmXM1MjpcpzIINcAH8q2WmYW+jzuf1ACyjADwUM5QKSmjl5h
EvIu7nzSxUU6HUuGVbujkixXbb2n2AKCc8o1GXY9JpX2EAFGOyFGV7Hi+qBu
sbLdbPFYnjez/mnp6sw5L7Zcqb5p4boh2nRzgzaGz95USyxfk+gCeNksUztV
j7QYOHafx8FHDnsseaBTwI0kDOxreWR047rIlfUwTXlV1Z+ZOVm8vGytTGI1
q85Fg47HPedZYeZjkUzqmqQZpMIkNDilAy8/d4iirsNSWphhwZqtMDDK9GAJ
LXqqqtopxpZtuoM6UMUYRArZPytUd1IMbZC7TQY+DRvgYCNlfxk6irlTPS7K
g8YpG9ETKfcZq4JTMezOWMoyMOiJve+KCfYMMy0UrFWfZ+ytpd/wPDmBA6AJ
J+OMi23QXg1afzrv/4FkhfONtObKKPuwKGXD97gSEiq7BWBiGCsDOsu6/2mG
vMyjUkLH7nstUer9WRfhHsFo0G1VEQmwSNtpJYqR7k9F6Qy5dtuKfURM5I4j
KjmxRtsWx12Im14LMaXMoHHIFAtF5eT/J5Tf4BbeyE65jZVtg8POk95zm+3F
ququpZU767zalifail//8zkJ+3iqV22z3dBQ8JT6A2gitbWZ6ENuzbROv4Rm
TCZ7iUeTF8MG+aUmCwCRKwIgRdMe7I8a9yqtIeLN/nuD5NR93cmbNoRI60k/
tUA1OBIpavvHqv9+e4Eut+u+33QvHj26gvPcXhwAhj2KQzy6hF/bclltuznP
86iHTx7dnBwcH3zRfNhl7hgqpihsT8nsuSFNcc1WjqPZ4eEh0uUYPEFJjNsK
cEMb8YkLk6i8/N7nLiLQCjt2vWFEBzsex93JCTBjnERODBNp0+Mb13ZZRbcm
TyYWJt+Sgas9pw4o74FM4tGkg2jIxyXGotXV2doXZ0Ap1BeXjfIpFjCw4DjJ
qjvTcYaAofnWXAN5se1GSxy40D1b0U7lYJyAY7YJh43g/ilpIja2GTjNcDTq
+EZewi7WJyi4O9ilhKRKrWnACXYTPHv8+OnQ36edbqQCduwGaC7rS6FRpv1p
Pm4sm521pcgqP8j5+A5wA3ftZJL38JCkjzbETlJO0qT2EdVFW3LmmvbuImCh
s5mVQQOaLxa0o74c+mgxFozcQJTVYq3faFQWVU1fdAtgLF0FyeCymHcLRlla
p+9zs+ddAvNgEtuQb3iLUrbwjQyzJcavzqnHFRoVB+hBEWEuy4H+9h5LZhe3
1n7baxBa6JzlYbaG2S0/zHNGKR3fisWJzMEWkM7insRioJaA9bbnvLTIo2Po
A85hKcEPZuGqIZP72jpekSf6mBnbW7Ct9Qt1JXftySQZEpk3wsVfivGCotTY
nWICD1wnNr6CiFLmNh5mINFKMMBahpc8hnR86RtAOli2w8OYM3XuEiFEf4vy
MXYUw2y3WBNSYqPTiLRVcyUit2bmSA5XnfpZ+D2hfOwvlZoEbov3H+RhGjyW
LOMixMpybHxK95ydamzqmQJz7Ky4dUxSO0ya4HnvjobcDXO8ZuRltj8yV7PO
qZcr7uLC5/2KcrPDteRj3KM/aDbcKgYmSvmhHeWPqALmEBN2rorDzu5f1w6D
wWiUomtyNehVw/GjxCBqsmlrFrUseNuZtpU7EgzNU4R7GJ5YhPP+5ad1jUcI
TDlERHLg9D4PibYQeybtuNfcOk8Cxq73Y3NEbWOnTUZ6wFrfo15E2Ji1fmpE
uASd6a5jgXKl/ORhwGB0dLUI83MMhfiPtM6mrf4a5h9AT7YIbpBDO0luuUPU
Yzcx0EbhuDGMfSB3q9dQD5T6o+XXjgX4Heip2aSrPHls53sJaUzt12mcK2Xd
CzPiaTB4mun2mm53FKkplhXzW+uAMQmZMMFazun704EwSR9K7hUVGiMes7F+
MFMUKE5dXNEPFFekTvrivWPxe8j09+N3b191Uxj4CsmzON9wu6ifBux6GboX
k8n/hJ+JvvLCYfHkLTCFM2m9/qI4/PLtMfzz9Aj/eYz/PMfPnuA/J/DP8SX8
c4LfHgf87XBSwM/elNUfHHC6P/kUxIfwInPlTMaWcPQ3LuEoX8LRvUsgSGCb
tyQipSMsxyoxXXV1LYkK2n1FvIB4nfG+4qUai07E3BBRqS0wv6dPsVFk2d0l
A5LxR/twXpM2DyJn4g+mWjuoiUq6X9sAilp/5lQX0cDZjgND6s8kq/4htDXF
MVw0F+Ws+FPZtlXx/fa6L2tsHP99qD5/roo/A2JhfT745HQVvpTUHPPlqgHa
CBfvHUxWhlXxCf/bLjskAd+XNdqczrvFdXMZ6gpEzndAT68B596H215T4P5z
012jTATScS+pNjdVuGW19TKEJQYp0q15STosSCC/wx6wbMvLfr4Mn5vPc0CC
8KWfd6KOHx5ipZ+3KF2XsIPA1rXRV/iNm6MjeenHTkIWuUcizPjtySG2wJVs
DywvrEXt2EUiZfFegajFGgAm8U3PGEOmB5PvYNTT5TLrODRexOn+BR7RApl8
sMRNrcceeu14Iit4syqvNAEHC1yTgUmCLnGV76qaDgvQBY9lbQ5EZ9ih2tcP
zXiCM36iw7tnUiogTRYXxQl6wpI84RbM0V7W8erwZDzB8Udin0/pUaLDWHak
p+iRy9BahmUaWdkVUz4nWPbUegvGd/912wipZpVLSvl7orPjfMWE6K35Mf4/
i81Ey9qDMH2MMFWgJnAoOytiYMZRBpkiy1tgCM1yG5M2uNWQUjO4Iwh9NOzV
S2tzBpznRvqckZTTOytBxBm5wsOUOb3BnCw4i6vE51p2knOKvV+pByJKFBiB
R9Zgq+TOz78EuQdDKlKgJ2lfszx5Bg9gUD8dB/sjRnZcAwOg+rkrkAvXZP+x
kH9ex3ajIs4jFXDaZqXqUvubTgYRhvaF7mpOhXgQA55M3MZriusHuuNxUcza
EVnx+8hx7fsRj6sHKpmOx2z8Q28HcrP73Bc7HbzfFSB2NnwrSOzu1hXlvfFS
Xolvjzvn6ibMb5dcftmgetiJklEqD5xavd1onTEKVhmSHKLzKRezk6hCf7mL
UbxPE0pixCq9+tAQRMrfNWzpnwYqgksS5Woa1/jTHx23HG7LnmP2OrYTeuuT
cFFfAYAsTpygIJa1+cezP/EsWRhODC3AEgfUYXrgAyHYmjNCpO+pvsHVY3Kz
Moiv6SSIdg/B7ZhBr56c28Bh1SJTE7t+DtJp5GYD1pXcPgp2ZmZ+e31XTCks
2K4JMPpSonaW6oXZbq5wVXRsAlBmAa+YErHNsjPbNRl3VwFwf1o3f3EWub+o
YjIt9o6OD/c1pc03eBNid2b52TsL+OT51uq0dmXE8Ax9tqukyu5eli1d+O+Q
Qu8oDC3qlM8qT5PHKDpOEnCxJvd4kWJY4w4llnW/aGKKlYr9+bbrYjoisDuy
zL1DJXKWWGJ5S9kzxRT9FDgmGsxFiPsU5rhYIq4JmbeLiA1jg7UlYjGb1QE+
Dt+Lnh06FRtzQc7ZlKyIrhst4/LQXTgRiYCkEsRHIZK0QGNJZCl69STKKSWZ
oYnWcilr9fu2tD9qYu12l3AGpNRSC8pX4SPvfffQeh+LHEr2Q3apqZvg5ODg
+QNvP5mMylnDiwCkdI7RDQLzlReRd4z9lOXVSEU/wr0vfiJNqEsAIAKAVkQc
ruCBmb6NPNx4aukNBKDq/Oeynr9pA2hj1ecHhnuWLxyG3i6rBlN8m8Xiumoe
GOB5PsAfQPi/K36owkU5mcznc5IMJ/8H6fF8H44YAQA=

-->

</rfc>
