<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-emu-eap-ppt-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="EAP-PPT">Extensible Authentication Protocol (EAP) Using Privacy Pass Token</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-emu-eap-ppt-04"/>
    <author fullname="Paresh Sawant">
      <organization>Apple Inc.</organization>
      <address>
        <email>paresh_sawant@apple.com</email>
      </address>
    </author>
    <author fullname="Bart Brinckman">
      <organization>Cisco Systems</organization>
      <address>
        <email>bbrinckm@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <keyword>Internet-Draft</keyword>
    <keyword>EAP</keyword>
    <keyword>anonymous</keyword>
    <keyword>authorization</keyword>
    <keyword>Privacy Pass token</keyword>
    <abstract>
      <?line 47?>

<t>This document describes Extensible Authentication Protocol using
Privacy Pass token (EAP-PPT) Version 1. The protocol specifies
use of the Privacy Pass token for client authentication within EAP
as defined in RFC3748. Privacy Pass is a privacy preserving
authentication mechanism used for authorization, as defined
in RFC9576. EAP-PPT must be performed only in a tunnel-based EAP method.</t>
    </abstract>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies Extensible Authentication Protocol (EAP)
method, EAP-PPT, which uses Privacy Pass token for EAP peer
authentication; see <xref target="RFC9576"/> for more information about
Privacy Pass. EAP-PPT <bcp14>MUST</bcp14> be used inside any tunnel-based EAP
method that enables secure communication between a peer and a
server by using Transport Layer Security (TLS) Protocol
<xref target="RFC9846"/>. The tunnel-based EAP method <bcp14>MUST</bcp14> be a server authenticated TLS tunnel only.</t>
      <t>Privacy Pass tokens are unlinkable authenticators that can be used
to anonymously authorize a client <xref target="RFC9576"/>. Privacy Pass tokens are issued to peer by token Issuers using an Issuance Protocol <xref target="RFC9578"/>, and therefore, peer receives the token out of band of EAP-PPT.
A client possessing such a token is able to
prove that it was able to get it issued by a trusted Issuer, without allowing the
relying party redeeming the client's token (the Origin) to link
it with the issuance flow.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>Much of the terminology in this document is defined in <xref target="RFC3748"/>.</t>
      <t>Additional terms are defined below:</t>
      <dl>
        <dt>NAI:</dt>
        <dd>
          <t>Network Access Identifier <xref target="RFC7542"/></t>
        </dd>
        <dt>TLV:</dt>
        <dd>
          <t>Type-Length-Value. A data object consisting of a type code, a length,
and a value. EAP-PPT carries the contents of its messages as TLV
objects, using the TLV format defined in
<xref section="4.2.1" sectionFormat="of" target="RFC9930"/>; see <xref target="tlvformat"/>.</t>
        </dd>
        <dt>EAP-PPT peer:</dt>
        <dd>
          <t>This term is used for the entity acting as EAP peer.
This term is identical to term Client defined in
<xref section="2" sectionFormat="of" target="RFC9576"/>.</t>
        </dd>
        <dt>EAP-PPT server:</dt>
        <dd>
          <t>This term is used for the entity acting as EAP server.
This term is identical to term Server defined in
<xref section="2" sectionFormat="of" target="RFC9576"/>.</t>
        </dd>
        <dt>EAP server identity:</dt>
        <dd>
          <t>A name asserted for the EAP server by the certificate it presents
during the first phase. <xref target="challengeprocessing"/> specifies which
certificate fields provide it.</t>
        </dd>
        <dt>Privacy Pass token:</dt>
        <dd>
          <t>Unlinkable authenticator that can be used to anonymously
authorize a client <xref target="RFC9577"/>. This is produced as an output
of issuance protocol <xref target="RFC9578"/>.</t>
        </dd>
        <dt>Token Challenge:</dt>
        <dd>
          <t>A single challenge presented by an EAP-PPT server, consisting of a
TokenChallenge structure (<xref section="2.1.1" sectionFormat="of" target="RFC9577"/>) and,
optionally, the Issuer key and the ExtensionType values to which the
token is to be bound. Carried in a Token-Challenge TLV
(<xref target="tokenchallengetlv"/>).</t>
        </dd>
        <dt>Token Redemption:</dt>
        <dd>
          <t>An action by which a peer presents a Privacy Pass token to a
EAP-PPT server in EAP-PPT Protocol. See <xref section="2.2" sectionFormat="of" target="RFC9577"/>.</t>
        </dd>
        <dt>Identity provider:</dt>
        <dd>
          <t>An entity that is responsible for authentication of end-user devices
with the purpose of granting them access to a network resource.</t>
        </dd>
      </dl>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>EAP is predominantly used for authentication of users and devices
trying to join a network. Its security and extensibility capabilities
makes it a popular choice in implementing secure network access.
EAP is one of the most preferred authentication mechanisms used for
secure wireless LAN access using <xref target="IEEE-802.11"/> standard, wired LAN
access using <xref target="IEEE-802.1X"/> and Virtual Private Network (VPN) access.
EAP is also used for secure network access for students and guests
in academia, see <xref target="RFC7593"/>.</t>
      <t>One goal of privacy is to protect individual's identity and personal
information from eavesdroppers, intermediaries and recipients
in the network communication. An individual's privacy may get
compromised when network access is attempted using EAP as an
authentication mechanism. The various privacy-specific threats
are described in <xref section="5.2" sectionFormat="of" target="RFC6973"/>.</t>
      <t>Typical approaches for authorizing clients, such as through the use
of a permanent identity or service provider generated pseudo identity,
are not privacy-friendly since they allow servers to track clients
across sessions and interactions. This means service providers,
identity providers, employers, or school/university administrators
can track the individuals.</t>
      <t>The goal of this specification is to protect an individual from the
<xref section="5.2" sectionFormat="of" target="RFC6973"/> in public and enterprise environments.
EAP-PPT can be leveraged for authorization based on
anonymous-credential authentication mechanisms. EAP-PPT takes a
different approach: instead of carrying linkable state carrying
information to servers, such as permanent identity or pseudonym,
EAP peer presents Privacy Pass tokens that attest to this information.
These tokens are anonymous in the sense that a given token cannot be
linked to the protocol instance in which that token was initially
issued.</t>
      <t><xref target="RFC9577"/> specifies the authentication scheme using Privacy Pass
token over HTTP. <xref target="RFC9577"/> mainly serves use cases where access to
restricted services require anonymous client authorization. Since
<xref target="RFC9577"/> functions at the application layer of a networking stack,
it justifies a need of a protocol that can offer the similar
functionality for the lower layers. EAP-PPT, performed inside a 
server-authenticated TLS tunnel offers anonymous network access to 
wired and wireless networks at those lower layers. Since EAP-PPT method 
provides unilateral authentication, it can be used together with responder
authentication based on public key signatures in <xref target="RFC7296"/> protocol. 
<xref target="RFC7296"/> is a component of IPsec used for performing mutual 
authentication and establishing and maintaining Security Associations. 
<xref target="RFC7296"/> is widely used to implement remote access VPN service in 
public and enterprise environments, so EAP-PPT can be used to provide 
anonymous VPN services to clients.</t>
      <t>In summary, EAP-PPT provides a solution for networks that wish to offer
anonymous network access to users and devices, protecting their privacy, 
while still being able to authorize them based on the possession of valid
token that proves that a trusted attestation was performed based on the 
policies they defined for network access.</t>
    </section>
    <section anchor="architecture-model">
      <name>Architecture Model</name>
      <t><xref target="arch"/> shows network architectural model for EAP-PPT.</t>
      <figure anchor="arch">
        <name>EAP-PPT Architectural Model</name>
        <artwork><![CDATA[
+----------+      +----------+      +----------+      +----------+
|          |      |          |      |          |      |          |
|   Peer   |<---->|  Authen- |<---->|   EAP    |<---->|  EAP-    |
|          |      |  ticator |      |  Server  |      |  PPT     |
|          |      |          |      |          |      |  Server  |
+----------+      +----------+      +----------+      +----------+
]]></artwork>
      </figure>
      <t>The entities depicted in <xref target="arch"/> are logical entities and may or
may not correspond to separate network components. For example, the
EAP server and EAP-PPT server might be a single entity; the
authenticator and EAP server might be a single entity; or the
functions of the authenticator, EAP server, and EAP-PPT server might
be combined into a single physical device. For example, typical
<xref target="IEEE-802.11"/> deployments place the authenticator in an access point
(AP) while a RADIUS server may provide the Tunneled EAP Method and
EAP-PPT method server components. The above diagram illustrates the
division of labor among entities in a logical manner and shows how a
distributed system might be constructed; however, actual systems might
be organized differently.</t>
    </section>
    <section anchor="protocol">
      <name>Protocol</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>A tunnel-based EAP method supports authentication in two phases after
the initial EAP Identity request/response exchange. In the first phase,
it uses a TLS <xref target="RFC9846"/> handshake to provide an authenticated key
exchange and to establish a protected tunnel. The EAP peer and server
that are configured to perform the peer authentication using EAP-PPT
method, <bcp14>MUST</bcp14> establish the TLS tunnel without peer authentication.
EAP server <bcp14>MUST NOT</bcp14> send CertificateRequest to the TLS client during
the TLS handshake, when peer authentication is desired using EAP-PPT
method.</t>
        <t>The TLS tunnel <bcp14>MUST</bcp14> be established as specified in <xref target="RFC9427"/>, which
requires the guidelines of <xref target="RFC9190"/> to be followed. The TLS tunnel
<bcp14>MUST</bcp14> be authenticated by an EAP server certificate. As required by
<xref section="2.1.1" sectionFormat="of" target="RFC9190"/>, pre-shared key authentication <bcp14>MUST NOT</bcp14> be
used except for resumption. Pre-shared keys established by session
resumption <bcp14>MAY</bcp14> be used, subject to the restrictions in <xref target="privacy"/>. The
psk_dhe_ke key exchange mode <bcp14>MUST</bcp14> be used for resumption, so that a
resumed session retains forward secrecy; EAP-PPT does not permit the
deployment-specific exception allowed by
<xref section="2.1.3" sectionFormat="of" target="RFC9190"/>.</t>
        <t>The second phase of the authentication begins after the TLS tunnel is
established. Any EAP method that fulfills the requirements specified
in <xref target="RFC6678"/> is called tunnel-based EAP method.</t>
        <t>A peer supporting EAP-PPT <bcp14>MUST NOT</bcp14> send its username or any other
permanent identifiers in the first and subsequent EAP-Response/Identity
messages. EAP-Response/Identity message <bcp14>MUST</bcp14> contain only an anonymous NAI 
as per <xref section="2.4" sectionFormat="of" target="RFC7542"/> in order to route the authentication request
to the right AAA system.</t>
        <t>EAP-PPT authentication <bcp14>MUST</bcp14> be performed inside the server
authenticated TLS tunnel established by the tunnel-based EAP method.</t>
        <t>During the EAP-PPT authentication, the server challenges the peer to
present a Privacy Pass token, and the peer responds with a Privacy Pass
token. Upon a successful verification of the token, the redemption of
the token is deemed successful. EAP-PPT encodes the challenges,
responses, results and errors as TLV objects, using the TLV format
defined in <xref target="tlvformat"/>. The Privacy Pass
structures carried by EAP-PPT are conveyed directly, without any
additional text encoding.
Encapsulation of EAP-PPT method can be supported by any tunnel-
based EAP methods e.g. Protected EAP <xref target="PEAP"/>, Tunneled Transport Layer
Security EAP (TTLS) <xref target="RFC5281"/>, EAP Flexible Authentication via
Secure Tunneling (EAP-FAST) <xref target="RFC4851"/> and Tunnel Extensible
Authentication Protocol (TEAP) <xref target="RFC9930"/>.</t>
        <t>Optionally, the Privacy Pass token <bcp14>MAY</bcp14> also carry extensions<br/>
(<xref target="I-D.draft-ietf-privacypass-auth-scheme-extensions"/>) with
additional metadata relevant to the EAP-PPT server. An example of an
extension that could be useful in EAP-PPT is token expiration, since
tokens may be issued with a limited lifetime for security reasons. An
expiration extension is described in <xref target="I-D.draft-hendrickson-privacypass-expiration-extension"/>.</t>
      </section>
      <section anchor="successful-authentication">
        <name>Successful Authentication</name>
        <t><xref target="authsuccess"/> shows an example of basic, successful authentication
exchange in EAP-PPT. At the minimum, EAP-PPT uses two roundtrips to
authenticate and authorize the peer. As in other EAP schemes, an
identity request/response message pair is usually exchanged first.
As specified in <xref target="RFC3748"/> the initial identity request is not
required, and <bcp14>MAY</bcp14> be bypassed in cases where the EAP-PPT server can
presume the identity.</t>
        <t>After obtaining the identity, the EAP-PPT server constructs
EAP-Request/PPT-Challenge message with a set of token Challenges
and sends it to the EAP-PPT peer. EAP-Request/PPT-Challenge message
encodes the set of token Challenges as TLV objects (<xref target="tlvformat"/>).</t>
        <t>On receiving EAP-Request/PPT-Challenge message, the EAP-PPT peer
looks at each token Challenge and looks up the most suitable
Privacy Pass token. If EAP-PPT peer successfully finds the Privacy Pass
token, it constructs EAP-Response/PPT-Challenge message containing the
Privacy Pass token, and sends it to the EAP-PPT server.
EAP-Response/PPT-Challenge message encodes the response data as TLV
objects (<xref target="tlvformat"/>).</t>
        <t>The EAP-PPT server verifies the received Privacy Pass token in the
EAP-Response/PPT-Challenge message. After a successful token
Redemption, the EAP-PPT server sends EAP-Success.</t>
        <t>EAP-PPT server verifies the Privacy Pass token using a procedure
called token Redemption <xref section="2.2" sectionFormat="of" target="RFC9577"/>.</t>
        <figure anchor="authsuccess">
          <name>EAP-PPT Successful Authentication</name>
          <artwork><![CDATA[
+----------+                                     +----------+
|          |                                     |          |
| EAP-PPT  |                                     | EAP-PPT  |
|  Peer    |                                     |  Server  |
|          |                                     |          |
+----------+                                     +----------+
     |                                                 |
     |             EAP-Request/Identity                |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |        EAP-Response/Identity (User's NAI)       |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |       EAP-Request/PPT-Challenge (challenges)    |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |        EAP-Response/PPT-Challenge (token)       |
     |------------------------------------------------>|
     |                                                 |
     |                                            +----------+
     |                                            | token    |
     |                                            | redeemed |
     |                                            |          |
     |                                            +----------+
     |                 EAP-Success                     |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
]]></artwork>
        </figure>
      </section>
      <section anchor="failed-authentication">
        <name>Failed Authentication</name>
        <t><xref target="authfail"/> shows how EAP-PPT server rejects the peer when
token redemption fails. EAP-PPT server sends
EAP-Request/PPT-Error message containing the error information
like error code and error description as described in <xref target="errorcodes"/>. 
The error information is encoded as TLV objects (<xref target="tlvformat"/>). 
EAP-PPT peer responds to EAP-Request/PPT-Error with 
EAP-Response/PPT-Error without any data.</t>
        <figure anchor="authfail">
          <name>EAP-PPT Authentication Failure</name>
          <artwork><![CDATA[
+----------+                                     +----------+
|          |                                     |          |
| EAP-PPT  |                                     | EAP-PPT  |
|  Peer    |                                     |  Server  |
|          |                                     |          |
+----------+                                     +----------+
     |                                                 |
     |             EAP-Request/Identity                |
     |<-------------------------------------------------
     |                                                 |
     |                                                 |
     |        EAP-Response/Identity (User's NAI)       |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |       EAP-Request/PPT-Challenge (challenges)    |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |        EAP-Response/PPT-Challenge (token)       |
     |------------------------------------------------>|
     |                                                 |
     |                                            +----------+
     |                                            | failed   |
     |                                            | to       |
     |                                            | redeem   |
     |                                            | token    |
     |                                            +----------+
     |         EAP-Request/PPT-Error (error)           |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |             EAP-Response/PPT-Error              |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |                   EAP-Failure                   |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |

]]></artwork>
        </figure>
      </section>
      <section anchor="remediation">
        <name>Remediation</name>
        <t>An EAP-PPT server <bcp14>MAY</bcp14> successfully validate a token, but fail
to validate metadata carried in an extension. The EAP-PPT server
<bcp14>MAY</bcp14> require different or more recently generated metadata, for
example. In this case the EAP-PPT server <bcp14>MAY</bcp14> reject, or
conditionally accept an EAP-PPT Authentication.</t>
        <t>As shown in <xref target="remediate"/>, after successful token redemption,
the EAP-PPT server <bcp14>MAY</bcp14> respond with a PPT error message containing
error information like an error code and error description
(see <xref target="errorcodes"/>), to inform the EAP-PPT peer of the metadata
validation issue. In this case, the EAP-PPT server <bcp14>MAY</bcp14> respond with 
an EAP-Failure or EAP-Success message, depending on the metadata
specific policies set on the EAP-PPT server side. Since the peer 
proves the authenticity of issuance of token by providing
cryptographically correct token, the EAP-PPT server <bcp14>MAY</bcp14> decide to 
authorize the peer conditionally.</t>
        <t>The EAP-PPT server <bcp14>MAY</bcp14> optionally also include a Session-Timeout TLV
in the PPT-Error, informing the EAP-PPT peer how long the session will
be permitted in order for the EAP-PPT peer to remediate and request a new
token from its Issuer. If the Session-Timeout TLV is included in
the PPT-Error (see <xref target="errorcodes"/>), the AAA server <bcp14>MUST</bcp14> also include 
a RADIUS Session-Timeout attribute (see <xref section="5.27" sectionFormat="of" target="RFC2865"/>) 
with the same value in the Access-Accept RADIUS message to the authenticator
(e.g., Network Access Server or IKEv2 Responder)). The EAP-PPT peer
responds to the EAP-Request/PPT-Error with EAP-Response/PPT-Error
without any data. The EAP-PPT peer <bcp14>MAY</bcp14> use the allotted
session time to fetch a new token by contacting its Attester. After 
getting a new token issued, the EAP-PPT peer may subsequently re-authenticate.</t>
        <figure anchor="remediate">
          <name>EAP-PPT Authentication Success with remediation</name>
          <artwork><![CDATA[
+----------+                                     +----------+
|          |                                     |          |
| EAP-PPT  |                                     | EAP-PPT  |
|  Peer    |                                     |  Server  |
|          |                                     |          |
+----------+                                     +----------+
     |                                                 |
     |             EAP-Request/Identity                |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |        EAP-Response/Identity (User's NAI)       |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |       EAP-Request/PPT-Challenge (challenges)    |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |        EAP-Response/PPT-Challenge (token)       |
     |------------------------------------------------>|
     |                                                 |
     |                                            +----------+
     |                                            | token    |
     |                                            | redeemed |
     |                                            | with     |
     |                                            | invalid  |
     |                                            | extension|
     |                                            | metadata |
     |                                            +----------+
     |         EAP-Request/PPT-Error (error)           |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |             EAP-Response/PPT-Error              |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |                   EAP-Success                   |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |

]]></artwork>
        </figure>
      </section>
      <section anchor="challengefail">
        <name>Token Challenge Verification Failure</name>
        <t><xref target="challengeverifyfail"/> shows an EAP-PPT peer declining to redeem a token
because no identity in the EAP server certificate appears in the
origin_info field of the received TokenChallenge structure, as required by
<xref target="challengeprocessing"/>. The challenge names a.ppt.example and
b.ppt.example, while the certificate presented during the first phase
identifies not-ppt.example, so the tunnel was not terminated by an EAP-PPT
server named in the challenge. The peer treats the Token-Challenge as
unusable (<xref target="unusablechallenge"/>). Where every Token-Challenge in the
message is unusable, the peer responds with a No-Suitable-Token TLV and
the EAP-PPT server terminates the conversation.</t>
        <t>This condition arises when an attacker has terminated the tunnel, and also
when the first phase and the EAP-PPT conversation legitimately terminate at
different servers, which <xref target="eapserver"/> advises against. A peer cannot
distinguish the two. No token is sent, so none is spent. The same flow
applies when the peer holds no token whose challenge_digest covers the
received TokenChallenge structure.</t>
        <figure anchor="challengeverifyfail">
          <name>Token Challenge Verification Failure</name>
          <artwork><![CDATA[
EAP server identity        = not-ppt.example
TokenChallenge origin_info = a.ppt.example,b.ppt.example
not-ppt.example does not appear in the origin_info list

+----------+                                     +----------+
|          |                                     |          |
| EAP-PPT  |                                     | EAP-PPT  |
|  Peer    |                                     |  Server  |
|          |                                     |          |
+----------+                                     +----------+
     |                                                 |
     |              EAP-Request/Identity               |
     |<------------------------------------------------|
     |                                                 |
     |                                                 |
     |       EAP-Response/Identity (User's NAI)        |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |            EAP-Request/PPT-Challenge            |
     |   (origin_info = a.ppt.example,b.ppt.example)   |
     |<------------------------------------------------|
     |                                                 |
+----------+                                           |
| origin_  |                                           |
| info     |                                           |
| mismatch |                                           |
+----------+                                           |
     |                                                 |
     |           EAP-Response/PPT-Challenge            |
     |               (No-Suitable-Token)               |
     |------------------------------------------------>|
     |                                                 |
     |                                                 |
     |                   EAP-Failure                   |
     |<------------------------------------------------|
     |                                                 |
]]></artwork>
        </figure>
      </section>
      <section anchor="privacy">
        <name>Privacy</name>
        <t>The fundamental building block of privacy in EAP-PPT is use of Privacy
Pass token, which is unlinkable authenticator, for authorization of the
peer. EAP-PPT peer selects an Issuer to get a token issued from, using
Issuance Protocol <xref target="RFC9578"/>. The Issuer generates a token response
based on the token request, which is returned to the Client (generally
via the Attester). Upon receiving the token response, the EAP-PPT peer
computes a token from the token challenge and token response. This
token can be validated by anyone with the per-Issuer key but cannot be
linked to the content of the token request or token response.</t>
        <t>If the EAP-PPT peer has a token, it includes it in a response to a
challenge from EAP-PPT server. This token <bcp14>SHOULD</bcp14> be sent only once in
reaction to a challenge; peers <bcp14>SHOULD NOT</bcp14> send tokens more than once,
even if they receive duplicate or redundant challenges.</t>
        <t>The EAP-PPT server validates that the token was generated by the
expected Issuer and has not already been redeemed for the corresponding
token challenge. Mechanism to prevent double-spending of tokens is out
of scope of EAP-PPT method.</t>
        <t><xref section="4" sectionFormat="of" target="RFC9576"/> discusses deployment models in detail. It is
<bcp14>RECOMMENDED</bcp14> to use a deployment model that guarantees EAP peer-server,
Issuer-EAP peer, and Attester-EAP server unlinkability. Mechanisms for
enforcing non-collusion are out of scope of EAP-PPT method.</t>
        <t>EAP-PPT peer <bcp14>MAY</bcp14> opt for token Caching by getting multiple tokens
issued from a single token challenge structure
(<xref section="2.1.1" sectionFormat="of" target="RFC9577"/>). This improves privacy by separating
the time of token issuance from the time of token redemption.
Optionally, the peer <bcp14>MAY</bcp14> use a variant of Privacy Pass Issuance<br/>
(<xref target="I-D.draft-ietf-privacypass-batched-tokens"/>) to get more tokens
issued and cached at a time.</t>
        <t>EAP peer and server <bcp14>MUST</bcp14> send anonymous Network Access Identifiers
(NAIs) (<xref section="2.4" sectionFormat="of" target="RFC7542"/>) in the first and subsequent EAP-
Response/Identity messages. EAP peer <bcp14>MUST NOT</bcp14> send its username (or
any other permanent identifiers) in the Identity Response. Following
<xref target="RFC7542"/>, it is <bcp14>RECOMMENDED</bcp14> to omit the username (i.e., the NAI
is @realm), but other constructions such as a fixed username (e.g.,
anonymous@realm) is allowed. Note that the NAI <bcp14>MUST</bcp14> be a UTF-8 string
as defined by the grammar in <xref section="2.2" sectionFormat="of" target="RFC7542"/>.</t>
        <t>During TLS handshake in the first phase, EAP peer <bcp14>MUST</bcp14> send a
Certificate message containing no certificates as described in
<xref section="4.5.1" sectionFormat="of" target="RFC9846"/>, if CertificateRequest message is
received. Many client certificates contain an identity such as an
email address, and therefore, this document forbids client
authentication during first phase.</t>
        <t>It is desired to support fast reconnect (<xref section="7.2.1" sectionFormat="of" target="RFC3748"/>)
by shortening the TLS conversation using session resumption
(<xref section="2.1.2" sectionFormat="of" target="RFC5216"/>) during the first phase. EAP peer
presents an identifier that was issued previously by the server, to
attempt the session resumption. When a peer attempts to resume a TLS
session using such an identifier it allows the EAP server to detect
peer's revisit to the network.</t>
        <t><xref section="4" sectionFormat="of" target="RFC9427"/> requires all EAP servers and peers to
support resumption for TLS-based EAP methods. That is a requirement to
implement the capability, and it does not oblige a peer to use it. This
document restricts when an EAP-PPT peer uses resumption, and those
restrictions are compatible with the requirement to support it.</t>
        <t>Use of session resumption <bcp14>MUST</bcp14> be limited to the current association to
the network. The EAP peer <bcp14>MUST</bcp14> perform a full TLS handshake during the
first phase after every new association to the network. For example, an
EAP peer can continue to resume TLS sessions during the
re-authentications as long as the client device is associated to the
same access point of the secure wireless LAN <xref target="IEEE-802.11"/>, so session
resumption <bcp14>MUST</bcp14> be used only on the same authenticator as for the
original session.</t>
        <t><xref section="3" sectionFormat="of" target="RFC9427"/> requires that an EAP server not permit a
session ticket to resume authentication unless the inner tunnel
authentication completed successfully. Since EAP-PPT is that inner
authentication, a conversation in which token redemption failed cannot
yield a ticket that resumes successfully, and an EAP server that cannot
determine the authentication state of a ticket <bcp14>MUST</bcp14> assume that inner
authentication did not complete (<xref section="5.1" sectionFormat="of" target="RFC9427"/>).</t>
        <t>A Protected Access Credential (PAC) in EAP-FAST
(<xref section="3.2.2" sectionFormat="of" target="RFC4851"/>) is a long-lived credential that would
likewise allow a server to determine a peer's presence across session
resumptions. <xref section="2.2" sectionFormat="of" target="RFC9427"/> and
<xref section="2.3" sectionFormat="of" target="RFC9427"/> deprecate the use of a PAC for TEAP and
EAP-FAST with TLS 1.3, so this concern does not arise for tunnel-based
EAP methods using TLS 1.3. A deployment that nonetheless uses a PAC
needs to treat it as an identifier that is linkable across sessions.</t>
      </section>
      <section anchor="keyderivation">
        <name>Key Derivation and Cryptographic Binding</name>
        <t>EAP-PPT does not derive keying material. It produces neither an MSK nor
an EMSK, and an implementation <bcp14>MUST NOT</bcp14> report keying material for
EAP-PPT to the tunnel-based EAP method that carries it.</t>
        <t>A Privacy Pass token is a bearer credential. How an EAP-PPT server
verifies one depends on the token type. A publicly verifiable type, such
as Blind RSA (token type 0x0002), is verified using the Issuer public
key. A privately verifiable type, such as VOPRF (token type 0x0001), is
verified using key material that the EAP-PPT server shares with the
Issuer <xref target="RFC9578"/>; that key material is shared between the Issuer and
the EAP-PPT server, and not with the EAP-PPT peer. In neither case does
verification involve a secret that the peer also holds, and in both
cases the peer demonstrates possession of a token simply by transmitting
it. Running EAP-PPT therefore establishes no secret shared between the
peer and the EAP-PPT server, and the method has nothing of its own from
which to derive keys. In this respect EAP-PPT resembles EAP-GTC
(<xref section="5.6" sectionFormat="of" target="RFC3748"/>), which likewise carries a credential that
the peer transmits rather than computes with, and which likewise derives
no keys.</t>
        <t>Deriving keying material from the TLS session established by the
tunnel-based EAP method would not change this. Any such value is a
function of that TLS session alone, so any party holding the session can
compute it. Reporting such a value as EAP-PPT keying material would
assert a property that the method does not provide.</t>
        <t>For the same reason, EAP-PPT does not contribute to cryptographic
binding. Cryptographic binding demonstrates that a single entity acted
as the peer for the tunnel and for the methods executed within it
(<xref section="7.2.1" sectionFormat="of" target="RFC3748"/>), and it depends on the inner method
contributing a secret that a party which terminated the tunnel cannot
compute. A tunnel-based EAP method carrying EAP-PPT computes its
compound keys as it does for any inner method that derives no keys; for
TEAP see <xref section="6.2.1" sectionFormat="of" target="RFC9930"/>. The resulting binding offers
little protection, as noted for such inner methods in
<xref section="3.6.5" sectionFormat="of" target="RFC9930"/>. Deployments needing assurance that the
tunnel endpoint and the EAP-PPT peer are the same entity have to obtain
it by other means; collocating the EAP server with the EAP-PPT server,
as recommended in <xref target="eapserver"/>, removes the separation that
cryptographic binding would otherwise be relied on to detect.</t>
        <t>The keying material supplied to the authenticator is therefore that of
the tunnel-based EAP method, derived as specified for that method with
TLS 1.3 in <xref target="RFC9427"/>. EAP-PPT authorizes the peer; it does not key
the link.</t>
      </section>
      <section anchor="channelbinding">
        <name>Channel Binding</name>
        <t><xref target="RFC6677"/> defines channel bindings for EAP which solve the "lying NAS" and
the "lying provider" problems, using a process in which the EAP peer gives
information about the characteristics of the service provided by
the authenticator to the Authentication, Authorization, and Accounting (AAA) 
server protected within the EAP authentication method. This allows the server
to verify the authenticator is providing information to the peer that is 
consistent with the information received from this authenticator as well as 
the information stored about this authenticator.</t>
        <t>EAP-PPT server can optionally request channel binding information to the EAP-
PPT peer after a successful redemption of the token sent in EAP-Response/PPT-
Challenge message. EAP-PPT server uses EAP-Request/PPT-Channel-Binding message
to request the channel binding information to the peer. EAP-PPT server <bcp14>MUST</bcp14>
send EAP-Request/PPT-Channel-Binding message after a successful redemption of
the token and before sending EAP-Success message. EAP-PPT peer <bcp14>MUST</bcp14> send
channel binding information in EAP-Response/PPT-Channel-Binding message in
response to EAP-Request/PPT-Channel-Binding message. EAP-PPT <bcp14>MUST</bcp14> send
the channel-binding information as defined in <xref section="5.3" sectionFormat="of" target="RFC6677"/>.</t>
        <t>EAP-Request/PPT-Channel-Binding message is optional, and therefore EAP-PPT
server may skip it when the EAP server has already received the information
through EAP methods executed before EAP-PPT.</t>
      </section>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <section anchor="packet-format">
        <name>Packet Format</name>
        <t>EAP-PPT Packet Format is shown below.</t>
        <figure anchor="header">
          <name>EAP-PPT Header</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      |  Identifier   |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Subtype    |             Data             
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                                                

]]></artwork>
        </figure>
        <t>Code
      1 for request, 2 for response.</t>
        <t>Identifier
      The Identifier field is one octet and aids in matching
      responses with requests.  The Identifier field <bcp14>MUST</bcp14> be
      changed for each request packet and <bcp14>MUST</bcp14> be echoed in
      each response packet.</t>
        <t>Length
      The Length field is two octets and indicates the length
      of the EAP packet including the Code, Identifier, Length,
      Type, Subtype, and Data fields.</t>
        <t>Type
      57 (EAP-PPT)</t>
        <t>Subtype
      Message subtypes as defined in <xref target="subtype"/></t>
        <t>Data
      Zero or more TLV objects, encoded as defined in
      <xref target="tlvformat"/>. The TLV objects carried by each message are
      specified in <xref target="messages"/>.</t>
      </section>
      <section anchor="subtypes">
        <name>Subtypes</name>
        <table anchor="subtype">
          <name>EAP-PPT Subtypes</name>
          <thead>
            <tr>
              <th align="left">Subtype</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">A PPT-Challenge request or PPT-Challenge response.</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">A PPT-Error request or PPT-Error response.</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">A PPT-Channel-Binding request or PPT-Channel-Binding response.</td>
            </tr>
          </tbody>
        </table>
        <t>The Code and Subtype fields together identify which EAP-PPT message a
packet represents, and therefore which TLV objects are expected in the
Data field. A recipient <bcp14>MUST</bcp14> determine the message type from the Code
and Subtype fields, and <bcp14>MUST</bcp14> then validate the TLV objects carried in
the Data field against the composition specified for that message in
<xref target="messages"/>. A TLV object that is not specified for the indicated
message is skipped if its M bit is set to 0. If its M bit is set to 1,
it is handled as described in <xref target="unknowntlv"/>.</t>
        <t>A recipient <bcp14>MUST NOT</bcp14> infer the message type from the TLV objects
present in the Data field. Two of the messages defined by this document
carry no TLV objects at all, and a message may legitimately consist
only of TLV objects that the recipient skips under <xref target="unknowntlv"/>, so
the set of TLV objects present is not a reliable indication of the
message type.</t>
      </section>
      <section anchor="tlvformat">
        <name>TLV Format</name>
        <t>EAP-PPT messages carry their contents as a sequence of TLV objects in
the Data field of the EAP-PPT packet. The TLV format used by EAP-PPT is
identical to the TLV format defined for TEAP
in <xref section="4.2.1" sectionFormat="of" target="RFC9930"/>, and is shown in <xref target="tlvheader"/>.
EAP-PPT reuses only the framing defined there. The EAP-PPT TLV Type
space is independent of the TEAP TLV Type space, and a given numeric
value does not denote the same TLV in both protocols.</t>
        <figure anchor="tlvheader">
          <name>EAP-PPT TLV 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|M|R|         TLV Type          |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Value...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl>
          <dt>M</dt>
          <dd>
            <t>Mandatory bit (1 bit). When set to 1, a recipient that does not
understand the TLV Type <bcp14>MUST</bcp14> reject the enclosing message or
Token-Challenge, as specified in <xref target="unknowntlv"/>. When set to 0, a
recipient that does not understand the TLV Type <bcp14>MUST</bcp14> skip the TLV and
continue processing the remainder of the message.</t>
          </dd>
          <dt>R</dt>
          <dd>
            <t>Reserved (1 bit). <bcp14>MUST</bcp14> be set to 0 by the sender and <bcp14>MUST</bcp14> be ignored
by the recipient.</t>
          </dd>
          <dt>TLV Type</dt>
          <dd>
            <t>A 14-bit unsigned integer in network byte order identifying the TLV.
Values are allocated from the "EAP-PPT TLV Types" registry
(see <xref target="ianatlv"/>), and are not related to the TEAP TLV Type values
enumerated in <xref section="4.2.1" sectionFormat="of" target="RFC9930"/>.</t>
          </dd>
          <dt>Length</dt>
          <dd>
            <t>A 16-bit unsigned integer in network byte order giving the length of
the Value field in octets. The Length field does not include the
four octets occupied by the M, R, TLV Type and Length fields
themselves. A Length of 0 indicates that the TLV carries no Value.</t>
          </dd>
          <dt>Value</dt>
          <dd>
            <t>The value of the TLV. Its contents and permitted lengths are
determined by the TLV Type, as specified in <xref target="tlvtypes"/>.</t>
          </dd>
        </dl>
        <t>TLV objects are neither padded nor aligned to any boundary; a TLV
begins at the octet immediately following the last octet of the
preceding TLV. All multi-octet integer fields defined in this document
are in network byte order.</t>
        <section anchor="tlvtypes">
          <name>TLV Types</name>
          <t><xref target="tlvtypetable"/> lists the TLV Types defined by this document. The
Length column gives the permitted length of the Value field in octets.</t>
          <table anchor="tlvtypetable">
            <name>EAP-PPT TLV Types</name>
            <thead>
              <tr>
                <th align="left">Type</th>
                <th align="left">Name</th>
                <th align="left">Length</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1</td>
                <td align="left">Token-Challenge</td>
                <td align="left">variable</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">Challenge</td>
                <td align="left">1-65535</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">Token-Key</td>
                <td align="left">1-65535</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">Extension-Types</td>
                <td align="left">2-65534</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">Token</td>
                <td align="left">1-65535</td>
              </tr>
              <tr>
                <td align="left">6</td>
                <td align="left">Extensions</td>
                <td align="left">1-65535</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">No-Suitable-Token</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">8</td>
                <td align="left">Error-Code</td>
                <td align="left">1</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">Error-Description</td>
                <td align="left">0-65535</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">Session-Timeout</td>
                <td align="left">4</td>
              </tr>
              <tr>
                <td align="left">11</td>
                <td align="left">Vendor-Specific-Error</td>
                <td align="left">5</td>
              </tr>
              <tr>
                <td align="left">12</td>
                <td align="left">Channel-Binding-Data</td>
                <td align="left">1-65535</td>
              </tr>
            </tbody>
          </table>
          <t>The Value field of each TLV is encoded as described below.</t>
          <dl>
            <dt>Token-Challenge (1)</dt>
            <dd>
              <t>A container carrying the TLVs that describe a single token
challenge; see <xref target="tokenchallengetlv"/>.</t>
            </dd>
            <dt>Challenge (2)</dt>
            <dd>
              <t>A TokenChallenge structure as defined in
<xref section="2.1.1" sectionFormat="of" target="RFC9577"/>, carried directly.</t>
            </dd>
            <dt>Token-Key (3)</dt>
            <dd>
              <t>The Issuer public key for use with the issuance protocol indicated
by the accompanying Challenge TLV, in the encoding specified
by that issuance protocol, carried directly.</t>
            </dd>
            <dt>Extension-Types (4)</dt>
            <dd>
              <t>A sequence of 2-octet ExtensionType values as defined in
<xref section="3" sectionFormat="of" target="I-D.draft-ietf-privacypass-auth-scheme-extensions"/>. The
Length <bcp14>MUST</bcp14> be a non-zero multiple of 2.</t>
            </dd>
            <dt>Token (5)</dt>
            <dd>
              <t>A Token structure as defined in <xref section="2.2.1" sectionFormat="of" target="RFC9577"/>,
carried directly.</t>
            </dd>
            <dt>Extensions (6)</dt>
            <dd>
              <t>An Extensions structure as defined in
<xref section="3" sectionFormat="of" target="I-D.draft-ietf-privacypass-auth-scheme-extensions"/>, carried
directly.</t>
            </dd>
            <dt>No-Suitable-Token (7)</dt>
            <dd>
              <t>Empty. Indicates that the peer could not use any of the
Token-Challenges it received; see <xref target="unusablechallenge"/>.</t>
            </dd>
            <dt>Error-Code (8)</dt>
            <dd>
              <t>A 1-octet unsigned integer error code from the "EAP-PPT Error
Codes" registry; see <xref target="errorcodes"/>.</t>
            </dd>
            <dt>Error-Description (9)</dt>
            <dd>
              <t>Human-readable UTF-8 text. Not NUL-terminated.</t>
            </dd>
            <dt>Session-Timeout (10)</dt>
            <dd>
              <t>A 4-octet unsigned integer; time in seconds.</t>
            </dd>
            <dt>Vendor-Specific-Error (11)</dt>
            <dd>
              <t>An enterprise-scoped error code; see <xref target="vendorerrtlv"/>.</t>
            </dd>
            <dt>Channel-Binding-Data (12)</dt>
            <dd>
              <t>Channel binding data as defined in <xref section="5.3" sectionFormat="of" target="RFC6677"/>.</t>
            </dd>
          </dl>
        </section>
        <section anchor="tokenchallengetlv">
          <name>Token-Challenge TLV</name>
          <t>The Token-Challenge TLV is a container TLV. Its Value field consists
of a sequence of TLV objects that together describe a single token
challenge, as shown in <xref target="tokenchallengefig"/>.</t>
          <figure anchor="tokenchallengefig">
            <name>Token-Challenge TLV</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|        TLV Type = 1       |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Challenge TLV (Type 2)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Token-Key TLV (Type 3), optional               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Extension-Types TLV (Type 4), optional            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>The Value field contains:</t>
          <ul spacing="normal">
            <li>
              <t>exactly one Challenge TLV (Type 2) with the M bit set to 1;</t>
            </li>
            <li>
              <t>at most one Token-Key TLV (Type 3) with the M bit set to 0. This TLV
<bcp14>MAY</bcp14> be omitted in deployments where peers are able to retrieve the
Issuer key using an out-of-band mechanism; and</t>
            </li>
            <li>
              <t>at most one Extension-Types TLV (Type 4). This TLV is meaningful only
if the Issuer, EAP-PPT peer and EAP-PPT server have an out-of-band
agreement to bind the extension to the token. It carries the
ExtensionType values that the EAP-PPT server is requesting the token
to be bound to.  </t>
              <t>
The EAP-PPT server sets the M bit of the Extension-Types TLV
according to its policy for tokens that are not bound to the
requested ExtensionType values. A server that would reject such a
token, and so would return error code 6 (<xref target="errorcodes"/>), <bcp14>SHOULD</bcp14> set
the M bit to 1, so that a peer unable to honor the request treats
the Token-Challenge as unusable (<xref target="unusablechallenge"/>) rather than
spending a token the server will reject. A server that would accept
such a token, and so would return error code 7 or 8, <bcp14>SHOULD</bcp14> set the M
bit to 0.  </t>
              <t>
The M bit of the Extension-Types TLV therefore expresses the EAP-PPT
server's redemption policy, and not only whether the TLV Type has to
be understood. When it is set to 1, a peer that cannot supply a token
bound to the requested ExtensionType values <bcp14>MUST</bcp14> treat the
Token-Challenge as unusable (<xref target="unusablechallenge"/>) whether or not it
understands the Extension-Types TLV. This is a specialization, for
this TLV only, of the general rule in <xref target="unknowntlv"/>.</t>
            </li>
          </ul>
          <t>A Token-Challenge TLV <bcp14>MUST NOT</bcp14> contain a nested Token-Challenge TLV.
TLVs other than those listed above are handled as described in
<xref target="unknowntlv"/>.</t>
          <t>The TokenChallenge structure carried in the Challenge TLV <bcp14>SHOULD</bcp14> have a
non-empty origin_info field, and that field <bcp14>SHOULD</bcp14> contain a name of the
EAP-PPT server. The name is a stable identity of the server. It <bcp14>MUST NOT</bcp14>
be derived from a specific certificate, since a value such as a
fingerprint or serial number would invalidate cached tokens whenever the
certificate were renewed. A name in origin_info <bcp14>MUST NOT</bcp14> include a port,
and the default port implied by <xref section="2.1.1.1" sectionFormat="of" target="RFC9577"/> has no
meaning in EAP-PPT. A name in origin_info <bcp14>MUST NOT</bcp14> contain a wildcard, and
<bcp14>MUST NOT</bcp14> be an IP address literal.</t>
          <t>An EAP-PPT server that populates origin_info <bcp14>MUST</bcp14> be provisioned with an
EAP server certificate containing a subjectAltName extension with at
least one dNSName, and at least one such dNSName <bcp14>MUST</bcp14> appear in the
origin_info field it sends.</t>
          <t>An EAP-PPT server that sends an empty origin_info field issues
cross-Origin tokens. The peer cannot then perform the verification in
<xref target="challengeprocessing"/>, and the deployment forgoes the protection
described in <xref target="tunnelauth"/> and relies on certificate validation alone.</t>
        </section>
        <section anchor="vendorerrtlv">
          <name>Vendor-Specific-Error TLV</name>
          <t>The Vendor-Specific-Error TLV carries an error code scoped to a single
vendor, as described in <xref target="ianaenterprise"/>. Its format is shown in
<xref target="vendorerr"/>.</t>
          <figure anchor="vendorerr">
            <name>Vendor-Specific-Error TLV</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|       TLV Type = 11       |          Length = 5           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Enterprise Number                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Vendor Code  |
+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <dl>
            <dt>Enterprise Number</dt>
            <dd>
              <t>A 4-octet unsigned integer containing the vendor's IANA-assigned SMI
Network Management Private Enterprise Number (PEN), obtained from
the "Private Enterprise Numbers" registry <xref target="RFC9371"/>.</t>
            </dd>
            <dt>Vendor Code</dt>
            <dd>
              <t>A 1-octet unsigned integer error code, interpreted within the
private number space of the enterprise identified by the Enterprise
Number field.</t>
            </dd>
          </dl>
        </section>
        <section anchor="tlvparsing">
          <name>Parsing Requirements</name>
          <t>An EAP-PPT server parses TLV objects received from a peer that is, by
design, unauthenticated at the time of parsing (see <xref target="security"/>).
Implementations <bcp14>MUST</bcp14> therefore parse defensively. In particular:</t>
          <ul spacing="normal">
            <li>
              <t>An implementation determines the expected TLV composition from the
Code and Subtype fields, as required by <xref target="subtypes"/>, before
validating the TLV objects in the Data field.</t>
            </li>
            <li>
              <t>An implementation <bcp14>MUST</bcp14> verify that the Length field of a TLV does
not exceed the number of octets remaining in the enclosing Data
field or container TLV before reading the Value field.</t>
            </li>
            <li>
              <t>An implementation <bcp14>MUST</bcp14> verify that the Data field of a message, and
the Value field of a container TLV, are each consumed exactly by a
whole number of TLV objects. Trailing octets that do not form a
complete TLV <bcp14>MUST</bcp14> cause the message to be treated as malformed.</t>
            </li>
            <li>
              <t>An implementation <bcp14>MUST</bcp14> enforce the length constraints given for each
TLV Type in <xref target="tlvtypetable"/>. A TLV whose Length is not permitted
for its Type <bcp14>MUST</bcp14> cause the message to be treated as malformed.</t>
            </li>
            <li>
              <t>When this document specifies that a TLV Type occurs at most once in
a message or container, an implementation <bcp14>MUST</bcp14> treat a second
occurrence as malformed rather than selecting one of the
occurrences.</t>
            </li>
            <li>
              <t>This document defines container TLVs at a single level of nesting
only. An implementation <bcp14>MUST</bcp14> treat the message as malformed if a
container TLV appears inside another container TLV, and <bcp14>MUST NOT</bcp14>
recurse without bound when parsing.</t>
            </li>
            <li>
              <t>An implementation <bcp14>MUST</bcp14> validate that the contents of an
Error-Description TLV form well-formed UTF-8 before displaying them,
and <bcp14>MUST NOT</bcp14> assume the contents are NUL-terminated.</t>
            </li>
          </ul>
        </section>
        <section anchor="unknowntlv">
          <name>Handling of Unknown TLVs</name>
          <t>A recipient that encounters a TLV Type it does not understand proceeds
as follows:</t>
          <ul spacing="normal">
            <li>
              <t>If the M bit is 0, the recipient <bcp14>MUST</bcp14> skip the TLV, using its Length
field to locate the next TLV, and <bcp14>MUST</bcp14> continue processing the
message. This allows TLVs to be added to EAP-PPT messages by future
specifications without breaking existing implementations. A
recipient <bcp14>MUST NOT</bcp14> reject a message solely because it contains a TLV
with the M bit set to 0 that the recipient does not understand.</t>
            </li>
            <li>
              <t>If the M bit is 1 and the TLV appears in the Value field of a
Token-Challenge TLV, the recipient <bcp14>MUST</bcp14> treat that Token-Challenge as
unusable, as described in <xref target="unusablechallenge"/>. The message itself
is not malformed, and the recipient <bcp14>MAY</bcp14> use any other Token-Challenge
carried in it.</t>
            </li>
            <li>
              <t>If the M bit is 1 and the TLV appears at the top level of the Data
field, the recipient <bcp14>MUST</bcp14> treat the message as malformed.</t>
            </li>
          </ul>
          <t>A Token-Challenge TLV that is structurally invalid is a different case
from one carrying an unrecognized mandatory TLV. A Token-Challenge TLV
that does not contain exactly one Challenge TLV, or that violates any
requirement in <xref target="tlvparsing"/>, indicates a defective sender rather than
a version difference, and <bcp14>MUST</bcp14> cause the message to be treated as
malformed.</t>
          <t>A message is also treated as malformed when it violates any
requirement in <xref target="tlvparsing"/> or any composition requirement in
<xref target="messages"/>.</t>
          <t>The action a recipient takes on receiving a malformed message depends
on which message it is.</t>
          <t>An EAP-PPT server that receives a malformed EAP-Response/PPT-Challenge
or a malformed EAP-Response/PPT-Channel-Binding <bcp14>MUST</bcp14> respond with an
EAP-Request/PPT-Error carrying error code 9 (<xref target="errorcodes"/>) and <bcp14>MUST</bcp14>
subsequently terminate the conversation with an EAP-Failure. Error code
9 reports that the message could not be parsed, and is distinct from
error code 1, which reports that the token data carried in a well-formed
message could not be validated.</t>
          <t>An EAP-PPT server that receives a malformed EAP-Response/PPT-Error <bcp14>MUST
NOT</bcp14> send a further EAP-Request/PPT-Error, since doing so would solicit
another acknowledgement that could itself be malformed. The server <bcp14>MUST</bcp14>
instead terminate the conversation with an EAP-Failure, even where it
would otherwise have sent an EAP-Success as described in
<xref target="remediation"/>.</t>
          <t>An EAP-PPT peer that receives a malformed EAP-Request/PPT-Challenge
<bcp14>MUST</bcp14> respond with an EAP-Response/PPT-Challenge carrying a
No-Suitable-Token TLV. An EAP-PPT peer that receives any other
malformed EAP-PPT message <bcp14>MUST</bcp14> treat the authentication as failed.
EAP-PPT defines no message with which a peer can report a protocol
error to an EAP-PPT server, so a peer that cannot use a Token-Challenge
for any reason, including a malformed one, signals this with a
No-Suitable-Token TLV.</t>
        </section>
        <section anchor="challengeprocessing">
          <name>Processing a Token-Challenge</name>
          <t>Before selecting a token for a Token-Challenge, an EAP-PPT peer performs
the checks in this section. A Token-Challenge that fails any of them is
unusable (<xref target="unusablechallenge"/>), and the peer <bcp14>MUST NOT</bcp14> redeem a token
for it.</t>
          <t>The peer first determines the EAP server identities for the first phase.
These are the subjectAltName dNSName values of the certificate presented
during the TLS handshake. Where the first phase used session resumption and
no certificate was presented, the peer uses the identities it determined
during the full handshake for that association (<xref target="privacy"/>).</t>
          <t>No other name in the certificate is an EAP server identity. The Common Name
<bcp14>MUST NOT</bcp14> be used, nor any other attribute of the subject name
(<xref section="2" sectionFormat="of" target="RFC9525"/>). A subjectAltName of any other type is not
used, including iPAddress and an otherName of type NAIRealm <xref target="RFC7585"/>;
a name in origin_info is a hostname (<xref section="2.1.1.1" sectionFormat="of" target="RFC9577"/>), and
RFC 7585 defines the NAIRealm name form specifically to avoid conflating
DNS names with NAI realm names.</t>
          <t>If the origin_info field of the TokenChallenge structure is non-empty, the
peer <bcp14>MUST</bcp14> verify that at least one EAP server identity appears in the
origin_info list. A certificate may assert more than one EAP server
identity, and origin_info may name more than one Origin. The verification
succeeds if the intersection of the two sets is not empty. Names are
compared for case-insensitive equality, as in
<xref section="5.4" sectionFormat="of" target="RFC9577"/>, and a wildcard in an identity matches at most
one label. Comparison is over ASCII strings. An internationalized domain
name appears in its A-label form on both sides, since origin_info is an
ASCII string (<xref section="2.1.1" sectionFormat="of" target="RFC9577"/>) and a subjectAltName dNSName
is an IA5String (<xref section="4.2.1.6" sectionFormat="of" target="RFC5280"/>), so a peer performs no
conversion between A-label and U-label forms.</t>
          <t>If origin_info is non-empty and no EAP server identity is available,
because the certificate contained no subjectAltName dNSName, the peer
cannot perform that verification and <bcp14>MUST</bcp14> treat the Token-Challenge as
unusable.
A peer <bcp14>MUST NOT</bcp14> skip the verification, and <bcp14>MUST NOT</bcp14> treat the
Token-Challenge as though origin_info were empty.</t>
          <t>If origin_info is empty, no verification of the EAP-PPT server name is
possible. The Token-Challenge is not unusable for that reason alone, but
the peer obtains none of the protection described in <xref target="tunnelauth"/>.</t>
          <t>The peer <bcp14>MUST</bcp14> verify that it holds a token whose challenge_digest
(<xref section="2.2.1" sectionFormat="of" target="RFC9577"/>) is computed over the received
TokenChallenge structure. A token obtained for any other TokenChallenge
structure, including one differing only in origin_info or
redemption_context, <bcp14>MUST NOT</bcp14> be redeemed.</t>
        </section>
        <section anchor="unusablechallenge">
          <name>Unusable Token Challenges</name>
          <t>An EAP-PPT peer <bcp14>MUST NOT</bcp14> select a token for a Token-Challenge that it
cannot use. A Token-Challenge is unusable by a peer if any of the
following hold:</t>
          <ul spacing="normal">
            <li>
              <t>the Token-Challenge contains a TLV that the peer does not understand
with the M bit set to 1 (see <xref target="unknowntlv"/>);</t>
            </li>
            <li>
              <t>the peer holds no token matching the TokenChallenge structure carried
in the Challenge TLV; or</t>
            </li>
            <li>
              <t>the Token-Challenge carries an Extension-Types TLV with the M bit set
to 1, and the peer holds no token bound to the ExtensionType values
that TLV carries.</t>
            </li>
          </ul>
          <t>A Token-Challenge carrying an Extension-Types TLV with the M bit set to
0 is not unusable merely because the peer holds no token bound to the
requested ExtensionType values. In that case the peer <bcp14>MAY</bcp14> select a
token that is not so bound, and the EAP-PPT server applies its
redemption policy, reporting the outcome with error code 7 or 8
(<xref target="errorcodes"/>).</t>
          <t>A peer that finds a Token-Challenge unusable <bcp14>MUST</bcp14> ignore that
Token-Challenge and <bcp14>MAY</bcp14> use any other Token-Challenge carried in the
same EAP-Request/PPT-Challenge message. If every Token-Challenge in the
message is unusable, the peer <bcp14>MUST</bcp14> respond with an
EAP-Response/PPT-Challenge carrying a No-Suitable-Token TLV
(<xref target="pptchallengeresp"/>).</t>
          <t>Ignoring an unusable Token-Challenge avoids spending a token that the
EAP-PPT server would reject. Tokens are single-use, and a peer may not
be able to obtain replacements without first gaining network access
(see <xref target="separatingtime"/>), so a peer that can determine in advance that a
token would be rejected <bcp14>SHOULD NOT</bcp14> send one.</t>
        </section>
      </section>
      <section anchor="messages">
        <name>Messages</name>
        <t>This section specifies the messages used in EAP-PPT and the TLV
objects that each message carries.</t>
        <section anchor="eap-requestppt-challenge">
          <name>EAP-Request/PPT-Challenge</name>
          <t>The server sends this message to the peer after successfully
learning the identity of the peer. The purpose of this message
is to present one or more token challenges to the peer and receive
a Privacy Pass token for one of the challenges from the peer.
This message is sent with subtype 1 (<xref target="subtype"/>).</t>
          <t>The Data field of this message contains one or more Token-Challenge
TLVs (Type 1) with the M bit set to 1, each describing one token
challenge as specified in <xref target="tokenchallengetlv"/>. The order of the
Token-Challenge TLVs is not significant. The structure of the message
is summarized in
<xref target="pptchallenge"/>; a complete octet-level example is given in
<xref target="testvectors"/>.</t>
          <figure anchor="pptchallenge">
            <name>EAP-Request/PPT-Challenge contents</name>
            <artwork><![CDATA[
Token-Challenge TLV      (M=1, Type=1)     [1..n]
  |
  +-- Challenge TLV       (M=1, Type=2)
  +-- Token-Key TLV       (M=0, Type=3)    [optional]
  +-- Extension-Types TLV (M=*, Type=4)    [optional]
]]></artwork>
          </figure>
          <t>The M bit of the Extension-Types TLV, shown as <tt>M=*</tt> above, is set by
the EAP-PPT server according to its policy; see <xref target="tokenchallengetlv"/>.</t>
        </section>
        <section anchor="pptchallengeresp">
          <name>EAP-Response/PPT-Challenge</name>
          <t>The peer sends this message to the server in response to a valid
EAP-Request/PPT-Challenge Message. This message is sent with subtype 1
(<xref target="subtype"/>).</t>
          <t>The Data field of this message contains either:</t>
          <ul spacing="normal">
            <li>
              <t>exactly one Token TLV (Type 5) with the M bit set to 1, carrying a
Privacy Pass token for one of the received challenges, and at most
one Extensions TLV (Type 6) with the M bit set to 0; or</t>
            </li>
            <li>
              <t>exactly one No-Suitable-Token TLV (Type 7) with the M bit set to 1,
indicating that the peer could not use any of the Token-Challenges
carried in the request (<xref target="unusablechallenge"/>).</t>
            </li>
          </ul>
          <t>Sending a Token TLV indicates that the peer was able to look up a
Privacy Pass token for one of the received challenges.</t>
          <t>The Token TLV and the No-Suitable-Token TLV are mutually exclusive. A
message that carries both, or neither, <bcp14>MUST</bcp14> be treated as malformed
(<xref target="unknowntlv"/>). An Extensions TLV <bcp14>MUST NOT</bcp14> be sent in a message that
carries a No-Suitable-Token TLV.</t>
          <t>The peer <bcp14>MUST</bcp14> send a No-Suitable-Token TLV when every Token-Challenge
in the request is unusable (<xref target="unusablechallenge"/>). On receiving a
No-Suitable-Token TLV, the server <bcp14>MUST</bcp14> send an EAP-Failure message to
the peer.</t>
          <figure anchor="pptchallengeresponse">
            <name>EAP-Response/PPT-Challenge contents</name>
            <artwork><![CDATA[
Token TLV                (M=1, Type=5)
Extensions TLV           (M=0, Type=6)     [optional]

  -- or --

No-Suitable-Token TLV    (M=1, Type=7)
]]></artwork>
          </figure>
        </section>
        <section anchor="eap-requestppt-error">
          <name>EAP-Request/PPT-Error</name>
          <t>The server sends this message to the peer when token redemption
fails, or when it needs to report the result of metadata validation
to the peer (see <xref target="remediation"/>). The purpose of this message is to
report the condition to the peer along with relevant information
that may be useful to the peer. This message is sent with
subtype 2 (<xref target="subtype"/>).</t>
          <t>The Data field of this message contains:</t>
          <ul spacing="normal">
            <li>
              <t>exactly one of either an Error-Code TLV (Type 8) or a
Vendor-Specific-Error TLV (Type 11), in both cases with the M bit
set to 1;</t>
            </li>
            <li>
              <t>at most one Error-Description TLV (Type 9) with the M bit set to 0;
and</t>
            </li>
            <li>
              <t>at most one Session-Timeout TLV (Type 10) with the M bit set to 0.</t>
            </li>
          </ul>
          <t>The Error-Code TLV carries a globally scoped error code from the
"EAP-PPT Error Codes" registry (see <xref target="iana"/>). The
Vendor-Specific-Error TLV carries an error code scoped to the private
number space of a single vendor (see <xref target="ianaenterprise"/>). A message
<bcp14>MUST</bcp14> carry exactly one of the two; a message that carries both, or
neither, <bcp14>MUST</bcp14> be treated as malformed (<xref target="unknowntlv"/>).</t>
          <t>The Error-Description TLV carries human-readable UTF-8 text providing
additional information, used to assist the user of the client device
in understanding the error.</t>
          <t>The Session-Timeout TLV carries the time in seconds after which the
session is terminated by the authenticator.</t>
          <figure anchor="ppterror">
            <name>EAP-Request/PPT-Error contents</name>
            <artwork><![CDATA[
Error-Code TLV            (M=1, Type=8)
  -- or --
Vendor-Specific-Error TLV (M=1, Type=11)

Error-Description TLV     (M=0, Type=9)     [optional]
Session-Timeout TLV       (M=0, Type=10)    [optional]
]]></artwork>
          </figure>
          <t>A complete octet-level example is given in <xref target="testvectors"/>.</t>
          <section anchor="errorcodes">
            <name>Error Codes</name>
            <table anchor="errorcode">
              <name>Error Codes</name>
              <thead>
                <tr>
                  <th align="left">Code</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">0</td>
                  <td align="left">Reserved.</td>
                </tr>
                <tr>
                  <td align="left">1</td>
                  <td align="left">This code indicates a failure in validating the token data carried in a well-formed EAP-PPT message. This may occur due to the token structure being incorrectly formatted or encoded. A message that the EAP-PPT server could not parse at all is reported with code 9 instead.</td>
                </tr>
                <tr>
                  <td align="left">2</td>
                  <td align="left">This code indicates redemption failure. This is a fatal error, and the only way for the peer to recover from this failure is to retry the EAP-PPT authentication with a new token.</td>
                </tr>
                <tr>
                  <td align="left">3</td>
                  <td align="left">This code means the EAP-PPT server is unable to perform the token redemption at the moment. This can be used by the client to retry spending the token later.</td>
                </tr>
                <tr>
                  <td align="left">4</td>
                  <td align="left">This code indicates the server detected a double spend of the token. This is a fatal error, and the only way for the peer to recover from this failure is to retry the EAP-PPT authentication with a new token.</td>
                </tr>
                <tr>
                  <td align="left">5</td>
                  <td align="left">This code indicates undefined failure. The client <bcp14>MAY</bcp14> choose to spend the same token later.</td>
                </tr>
                <tr>
                  <td align="left">6</td>
                  <td align="left">This code indicates token redemption success with an unexpected extension parameter value. This is a fatal error, and the only way for the peer to recover from this failure is to retry the EAP-PPT authentication with a new token, binding to expected extension parameter value.</td>
                </tr>
                <tr>
                  <td align="left">7</td>
                  <td align="left">This code indicates token redemption success with an unexpected extension parameter value. However, the server side policy makes this a non-fatal error, and therefore, the peer is authorized unconditionally.</td>
                </tr>
                <tr>
                  <td align="left">8</td>
                  <td align="left">This code indicates token Redemption success with an unexpected extension parameter value. However, the server side policy makes this a non-fatal error, and therefore the peer is authorized conditionally. The condition here is an authorization for a limited time. The limited time authorization is indicated by sending a Session-Timeout TLV along with the error code.</td>
                </tr>
                <tr>
                  <td align="left">9</td>
                  <td align="left">This code indicates that the EAP-PPT server could not parse the received EAP-PPT message, for example because it violates the TLV encoding rules in <xref target="tlvformat"/>. This is a fatal error for the conversation. Whether the peer may use the same token again depends on whether that token has been spent; see <xref target="tokenreuse"/>.</td>
                </tr>
                <tr>
                  <td align="left">10-191</td>
                  <td align="left">Unassigned. Allocated on a Specification Required basis (see <xref target="iana"/>).</td>
                </tr>
                <tr>
                  <td align="left">192-255</td>
                  <td align="left">Reserved.</td>
                </tr>
              </tbody>
            </table>
            <t>The codes in <xref target="errorcode"/> are globally scoped values from the
"EAP-PPT Error Codes" registry (see <xref target="iana"/>) and are carried in the
Error-Code TLV. A vendor that wishes to define its own error codes
<bcp14>MUST NOT</bcp14> pick an arbitrary value from this space; instead, it
indicates a vendor-specific error by sending a Vendor-Specific-Error
TLV (<xref target="vendorerrtlv"/>) in place of the Error-Code TLV, carrying its
IANA-assigned Private Enterprise Number (PEN) <xref target="RFC9371"/> and a code
interpreted within that enterprise's private number space (see
<xref target="ianaenterprise"/>).</t>
          </section>
          <section anchor="tokenreuse">
            <name>Token Reuse and Double Spending</name>
            <t>An EAP-PPT server sends an EAP-Request/PPT-Channel-Binding message only
after it has successfully redeemed the token carried in the preceding
EAP-Response/PPT-Challenge message (<xref target="channelbinding"/>). Receipt of that
message therefore tells the EAP-PPT peer that its token was accepted,
and the token is spent from that point in the conversation regardless of
what happens afterwards.</t>
            <t>An EAP-PPT peer <bcp14>MUST NOT</bcp14> use a token in a subsequent authentication once
it has received an EAP-Request/PPT-Channel-Binding message in the
conversation in which that token was sent. This holds whatever error
code the peer subsequently receives. An error code that permits a token
to be used again is to be understood as applying only where the token
has not been spent.</t>
          </section>
        </section>
        <section anchor="eap-responseppt-error">
          <name>EAP-Response/PPT-Error</name>
          <t>The peer sends this message as an acknowledgement to the
server in response to a valid EAP-Request/PPT-Error Message.
This message is sent with subtype 2 (<xref target="subtype"/>) and it does
not carry data.</t>
        </section>
        <section anchor="eap-requestppt-channel-binding">
          <name>EAP-Request/PPT-Channel-Binding</name>
          <t>EAP-PPT server sends this message to the peer after a successful
redemption of the token received in EAP-Response/PPT-Challenge
message. The purpose of this message is to request channel
binding information to the peer. This message is sent with
subtype 3 (<xref target="subtype"/>) and it does not carry data.</t>
        </section>
        <section anchor="eap-responseppt-channel-binding">
          <name>EAP-Response/PPT-Channel-Binding</name>
          <t>The peer sends this message in response to an EAP-Request/
PPT-Channel-Binding Message. This message is sent with subtype 3
(<xref target="subtype"/>). The Data field contains exactly one
Channel-Binding-Data TLV (Type 12) with the M bit set to 1, whose
Value is the channel-binding data defined in
<xref section="5.3" sectionFormat="of" target="RFC6677"/>.
An EAP-PPT server <bcp14>MAY</bcp14> send an EAP-Failure message if the channel-binding
data is well formed but is not found valid or satisfactory, depending on
the server side policy. A message that the EAP-PPT server cannot parse is
handled as described in <xref target="unknowntlv"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="errorhandling">
      <name>Error Handling</name>
      <section anchor="client-failure-scenarios">
        <name>Client Failure Scenarios</name>
        <section anchor="eap-ppt-peer-found-no-valid-token-for-token-challenge">
          <name>EAP-PPT peer found no valid token for token challenge</name>
          <t>If on receipt of an EAP-Request/PPT-Challenge, the EAP-PPT peer holds no
valid token matching any of the received Token-Challenges, then every
Token-Challenge in the message is unusable (<xref target="unusablechallenge"/>) and the
EAP-PPT peer <bcp14>MUST</bcp14> respond with a No-Suitable-Token TLV in the
EAP-Response/PPT-Challenge message. In this case, the EAP-PPT server <bcp14>MUST</bcp14>
terminate the conversation by sending an EAP Failure packet.</t>
        </section>
        <section anchor="eap-ppt-peer-found-no-token-with-valid-extension-types-for-token-challenge">
          <name>EAP-PPT peer found no token with valid extension-types for token challenge</name>
          <t>If on receipt of an EAP-Request/PPT-Challenge, the EAP-PPT peer cannot
present a valid token bound to the ExtensionType values requested by the
EAP-PPT server in a Token-Challenge, that Token-Challenge is unusable
(<xref target="unusablechallenge"/>). The same applies if the peer does not support
binding to extensions at all and the Extension-Types TLV was sent with the
M bit set to 1. The peer <bcp14>MAY</bcp14> use any other Token-Challenge carried in the
message. If every Token-Challenge in the message is unusable, the EAP-PPT
peer <bcp14>MUST</bcp14> respond with a No-Suitable-Token TLV in the
EAP-Response/PPT-Challenge message, and the EAP-PPT server <bcp14>MUST</bcp14> terminate
the conversation by sending an EAP Failure packet.</t>
        </section>
      </section>
      <section anchor="server-failure-scenarios">
        <name>Server Failure Scenarios</name>
        <section anchor="eap-ppt-server-found-no-valid-token-challenge-for-user-nai">
          <name>EAP-PPT server found no valid token challenge for user NAI</name>
          <t>If on receipt of an EAP Identity Response the EAP-PPT server does not have 
a token challenge for the user's NAI, the EAP-PPT server <bcp14>MUST</bcp14> terminate the
conversation by responding with an EAP Failure packet.</t>
        </section>
        <section anchor="eap-ppt-server-received-a-malformed-message">
          <name>EAP-PPT server received a malformed message</name>
          <t>If the EAP-PPT server cannot parse a received EAP-Response/PPT-Challenge
or EAP-Response/PPT-Channel-Binding, for example because the message
violates the TLV encoding rules in <xref target="tlvformat"/>, the EAP-PPT server
<bcp14>MUST</bcp14> respond with an EAP-Request/PPT-Error with error code 9
(see <xref target="errorcodes"/>). The EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the
error with an EAP-Response/PPT-Error message, after which the EAP-PPT
server <bcp14>MUST</bcp14> respond with EAP Failure as shown in <xref target="authfail"/>.</t>
          <t>If the malformed message was an EAP-Response/PPT-Challenge, no token was
redeemed and the EAP-PPT peer <bcp14>MAY</bcp14> use the same token in a subsequent
authentication. If it was an EAP-Response/PPT-Channel-Binding, the token
had already been spent before the channel binding exchange began, and
the EAP-PPT peer <bcp14>MUST NOT</bcp14> use it again (<xref target="tokenreuse"/>).</t>
          <t>If the EAP-PPT server cannot parse a received EAP-Response/PPT-Error, it
<bcp14>MUST NOT</bcp14> send a further EAP-Request/PPT-Error, and <bcp14>MUST</bcp14> instead
terminate the conversation with an EAP Failure, as described in
<xref target="unknowntlv"/>.</t>
        </section>
        <section anchor="eap-ppt-server-is-unable-to-validate-token-data">
          <name>EAP-PPT server is unable to validate token data</name>
          <t>If on receipt of an EAP-Response/PPT-Challenge, the EAP-PPT server is
unable to validate the token data presented by the EAP-PPT peer in an
otherwise well-formed message, the EAP-PPT server <bcp14>MUST</bcp14> respond with
an EAP-Request/PPT-Error with error code 1 (see <xref target="errorcodes"/>). The 
EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the error with an 
EAP-Response/PPT-Error message, after which the EAP-PPT server <bcp14>MUST</bcp14> respond
with EAP Failure as shown in <xref target="authfail"/>.</t>
        </section>
        <section anchor="eap-ppt-server-token-redemption-failure">
          <name>EAP-PPT server token redemption failure</name>
          <t>If on receipt of an EAP-Response/PPT-Challenge, the EAP-PPT server
token redemption fails, the EAP-PPT server <bcp14>MUST</bcp14> respond with an
EAP-Request/PPT-Error with error code 2 (see <xref target="errorcodes"/>).
The EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the error with an
EAP-Response/PPT-Error, after which the EAP-PPT server <bcp14>MUST</bcp14> respond with 
EAP Failure as shown in <xref target="authfail"/>. The EAP-PPT peer <bcp14>MUST NOT</bcp14> use this
token in subsequent authentication.</t>
        </section>
        <section anchor="eap-ppt-server-temporary-failure">
          <name>EAP-PPT server temporary failure</name>
          <t>If the EAP-PPT server is (temporarily) unable to perform token redemption,
and it receives an EAP-Response/PPT-Challenge, the EAP-PPT server <bcp14>MUST</bcp14> 
respond with an EAP-Request/PPT-Error with error code 3 (see <xref target="errorcodes"/>).
The EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the error with an 
EAP-Response/PPT-Error message, after which the EAP-PPT server <bcp14>MUST</bcp14> respond
with EAP Failure as shown in <xref target="authfail"/>. The EAP-PPT peer <bcp14>MAY</bcp14> use this token
in subsequent authentication.</t>
        </section>
        <section anchor="eap-ppt-server-detected-double-spend">
          <name>EAP-PPT server detected double spend</name>
          <t>The EAP-PPT server <bcp14>MAY</bcp14> implement double spend detection, to ensure a token
is only used once. If the EAP-PPT server implementing double spend detection
detects double spend of a token sent in an EAP-Response/PPT-Challenge, 
the EAP-PPT server <bcp14>MUST</bcp14> respond with an EAP-Request/PPT-Error with error code 4
(see <xref target="errorcodes"/>). The EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the error 
with an EAP-Response/PPT-Error message, after which the EAP-PPT server <bcp14>MUST</bcp14>
respond with EAP Failure as shown in <xref target="authfail"/>. The EAP-PPT peer <bcp14>MUST NOT</bcp14>
use this token in subsequent authentication.</t>
        </section>
        <section anchor="eap-ppt-server-undefined-failure">
          <name>EAP-PPT server undefined failure</name>
          <t>If the EAP-PPT server is experiencing an undefined failure, when receiving
an EAP-Response/PPT-Challenge, the EAP-PPT server <bcp14>MUST</bcp14> respond with an 
EAP-Request/PPT-Error with error code 5 (see <xref target="errorcodes"/>). The EAP-PPT peer
<bcp14>MUST</bcp14> subsequently acknowledge the error with an EAP-Response/PPT-Error message,
after which the EAP-PPT server <bcp14>MUST</bcp14> respond with EAP Failure as shown 
in <xref target="authfail"/>. The EAP-PPT peer <bcp14>MAY</bcp14> use this token in subsequent 
authentication.</t>
        </section>
        <section anchor="eap-ppt-server-token-redemption-success-with-unexpected-extension-value">
          <name>EAP-PPT server token redemption success with unexpected extension value</name>
          <t>If on receipt of an EAP-Response/PPT-Challenge, the EAP-PPT server finds an
unexpected extension parameter value, the EAP-PPT server <bcp14>MAY</bcp14> deem this to be a
fatal error. In this case the EAP-PPT server <bcp14>MAY</bcp14> respond with an 
EAP-Request/PPT-Error with error code 6 (see <xref target="errorcodes"/>). The EAP-PPT peer 
<bcp14>MUST</bcp14> subsequently acknowledge the error with an EAP-Response/PPT-Error message,
 after which the EAP-PPT server <bcp14>MUST</bcp14> respond with EAP Failure as shown in 
<xref target="authfail"/>. The EAP-PPT peer <bcp14>MUST NOT</bcp14> use this token in subsequent
authentication.</t>
        </section>
      </section>
      <section anchor="conditional-acceptance-scenarios">
        <name>Conditional Acceptance Scenarios</name>
        <section anchor="eap-ppt-server-redemption-unexpected-extension-value-unconditional-access">
          <name>EAP-PPT server redemption, unexpected extension value, unconditional access</name>
          <t>If on receipt of an EAP-Response/PPT-Challenge, the EAP-PPT server token
redemption succeeds, but the EAP-PPT server finds an unexpected extension 
parameter value, the EAP-PPT server <bcp14>MAY</bcp14> deem this to be a recoverable error 
and allow the session to proceed unconditionally. In this case, the EAP-PPT
server <bcp14>MAY</bcp14> respond with an EAP-Request/PPT-Error with error code 7 
(see <xref target="errorcodes"/>). The EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the
error with an EAP-Response/PPT-Error message, after which the EAP-PPT server 
<bcp14>MUST</bcp14> respond with EAP Success as shown in <xref target="authsuccess"/>.</t>
        </section>
        <section anchor="eap-ppt-server-redemption-unexpected-extension-value-conditional-access">
          <name>EAP-PPT server redemption, unexpected extension value, conditional access</name>
          <t>If on receipt of an EAP-Response/PPT-Challenge, the EAP-PPT server token
redemption succeeds, but the EAP-PPT server finds an unexpected extension
parameter value, the EAP-PPT server <bcp14>MAY</bcp14> deem this to be a recoverable error and
allow the session to proceed conditionally. In this case the EAP-PPT server 
<bcp14>MAY</bcp14> respond with an EAP-Request/PPT-Error with error code 8 
(see <xref target="errorcodes"/>). The EAP-PPT server <bcp14>MUST</bcp14> send a Session-Timeout TLV in 
the response message. The EAP-PPT peer <bcp14>MUST</bcp14> subsequently acknowledge the
error with an EAP-Response/PPT-Error message, after which the EAP-PPT server 
<bcp14>MUST</bcp14> respond with EAP Success as shown in <xref target="authsuccess"/>. The EAP server <bcp14>MUST</bcp14>
include a Session-Timeout attribute in the RADIUS Access-Accept packet to the 
authenticator, so it can terminate the session when the session timeout 
condition is no longer met.</t>
          <t>An example of such condition is when the peer needs to remediate its device
to be compliant with the network access policy, or if the peer needs to get a new
token issued from the Issuer with expected extension parameter value. The length
of the session timer should in principle be as short as possible, but long enough
for the device to reach compliance. For example for token issuance, if there is 
no user interaction required for issuance, a session timer of 1 minute should be 
sufficient. For remediation where user interaction is required, the session timeout 
could be more like 5 to 10 minutes.</t>
        </section>
      </section>
    </section>
    <section anchor="deployment">
      <name>Deployment Considerations</name>
      <t>EAP-PPT can be leveraged in a number of use cases and deployment models.
This section covers generic deployment recommendations to ensure end-to-end
privacy and unlinkability of tokens. This section also describes some specific
expected deployment models in which EAP-PPT can be leveraged.</t>
      <t>Although this section covers deployment of Origin, Issuer and Attester as it
relates to the EAP-PPT server, specifics on how to deploy Issuer and Attester
are not described here but can be found in <xref section="4" sectionFormat="of" target="RFC9576"/>.</t>
      <section anchor="recommendations-for-preserving-privacy">
        <name>Recommendations for preserving privacy</name>
        <section anchor="deploycollocation">
          <name>Collocating other functions with the EAP-PPT Server</name>
          <t>As discussed in <xref section="4" sectionFormat="of" target="RFC9576"/> and in <xref target="privacy"/>, it is
recommended to use a deployment model that guarantees EAP peer-server,
Issuer-EAP peer, and Attester-EAP server unlinkability. This is especially
pertinent in public use cases. In private use cases a single entity could 
deploy all functions.</t>
          <t>It is recommended to collocate the phase 1 EAP server with the EAP-PPT server,
as EAP server separation can introduce vulnerabilities as described in
<xref target="eapserver"/>.</t>
        </section>
        <section anchor="deployclientid">
          <name>Protecting client identity</name>
          <t>Please refer to the <xref target="privacy"/> section for deployment considerations that are
required to protect the client identity.</t>
        </section>
        <section anchor="separatingtime">
          <name>Separating Issuance and Verification over time</name>
          <t><xref section="3.1" sectionFormat="of" target="RFC9576"/> describes the interaction between Privacy Pass
Issuance and Verification protocols. As described, in many cases, when a Client
interacts with an Origin, a Client will obtain a token at the time of that 
interaction. In this case the time between Issuance and Verification is short 
enough to allow for correlation.</t>
          <t>In order to further reduce the probability of collusion between actors
participating in Issuance and Verification and achieve Issuer-Client and 
Origin-Client unlinkability, Issuance and Verification can be separated
over time. A client can request Issuance of one or more tokens and cache
them in secure storage. This allows separation in time between Issuance and 
Verification of the token, so time-based correlation is not possible. When 
leveraging EAP-PPT to access network resources, it is possible that the client
does not have a network interface available to perform Issuance over, so 
also for this reason caching tokens is preferred.</t>
        </section>
      </section>
      <section anchor="publiccase">
        <name>Recommendations for usage in public use cases</name>
        <t>In public use cases, a network service provider may be working with one or more
identity providers that are authenticating end-user devices using privacy pass
tokens. As described in <xref target="deploycollocation"/> it is recommended for the EAP-PPT
server to be implemented by an entity other than the Attester or Issuer, to
avoid the perception of collusion. In a public deployment scenario, the EAP-PPT
server is likely to be collocated with the network service provider, or could 
be a service that the network service provider consumes from a 3rd party 
service provider, other than the Attester or Issuer.</t>
        <t>In order to verify a token, an EAP-PPT server requires key material for
each Issuer named in a TokenChallenge structure that it sends. In a
public use case, this information has to be shared between the Issuer and
the EAP-PPT server. The mechanism by which the Issuer shares this
information with the EAP-PPT server is out of scope of this document.</t>
        <t>The nature of that key material depends on the token type. A publicly
verifiable token type, such as Blind RSA (token type 0x0002), requires
only the Issuer public key to be shared with the EAP-PPT server, which
allows the Issuer and the EAP-PPT server to remain in separate trust
domains as recommended in <xref target="deploycollocation"/>. A privately verifiable
token type, such as VOPRF (token type 0x0001), requires the EAP-PPT
server to hold key material that the Issuer keeps secret, placing the
two in a single trust domain. Publicly verifiable token types are
therefore <bcp14>RECOMMENDED</bcp14> for public use cases.</t>
      </section>
      <section anchor="recommendations-for-usage-in-private-use-cases">
        <name>Recommendations for usage in private use cases</name>
        <t>It is recommended that the guidelines stipulated in <xref target="publiccase"/> are also
followed for private deployments, however in use cases where the network service 
provider is also the Attester, collocation of entities may be unavoidable.
When collocating entities, separating Issuance and Verification over time as
described in <xref target="separatingtime"/> provides additional privacy protection, as it
becomes harder for entities to collude.</t>
        <t>Privately verifiable token types, such as VOPRF (token type 0x0001), are
suited to these deployments. Verifying such a token requires the EAP-PPT
server to hold key material that the Issuer keeps secret, so the Issuer,
the Attester and the EAP-PPT server are necessarily within a single
trust domain. Where that is already the case, as it typically is in an
enterprise deployment, the token type imposes no separation that the
deployment does not already have.</t>
      </section>
      <section anchor="recommendations-for-usage-in-federated-use-cases-openroaming">
        <name>Recommendations for usage in federated use cases (OpenRoaming)</name>
        <t>OpenRoaming, as described in <xref target="I-D.draft-tomas-openroaming"/>, is an open
federation of entities of different types, mainly targeted at providing
public Wi-Fi access. OpenRoaming defines distinct roles in its federation
architecture: Network Access Providers provide access to network resources,
and Identity Providers authenticate users for those network access providers.
Members of the federation are identified by private PKI, managed by the
Wireless Broadband Alliance (WBA). The members use these certificates to
mutually authenticate each other and secure RADIUS over TLS (RadSec) messages
used to transport EAP conversations between Network Access Providers and Identity
Providers. A Network Access Provider discovers the authoritative Identity
Provider for a client by resolving the realm portion of the outer identity
provided by the client as described in <xref target="RFC7585"/>.</t>
        <t>OpenRoaming comprises a privacy policy, and aims to protect end-user privacy,
however as it uses RADIUS attributes and EAP, inherently, information 
about end-users could be shared between Identity Provider and Network Access
Provider. Examples of RADIUS attributes that could expose user privacy are
Calling-Station-Id (MAC address of the device), Chargeable-User-ID, NAS-ID (location).
<xref section="8" sectionFormat="of" target="I-D.draft-tomas-openroaming"/> describes the RADIUS
attributes OpenRoaming supports.  EAP-PPT can add additional privacy protection
to a federated use case such as OpenRoaming by separating the Issuance from 
Verification, so the entity performing the Authentication is not able to
willingly or unwillingly share private information.</t>
        <t>Where an OpenRoaming IDP both issues and verifies a credential, with EAP-PPT
these roles are separated. In order to implement EAP-PPT in OpenRoaming,
the Attester/Issuer would have to have an agreement with the EAP-PPT server
verifying or redeeming the token. Together they are the OpenRoaming IDP.
Alternatively, new roles could be defined in the OpenRoaming federation to 
allow Attesters/Issuers to interoperate with EAP-PPT servers within the 
OpenRoaming federation.</t>
        <t>The EAP-PPT server could be implemented by the Network Access Provider directly,
or by an entity in the federation.</t>
        <t>In OpenRoaming the choice of token type follows from how the roles are
divided. Where the Attester, Issuer and EAP-PPT server together
constitute a single OpenRoaming IDP, they are within one trust domain and
either kind of token type may be used. Where new federation roles allow
an Attester or Issuer to interoperate with an EAP-PPT server operated by
a different federation member, those entities are in separate trust
domains, and the recommendation in <xref target="publiccase"/> to use a publicly
verifiable token type applies.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="privatetoken-authentication-scheme">
        <name>PrivateToken authentication Scheme</name>
        <t>Security considerations discussed in <xref section="5" sectionFormat="of" target="RFC9577"/>
are applicable to EAP-PPT.</t>
      </section>
      <section anchor="parsingsecurity">
        <name>Message Parsing</name>
        <t>An EAP-PPT server parses the TLV objects carried in an
EAP-Response/PPT-Challenge message before the token those objects
carry has been redeemed, and therefore before the peer has been
authorized. EAP-PPT peers are anonymous by design, and the tunnel
established by the tunnel-based EAP method is server authenticated
only. The TLV parser in an EAP-PPT server is consequently reachable by
any party able to reach the network and complete tunnel
establishment, and it constitutes pre-authorization attack surface.
Implementations <bcp14>MUST</bcp14> follow the parsing requirements in
<xref target="tlvparsing"/>, and <bcp14>SHOULD</bcp14> additionally impose an
implementation-defined upper bound on the number of TLV objects
accepted in a single message.</t>
        <t>An EAP-PPT peer parses TLV objects received from an EAP-PPT server
that it has authenticated during the TLS handshake of the first phase,
so a peer's exposure is lower than a server's. A peer that does not
strictly validate the EAP server certificate is, however, exposed to
the same class of attack.</t>
        <t>The Error-Description TLV carries text that originates from the
EAP-PPT server and that may be displayed to a user. An implementation
that displays this text <bcp14>MUST</bcp14> validate that it is well-formed UTF-8,
and <bcp14>SHOULD</bcp14> take steps to prevent it from being used to spoof user
interface elements or to mislead the user into taking an unsafe
action.</t>
      </section>
      <section anchor="integrity-protection">
        <name>Integrity Protection</name>
        <t>Since EAP-PPT method is used for anonymous authentication of EAP
peer, it is <bcp14>REQUIRED</bcp14> to execute it within a server authenticated
TLS tunnel, provided by a tunnel-based EAP method. When EAP-PPT
is used to authenticate IKEv2 initiator to the responder, it is
<bcp14>REQUIRED</bcp14> to use it in conjunction with a public-key-signature-
based authentication of the responder to the initiator, before
initiating the EAP-PPT authentication.</t>
      </section>
      <section anchor="tunnelauth">
        <name>Tunnel Authentication and Server Certificate Validation</name>
        <t>EAP-PPT provides no keying material and therefore contributes nothing to
the cryptographic binding of the inner method to the tunnel
(<xref target="keyderivation"/>). An EAP-PPT peer consequently depends on
authentication of the tunnel itself for the assurance that it is
redeeming a token to the intended EAP-PPT server.</t>
        <t>An attacker that can induce an EAP-PPT peer to establish a tunnel-based
EAP method with it can relay the EAP-PPT exchange to a genuine EAP-PPT
server inside a tunnel of its own, obtain the peer's token, and redeem
it for its own network access. Cryptographic binding is the mechanism
tunnel-based EAP methods ordinarily use to detect this, and it is not
available to EAP-PPT. Mounting the attack requires the peer to accept
the attacker's server certificate, so validation of that certificate is
the primary defence.</t>
        <t>An EAP-PPT peer <bcp14>SHOULD</bcp14> therefore validate the EAP server certificate
strictly. In particular, a peer <bcp14>SHOULD</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>validate the certificate against trust anchors configured for the
network being joined, rather than against the trust anchors used for
general purposes;</t>
          </li>
          <li>
            <t>verify that the server identity in the certificate matches the
identity configured for that network; and</t>
          </li>
          <li>
            <t>reject a certificate that fails either check, rather than deferring
the decision to the user or accepting the certificate on first use.</t>
          </li>
        </ul>
        <t>A peer that accepts an EAP server certificate on first use, or that
permits a user to override a validation failure, weakens its principal
defence against this attack, and <bcp14>SHOULD NOT</bcp14> redeem a token over the
resulting tunnel.</t>
        <t>Where the EAP-PPT server populates origin_info, the verification in
<xref target="challengeprocessing"/> also constrains this attack. An attacker that
forwards the server's challenge unchanged presents a certificate that does
not match origin_info, and the peer declines to redeem. An attacker that
substitutes a challenge naming itself obtains a token bound to that
challenge, which the EAP-PPT server then rejects, since the token's
challenge_digest does not cover the challenge the server issued. To
succeed, the attacker needs a certificate that the peer accepts for a name
the EAP-PPT server itself asserts, which is impersonation of that name
rather than a configuration weakness. Because the peer compares
origin_info against the certificate it was presented, it does not need
prior knowledge of the EAP-PPT server's name.</t>
        <t>An EAP-PPT peer that receives a non-empty origin_info field but has no
EAP server identity available cannot tell whether the EAP-PPT
server is misconfigured or whether an attacker is presenting a certificate
that asserts no name. Both are treated identically, and an implementation
is expected to make the condition visible to an operator.</t>
        <t>The following measures limit the consequences of a successful relay
without preventing one. Deployments concerned about this attack <bcp14>SHOULD</bcp14>
apply them in addition to strict certificate validation.</t>
        <ul spacing="normal">
          <li>
            <t>Collocating the EAP server with the EAP-PPT server, as recommended in
<xref target="eapserver"/>, removes the separation that the attack exploits within
a provider's own infrastructure.</t>
          </li>
          <li>
            <t>Channel binding (<xref target="channelbinding"/>) allows an EAP-PPT server to
detect inconsistency between the network a peer believes it has
joined and the authenticator the server is communicating with.</t>
          </li>
          <li>
            <t>Issuing tokens with a limited lifetime, for example by means of the
expiration extension
(<xref target="I-D.draft-hendrickson-privacypass-expiration-extension"/>), bounds
the period for which a captured token is useful.</t>
          </li>
          <li>
            <t>Double spend detection makes a relay visible after the fact, since the
legitimate peer's own redemption of the token will fail. An EAP-PPT
server <bcp14>SHOULD</bcp14> implement double spend detection where this attack is a
concern.</t>
          </li>
        </ul>
        <t>Because a Privacy Pass token is a bearer credential, a peer that redeems
one over a tunnel it has not properly authenticated has disclosed it.
The token is single use, carries no identity, and is not subject to
offline dictionary attack, so the loss is bounded by that token and the
network access it authorizes. It cannot, however, be undone by the
EAP-PPT exchange itself.</t>
      </section>
      <section anchor="eapserver">
        <name>EAP Server implementation</name>
        <t>Allowing the EAP Phase 1 conversation to be terminated at a different server 
than the EAP-Phase 2 conversation can introduce vulnerabilities if there is 
not a proper trust relationship and protection for the protocol between the 
two servers.</t>
        <t>As EAP-PPT is an identity-free credential, it mitigates loss of identity 
protection scenarios better than EAP-methods carrying identity.
Identity protection is ensured, even if the credential is exposed to an 
attacker. Offline dictionary attacks are also mitigated with EAP-PPT as the 
credential is a single-use cryptographically signed token.</t>
        <t>Separation of Phase 1 and Phase 2 EAP server with EAP-PPT as the inner
EAP method can still introduce vulnerabilities to on-path active attacks
between these EAP Servers if there is not a proper trust relationship between
the servers, or if the protocol between the servers is not properly secured.
An attacker could intercept a token in the PPT-Challenge response, or alter
an EAP-Success or EAP-Failure message. It is important to note however that
due to the single-use identity-free nature of the credential, the longevity of
the attack is limited.</t>
        <t>Therefore, separation of the EAP server (Phase 1) from the EAP-PPT server
(Phase 2) conversation is <bcp14>NOT RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="channel-binding">
        <name>Channel Binding</name>
        <t><xref target="RFC6677"/> defines channel bindings for EAP which solve the "lying NAS" and
the "lying provider" problems, using a process in which the EAP peer gives
information about the characteristics of the service provided by
the authenticator to the Authentication, Authorization, and Accounting (AAA) 
server protected within the EAP authentication method. This allows the server
to verify the authenticator is providing information to the peer that is 
consistent with the information received from this authenticator as well as 
the information stored about this authenticator.</t>
        <t>When collocating the EAP and EAP-PPT servers, as recommended in <xref target="eapserver"/>,
channel binding can be implemented by leveraging a Phase 1 EAP method 
that supports Channel binding as defined in <xref target="RFC6677"/>.
It is therefore <bcp14>RECOMMENDED</bcp14> to leverage a Phase 1 EAP method that supports
Channel binding with EAP-PPT, for example TEAP <xref target="RFC9930"/>, as described in 
<xref section="3.11.4" sectionFormat="of" target="RFC9930"/>.</t>
      </section>
      <section anchor="token-redemption-server-implementation">
        <name>Token Redemption Server implementation</name>
        <t>EAP-PPT server <bcp14>MAY</bcp14> be implemented to perform token Redemption flow
with an external redemption service, configured with required keys
for redemption. In such scenario, a malicious EAP peers may generate
a lot of protocol requests to mount a denial-of-service attack on
the service. The EAP-PPT server implementation <bcp14>SHOULD</bcp14> take this
into account and <bcp14>SHOULD</bcp14> take steps to limit the requests it generates
towards the redemption service.</t>
      </section>
      <section anchor="abuse">
        <name>Abuse</name>
        <t>EAP-PPT provides anonymous network access to peers possessing valid
Privacy Pass tokens. This anonymous access can potentially be abused.
This is not a problem that is unique to EAP-PPT. Other EAP tunneled 
EAP methods or other methods that provide anonymous access, such as EAP-PSK
<xref target="RFC4764"/>, EAP-TTLS and EAP-TLS with anonymous certificates, also have
similar abuse potential.</t>
        <t>To counter such abuse, network operators may implement various abuse
mitigation techniques, such as:</t>
        <ul spacing="normal">
          <li>
            <t>Leverage the attestation: EAP-PPT relies on a token that is proof of 
 an attestation. The attestation required for network access will rely on the 
 policy of the network provider. As such the attestation policy can be designed 
 to ensure that both the device and the user meet that policy before being 
 issued a token. This can help mitigate abuse by ensuring that only
 authorized users and devices are able to obtain tokens. Further more,
 in case where abuse is detected, future attestation can be denied.</t>
          </li>
          <li>
            <t>Leverage a Layer 2 identifier: In case of a public network, it may not be 
 possible to update future attestation based on abuse detection. In this
 case a session can be blocked based on the Layer 2 identifier of the device
 (for example the MAC address). As described in <xref target="RFC9797"/>, there are 
 various levels of trust a device may have in a network. Based on the trust level,
 the device may present a Layer 2 identifier that is stable over time, or a
 randomized one. In case of EAP Authentication, devices present a stable Layer 2
 identifier that is stable across sessions within a certain timeframe. This layer 2
 identifier is used for association, so the advantage of leveraging it for abuse
 mitigation is that access can be denied at association time, before EAP authentication
 is performed.</t>
          </li>
          <li>
            <t>Leverage network-level abuse mitigation techniques: Network operators
 may have various network-level abuse mitigation techniques in place,
 such as rate-limiting, traffic filtering, and monitoring of network traffic
 to detect and mitigate abusive behavior. These techniques can be applied
 to EAP-PPT authenticated sessions. With these techniques, mitigation does not happen
 by excluding the user or device, but happens by mitigating the abuse itself.</t>
          </li>
        </ul>
      </section>
      <section anchor="security-claims">
        <name>Security Claims</name>
        <t>This section provides the security claims required by <xref target="RFC3748"/>.</t>
        <t>Auth. mechanism: Privacy Pass token</t>
        <t>Ciphersuite negotiation: No</t>
        <t>Mutual authentication: No</t>
        <t>Integrity protection: NO. However, EAP-PPT method executed within a
                      tunnel-based EAP method established TLS tunnel
                      is integrity protected. The cleartext EAP-PPT
                      messages outside the tunnel are not integrity
                      protected.</t>
        <t>Replay protection: NO. However, EAP-PPT method executed within a
                   tunnel-based EAP method established TLS tunnel is
                   replay protected. The cleartext EAP-PPT messages
                   outside the tunnel are not replay protected.</t>
        <t>Confidentiality: No. However, EAP-PPT method executed within a
                 tunnel-based EAP method established TLS tunnel
                 is encrypted.</t>
        <t>Key derivation: No. See <xref target="keyderivation"/>.</t>
        <t>Key strength: N/A</t>
        <t>Dictionary attack prot.: N/A</t>
        <t>Fast reconnect: No</t>
        <t>Cryptographic binding: No. See <xref target="keyderivation"/>.</t>
        <t>Session independence: N/A</t>
        <t>Fragmentation: No</t>
        <t>Key Hierarchy: No</t>
        <t>Channel binding: Yes</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This section provides guidance to the Internet Assigned Numbers
Authority (IANA) regarding registration of values related to the
EAP-PPT protocol, in accordance with BCP 26 <xref target="RFC8126"/>.</t>
      <section anchor="eap-method-type">
        <name>EAP Method Type</name>
        <t>An EAP Method Type number is requested for EAP-PPT in the "Method
Types" registry of the "Extensible Authentication Protocol (EAP)
Registry".</t>
      </section>
      <section anchor="ianatlv">
        <name>EAP-PPT TLV Types Registry</name>
        <t>IANA is requested to create a new registry called "EAP-PPT TLV Types"
within a new "EAP-PPT Parameters" registry group. This registry
records the TLV Type values that may appear in the TLV Type field of
an EAP-PPT TLV (see <xref target="tlvformat"/>).</t>
        <t>Each entry in this registry contains the following fields:</t>
        <dl>
          <dt>Type:</dt>
          <dd>
            <t>A non-negative integer in the range 0-16383.</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>A short name for the TLV.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>The document(s) defining the TLV.</t>
          </dd>
        </dl>
        <t>The registration procedures for this registry, following the policies
defined in <xref target="RFC8126"/>, are:</t>
        <table anchor="tlvtypepolicy">
          <name>EAP-PPT TLV Types Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="left">1-16383</td>
              <td align="left">Specification Required</td>
            </tr>
          </tbody>
        </table>
        <t>The initial contents of the registry are the values defined in
<xref target="tlvtypetable"/> of this document:</t>
        <table anchor="tlvtypeinitial">
          <name>Initial EAP-PPT TLV Types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Token-Challenge</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Challenge</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Token-Key</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Extension-Types</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Token</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Extensions</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">No-Suitable-Token</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">Error-Code</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">Error-Description</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">Session-Timeout</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">Vendor-Specific-Error</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">Channel-Binding-Data</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>When evaluating a request in the Specification Required range, the
Designated Expert should confirm that the requested TLV is meaningful
across implementations from different vendors, that its function is
not already covered by an existing TLV, that its Value field encoding
and permitted lengths are unambiguously specified, and that a stable,
publicly available specification defines its semantics. The Designated
Expert should also confirm that the specification states whether the
TLV is expected to be sent with the M bit set, and in which EAP-PPT
messages it may appear. Vendor-private information <bcp14>MUST NOT</bcp14> be
registered in this registry; vendor-specific error conditions are
conveyed using the mechanism described in <xref target="ianaenterprise"/>.</t>
      </section>
      <section anchor="eap-ppt-error-codes-registry">
        <name>EAP-PPT Error Codes Registry</name>
        <t>IANA is requested to create a new registry called "EAP-PPT Error
Codes" within the new "EAP-PPT Parameters" registry group. This
registry records the globally scoped error codes that may appear in
the Error-Code TLV of an EAP-Request/PPT-Error message
(see <xref target="errorcodes"/>).</t>
        <t>Each entry in this registry contains the following fields:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>A non-negative integer.</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>A short, human-readable description of the error.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>The document(s) defining the code.</t>
          </dd>
        </dl>
        <t>The registration procedures for this registry, following the ranges
defined in <xref target="RFC8126"/>, are:</t>
        <table anchor="errorcodepolicy">
          <name>EAP-PPT Error Codes Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="left">1-191</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">192-255</td>
              <td align="left">Reserved</td>
            </tr>
          </tbody>
        </table>
        <t>The initial contents of the registry are the values defined in
<xref target="errorcodes"/> of this document:</t>
        <table anchor="errorcodeinitial">
          <name>Initial EAP-PPT Error Codes</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">Failure in validating the token data.</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Redemption failure.</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Token redemption temporarily unavailable.</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Double spend of the token detected.</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Undefined failure.</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Redemption success, unexpected extension (fatal).</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">Redemption success, unexpected extension (unconditional access).</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">Redemption success, unexpected extension (conditional access).</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">Malformed message.</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>[RFC Editor: please replace "RFC XXXX" above with the RFC number
assigned to this document.]</t>
        <t>When evaluating a request in the Specification Required range, the
Designated Expert should confirm that the requested code describes an
error condition that is meaningful across implementations from
different vendors, that it is not already covered by an existing code,
and that a stable, publicly available specification defines its
semantics. Vendor-private error conditions <bcp14>MUST NOT</bcp14> be registered in
this registry; they are conveyed using the enterprise-specific
mechanism described in <xref target="ianaenterprise"/>.</t>
      </section>
      <section anchor="ianaenterprise">
        <name>Vendor-Specific (Enterprise) Error Codes</name>
        <t>To allow a vendor to define and "self-issue" its own error codes
without registering them with IANA, and without risking collisions
with codes defined by other vendors, an EAP-Request/PPT-Error message
<bcp14>MAY</bcp14> carry a Vendor-Specific-Error TLV (<xref target="vendorerrtlv"/>) in place of
the Error-Code TLV. The Enterprise Number field of that TLV carries
the vendor's SMI Network Management Private Enterprise Number (PEN)
assigned from the IANA "Private Enterprise Numbers" registry
<xref target="RFC9371"/>, and the Vendor Code field carries an error code
interpreted within the private number space of that enterprise rather
than as a value from the "EAP-PPT Error Codes" registry defined in
<xref target="iana"/>.</t>
        <t>Such enterprise-scoped codes are administered solely by the owning
enterprise and <bcp14>MUST NOT</bcp14> be registered with IANA. Because Private
Enterprise Numbers are globally unique, the combination of Enterprise
Number and Vendor Code is itself globally unique, so different vendors
can define overlapping Vendor Code values without ambiguity.</t>
        <t>This document creates no IANA registry for enterprise-scoped error
codes; IANA is not asked to track them.</t>
        <t>An EAP-PPT peer that receives an Enterprise Number it does not
recognize, or an enterprise-scoped Vendor Code it does not understand,
<bcp14>MUST</bcp14> treat the condition as a fatal error, <bcp14>MUST NOT</bcp14> reuse the token in
a subsequent authentication, and <bcp14>MAY</bcp14> surface the contents of the
Error-Description TLV to the user. A peer cannot determine whether an
unrecognized enterprise-scoped code denotes a condition that permits
reuse of the token, so it <bcp14>MUST</bcp14> assume that it does not.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9846">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <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 obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC3748">
          <front>
            <title>Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="L. Blunk" initials="L." surname="Blunk"/>
            <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
            <author fullname="J. Carlson" initials="J." surname="Carlson"/>
            <author fullname="H. Levkowetz" initials="H." role="editor" surname="Levkowetz"/>
            <date month="June" year="2004"/>
            <abstract>
              <t>This document defines the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication methods. EAP typically runs directly over data link layers such as Point-to-Point Protocol (PPP) or IEEE 802, without requiring IP. EAP provides its own support for duplicate elimination and retransmission, but is reliant on lower layer ordering guarantees. Fragmentation is not supported within EAP itself; however, individual EAP methods may support this. This document obsoletes RFC 2284. A summary of the changes between this document and RFC 2284 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3748"/>
          <seriesInfo name="DOI" value="10.17487/RFC3748"/>
        </reference>
        <reference anchor="RFC7542">
          <front>
            <title>The Network Access Identifier</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>In order to provide inter-domain authentication services, it is necessary to have a standardized method that domains can use to identify each other's users. This document defines the syntax for the Network Access Identifier (NAI), the user identifier submitted by the client prior to accessing resources. This document is a revised version of RFC 4282. It addresses issues with international character sets and makes a number of other corrections to RFC 4282.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7542"/>
          <seriesInfo name="DOI" value="10.17487/RFC7542"/>
        </reference>
        <reference anchor="RFC9930">
          <front>
            <title>Tunnel Extensible Authentication Protocol (TEAP) Version 1</title>
            <author fullname="A. DeKok" initials="A." role="editor" surname="DeKok"/>
            <date month="February" year="2026"/>
            <abstract>
              <t>This document defines the Tunnel Extensible Authentication Protocol (TEAP) version 1. TEAP is a tunnel-based EAP method that enables secure communication between a peer and a server by using the Transport Layer Security (TLS) protocol to establish a mutually authenticated tunnel. Within the tunnel, TLV objects are used to convey authentication-related data between the EAP peer and the EAP server. This document obsoletes RFC 7170 and updates RFC 9427 by moving all TEAP specifications from those documents to this one.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9930"/>
          <seriesInfo name="DOI" value="10.17487/RFC9930"/>
        </reference>
        <reference anchor="RFC9577">
          <front>
            <title>The Privacy Pass HTTP Authentication Scheme</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="S. Valdez" initials="S." surname="Valdez"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document defines an HTTP authentication scheme for Privacy Pass, a privacy-preserving authentication mechanism used for authorization. The authentication scheme specified in this document can be used by Clients to redeem Privacy Pass tokens with an Origin. It can also be used by Origins to challenge Clients to present Privacy Pass tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9577"/>
          <seriesInfo name="DOI" value="10.17487/RFC9577"/>
        </reference>
        <reference anchor="RFC9578">
          <front>
            <title>Privacy Pass Issuance Protocols</title>
            <author fullname="S. Celi" initials="S." surname="Celi"/>
            <author fullname="A. Davidson" initials="A." surname="Davidson"/>
            <author fullname="S. Valdez" initials="S." surname="Valdez"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document specifies two variants of the two-message issuance protocol for Privacy Pass tokens: one that produces tokens that are privately verifiable using the Issuer Private Key and one that produces tokens that are publicly verifiable using the Issuer Public Key. Instances of "issuance protocol" and "issuance protocols" in the text of this document are used interchangeably to refer to the two variants of the Privacy Pass issuance protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9578"/>
          <seriesInfo name="DOI" value="10.17487/RFC9578"/>
        </reference>
        <reference anchor="RFC7296">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC9427">
          <front>
            <title>TLS-Based Extensible Authentication Protocol (EAP) Types for Use with TLS 1.3</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>The Extensible Authentication Protocol-TLS (EAP-TLS) (RFC 5216) has been updated for TLS 1.3 in RFC 9190. Many other EAP Types also depend on TLS, such as EAP-Flexible Authentication via Secure Tunneling (EAP-FAST) (RFC 4851), EAP-Tunneled TLS (EAP-TTLS) (RFC 5281), the Tunnel Extensible Authentication Protocol (TEAP) (RFC 7170). It is possible that many vendor-specific EAP methods, such as the Protected Extensible Authentication Protocol (PEAP), depend on TLS as well. This document updates those methods in order to use the new key derivation methods available in TLS 1.3. Additional changes necessitated by TLS 1.3 are also discussed.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9427"/>
          <seriesInfo name="DOI" value="10.17487/RFC9427"/>
        </reference>
        <reference anchor="RFC9190">
          <front>
            <title>EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3</title>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the use of EAP-TLS with TLS 1.3 while remaining backwards compatible with existing implementations of EAP-TLS. TLS 1.3 provides significantly improved security and privacy, and reduced latency when compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security and privacy by always providing forward secrecy, never disclosing the peer identity, and by mandating use of revocation checking when compared to EAP-TLS with earlier versions of TLS. This document also provides guidance on authentication, authorization, and resumption for EAP-TLS in general (regardless of the underlying TLS version used). This document updates RFC 5216.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9190"/>
          <seriesInfo name="DOI" value="10.17487/RFC9190"/>
        </reference>
        <reference anchor="I-D.draft-ietf-privacypass-auth-scheme-extensions">
          <front>
            <title>The PrivateToken HTTP Authentication Scheme Extensions Parameter</title>
            <author fullname="Scott Hendrickson" initials="S." surname="Hendrickson">
              <organization>Google</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
         </author>
            <date day="13" month="May" year="2026"/>
            <abstract>
              <t>   This document specifies new parameters for the "PrivateToken" HTTP
   authentication scheme, called extensions.  The purpose of these
   extensions is to negotiate and carry public metadata for Privacy Pass
   protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-auth-scheme-extensions-03"/>
        </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="RFC5216">
          <front>
            <title>The EAP-TLS Authentication Protocol</title>
            <author fullname="D. Simon" initials="D." surname="Simon"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="R. Hurst" initials="R." surname="Hurst"/>
            <date month="March" year="2008"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides support for multiple authentication methods. Transport Layer Security (TLS) provides for mutual authentication, integrity-protected ciphersuite negotiation, and key exchange between two endpoints. This document defines EAP-TLS, which includes support for certificate-based mutual authentication and key derivation.</t>
              <t>This document obsoletes RFC 2716. A summary of the changes between this document and RFC 2716 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5216"/>
          <seriesInfo name="DOI" value="10.17487/RFC5216"/>
        </reference>
        <reference anchor="RFC6677">
          <front>
            <title>Channel-Binding Support for Extensible Authentication Protocol (EAP) Methods</title>
            <author fullname="S. Hartman" initials="S." role="editor" surname="Hartman"/>
            <author fullname="T. Clancy" initials="T." surname="Clancy"/>
            <author fullname="K. Hoeper" initials="K." surname="Hoeper"/>
            <date month="July" year="2012"/>
            <abstract>
              <t>This document defines how to implement channel bindings for Extensible Authentication Protocol (EAP) methods to address the "lying Network Access Service (NAS)" problem as well as the "lying provider" problem. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6677"/>
          <seriesInfo name="DOI" value="10.17487/RFC6677"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="PEAP">
          <front>
            <title>Protected Extensible Authentication Protocol (PEAP)</title>
            <author>
              <organization>Microsoft Corporation</organization>
            </author>
            <date year="2021" month="June"/>
          </front>
        </reference>
        <reference anchor="IEEE-802.11">
          <front>
            <title>IEEE Standard for Information technology Telecommunications and information exchange between systems Local and metropolitan area networks-Specific requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications</title>
            <author initials="" surname="IEEE" fullname="IEEE">
              <organization/>
            </author>
            <date year="2021" month="February"/>
          </front>
        </reference>
        <reference anchor="IEEE-802.1X">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks--Port-Based Network Access Control</title>
            <author initials="" surname="IEEE" fullname="IEEE">
              <organization/>
            </author>
            <date year="2020" month="February"/>
          </front>
        </reference>
        <reference anchor="RFC9576">
          <front>
            <title>The Privacy Pass Architecture</title>
            <author fullname="A. Davidson" initials="A." surname="Davidson"/>
            <author fullname="J. Iyengar" initials="J." surname="Iyengar"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
            <abstract>
              <t>This document specifies the Privacy Pass architecture and requirements for its constituent protocols used for authorization based on privacy-preserving authentication mechanisms. It describes the conceptual model of Privacy Pass and its protocols, its security and privacy goals, practical deployment models, and recommendations for each deployment model, to help ensure that the desired security and privacy goals are fulfilled.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9576"/>
          <seriesInfo name="DOI" value="10.17487/RFC9576"/>
        </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="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC6678">
          <front>
            <title>Requirements for a Tunnel-Based Extensible Authentication Protocol (EAP) Method</title>
            <author fullname="K. Hoeper" initials="K." surname="Hoeper"/>
            <author fullname="S. Hanna" initials="S." surname="Hanna"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <author fullname="J. Salowey" initials="J." role="editor" surname="Salowey"/>
            <date month="July" year="2012"/>
            <abstract>
              <t>This memo defines the requirements for a tunnel-based Extensible Authentication Protocol (EAP) Method. This tunnel method will use Transport Layer Security (TLS) to establish a secure tunnel. The tunnel will provide support for password authentication, EAP authentication, and the transport of additional data for other purposes. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6678"/>
          <seriesInfo name="DOI" value="10.17487/RFC6678"/>
        </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="RFC4851">
          <front>
            <title>The Flexible Authentication via Secure Tunneling Extensible Authentication Protocol Method (EAP-FAST)</title>
            <author fullname="N. Cam-Winget" initials="N." surname="Cam-Winget"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <date month="May" year="2007"/>
            <abstract>
              <t>This document defines the Extensible Authentication Protocol (EAP) based Flexible Authentication via Secure Tunneling (EAP-FAST) protocol. EAP-FAST is an EAP method that enables secure communication between a peer and a server by using the Transport Layer Security (TLS) to establish a mutually authenticated tunnel. Within the tunnel, Type-Length-Value (TLV) objects are used to convey authentication related data between the peer and the EAP server. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4851"/>
          <seriesInfo name="DOI" value="10.17487/RFC4851"/>
        </reference>
        <reference anchor="I-D.draft-hendrickson-privacypass-expiration-extension">
          <front>
            <title>Privacy Pass Token Expiration Extension</title>
            <author fullname="Scott Hendrickson" initials="S." surname="Hendrickson">
              <organization>Google</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <date day="24" month="January" year="2025"/>
            <abstract>
              <t>   This document describes an extension for Privacy Pass that allows
   tokens to encode expiration information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hendrickson-privacypass-expiration-extension-03"/>
        </reference>
        <reference anchor="I-D.draft-ietf-privacypass-batched-tokens">
          <front>
            <title>Batched Token Issuance Protocol</title>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Thibault Meunier" initials="T." surname="Meunier">
              <organization>Cloudflare Inc.</organization>
            </author>
            <date day="4" month="May" year="2026"/>
            <abstract>
              <t>   This document specifies two variants of the Privacy Pass issuance
   protocol that allow for batched issuance of tokens.  These allow
   clients to request more than one token at a time and for issuers to
   issue more than one token at a time.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-batched-tokens-08"/>
        </reference>
        <reference anchor="RFC9371">
          <front>
            <title>Registration Procedures for Private Enterprise Numbers (PENs)</title>
            <author fullname="A. Baber" initials="A." surname="Baber"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="March" year="2023"/>
            <abstract>
              <t>This document describes how Private Enterprise Numbers (PENs) are registered by IANA. It shows how to request a new PEN and how to modify a current PEN. It also gives a brief overview of PEN uses.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9371"/>
          <seriesInfo name="DOI" value="10.17487/RFC9371"/>
        </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="I-D.draft-tomas-openroaming">
          <front>
            <title>WBA OpenRoaming Wireless Federation</title>
            <author fullname="Bruno Tomas" initials="B." surname="Tomas">
              <organization>Wireless Broadband Alliance, Inc.</organization>
            </author>
            <author fullname="Mark Grayson" initials="M." surname="Grayson">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Necati Canpolat" initials="N." surname="Canpolat">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Elizabeth A Cockrell" initials="B." surname="Cockrell">
              <organization>Independent</organization>
            </author>
            <author fullname="Sri Gundavelli" initials="S." surname="Gundavelli">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Seb Adamski" initials="S." surname="Adamski">
              <organization>IronWiFi</organization>
            </author>
            <date day="12" month="June" year="2026"/>
            <abstract>
              <t>   This document describes the Wireless Broadband Alliance's OpenRoaming
   system.  The OpenRoaming architecture enables a seamless onboarding
   experience for devices connecting to access networks that are part of
   the federation of access networks and identity providers.  The
   primary objective of this document is to describe the protocols that
   form the foundation for this architecture, enabling providers to
   correctly configure their equipment to support interoperable
   OpenRoaming signalling exchanges.  In addition, the topic of
   OpenRoaming has been raised in different IETF working groups, and
   therefore a secondary objective is to assist those discussions by
   describing the federation organization and framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tomas-openroaming-08"/>
        </reference>
        <reference anchor="RFC4764">
          <front>
            <title>The EAP-PSK Protocol: A Pre-Shared Key Extensible Authentication Protocol (EAP) Method</title>
            <author fullname="F. Bersani" initials="F." surname="Bersani"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2007"/>
            <abstract>
              <t>This document specifies EAP-PSK, an Extensible Authentication Protocol (EAP) method for mutual authentication and session key derivation using a Pre-Shared Key (PSK). EAP-PSK provides a protected communication channel when mutual authentication is successful for both parties to communicate over. This document describes the use of this channel only for protected exchange of result indications, but future EAP-PSK extensions may use the channel for other purposes. EAP-PSK is designed for authentication over insecure networks such as IEEE 802.11. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4764"/>
          <seriesInfo name="DOI" value="10.17487/RFC4764"/>
        </reference>
        <reference anchor="RFC9797">
          <front>
            <title>Randomized and Changing Media Access Control (MAC) Addresses: Context, Network Impacts, and Use Cases</title>
            <author fullname="J. Henry" initials="J." surname="Henry"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>To limit the privacy issues created by the association between a device, its traffic, its location, and its user in IEEE 802 networks, client vendors and client OS vendors have started implementing Media Access Control (MAC) address randomization. This technology is particularly important in Wi-Fi networks (defined in IEEE 802.11) due to the over-the-air medium and device mobility. When such randomization happens, some in-network states may break, which may affect network connectivity and user experience. At the same time, devices may continue using other stable identifiers, defeating the purpose of MAC address randomization.</t>
              <t>This document lists various network environments and a range of network services that may be affected by such randomization. This document then examines settings where the user experience may be affected by in-network state disruption. Last, this document examines some existing frameworks that maintain user privacy while preserving user quality of experience and network operation efficiency.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9797"/>
          <seriesInfo name="DOI" value="10.17487/RFC9797"/>
        </reference>
        <reference anchor="RFC5612">
          <front>
            <title>Enterprise Number for Documentation Use</title>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="D. Harrington" initials="D." surname="Harrington"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document describes an Enterprise Number (also known as SMI Network Management Private Enterprise Code) for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5612"/>
          <seriesInfo name="DOI" value="10.17487/RFC5612"/>
        </reference>
      </references>
    </references>
    <?line 2097?>

<section anchor="testvectors">
      <name>Test Vectors</name>
      <t>This appendix gives complete octet-level examples of EAP-PPT messages.
Each example shows the full EAP-PPT packet, beginning with the Code
field of the EAP header (<xref target="header"/>). All values are hexadecimal.</t>
      <t>The Privacy Pass structures in these examples are syntactically
well-formed but are not the output of a real issuance protocol run;
they exercise the EAP-PPT framing only and cannot be verified
cryptographically.</t>
      <section anchor="eap-requestppt-challenge-1">
        <name>EAP-Request/PPT-Challenge</name>
        <t>A message carrying a single Token-Challenge TLV. The Token-Key TLV is
omitted, as permitted by <xref target="tokenchallengetlv"/>.</t>
        <figure anchor="tvchallenge">
          <name>EAP-Request/PPT-Challenge</name>
          <artwork><![CDATA[
01 2a 00 39 39 01               EAP-PPT header
                                  Code       = 1 (Request)
                                  Identifier = 0x2a
                                  Length     = 57
                                  Type       = 57 (EAP-PPT)
                                  Subtype    = 1 (PPT-Challenge)
80 01 00 2f                     Token-Challenge TLV
                                  M=1, R=0, Type=1, Length=47
   80 02 00 23                  Challenge TLV
                                  M=1, R=0, Type=2, Length=35
      00 02                       token_type = 0x0002
      00 0e                       issuer_name length = 14
      69 73 73 75 65 72 2e 65     "issuer.e"
      78 61 6d 70 6c 65           "xample"
      00                          redemption_context length = 0
      00 0e                       origin_info length = 14
      6f 72 69 67 69 6e 2e 65     "origin.e"
      78 61 6d 70 6c 65           "xample"
   00 04 00 04                  Extension-Types TLV
                                  M=0, R=0, Type=4, Length=4
      00 01                       ExtensionType 1
      00 05                       ExtensionType 5
]]></artwork>
        </figure>
      </section>
      <section anchor="eap-responseppt-challenge-carrying-a-token">
        <name>EAP-Response/PPT-Challenge Carrying a Token</name>
        <t>A message carrying a Token TLV for token_type 0x0001, for which Nk is
48 octets. The nonce, challenge_digest, token_key_id and authenticator
fields are filled with repeated octet values for readability.</t>
        <figure anchor="tvtoken">
          <name>EAP-Response/PPT-Challenge carrying a token</name>
          <artwork><![CDATA[
02 2a 00 9c 39 01               EAP-PPT header
                                  Code       = 2 (Response)
                                  Identifier = 0x2a
                                  Length     = 156
                                  Type       = 57 (EAP-PPT)
                                  Subtype    = 1 (PPT-Challenge)
80 05 00 92                     Token TLV
                                  M=1, R=0, Type=5, Length=146
   00 01                          token_type = 0x0001
   01 01 ... 01                   nonce, 32 octets of 0x01
   02 02 ... 02                   challenge_digest, 32 octets of 0x02
   03 03 ... 03                   token_key_id, 32 octets of 0x03
   04 04 ... 04                   authenticator, 48 octets of 0x04
]]></artwork>
        </figure>
      </section>
      <section anchor="eap-responseppt-challenge-carrying-no-suitable-token">
        <name>EAP-Response/PPT-Challenge Carrying No-Suitable-Token</name>
        <t>A message sent by a peer that holds no token matching any of the
received challenges.</t>
        <figure anchor="tvnotoken">
          <name>EAP-Response/PPT-Challenge carrying No-Suitable-Token</name>
          <artwork><![CDATA[
02 2a 00 0a 39 01               EAP-PPT header
                                  Code       = 2 (Response)
                                  Identifier = 0x2a
                                  Length     = 10
                                  Type       = 57 (EAP-PPT)
                                  Subtype    = 1 (PPT-Challenge)
80 07 00 00                     No-Suitable-Token TLV
                                  M=1, R=0, Type=7, Length=0
]]></artwork>
        </figure>
      </section>
      <section anchor="eap-requestppt-error-with-a-globally-scoped-code">
        <name>EAP-Request/PPT-Error with a Globally Scoped Code</name>
        <t>A message carrying error code 8 (redemption success, unexpected
extension, conditional access) with a description and a session
timeout of 300 seconds.</t>
        <figure anchor="tverror">
          <name>EAP-Request/PPT-Error with a globally scoped code</name>
          <artwork><![CDATA[
01 2b 00 24 39 02               EAP-PPT header
                                  Code       = 1 (Request)
                                  Identifier = 0x2b
                                  Length     = 36
                                  Type       = 57 (EAP-PPT)
                                  Subtype    = 2 (PPT-Error)
80 08 00 01                     Error-Code TLV
                                  M=1, R=0, Type=8, Length=1
   08                             code = 8
00 09 00 0d                     Error-Description TLV
                                  M=0, R=0, Type=9, Length=13
   74 6f 6b 65 6e 20 65 78        "token ex"
   70 69 72 65 64                 "pired"
00 0a 00 04                     Session-Timeout TLV
                                  M=0, R=0, Type=10, Length=4
   00 00 01 2c                    300 seconds
]]></artwork>
        </figure>
      </section>
      <section anchor="eap-requestppt-error-with-a-vendor-specific-code">
        <name>EAP-Request/PPT-Error with a Vendor-Specific Code</name>
        <t>A message carrying an enterprise-scoped error code. Private Enterprise
Number 32473 is the PEN reserved for use in documentation
<xref target="RFC5612"/>.</t>
        <figure anchor="tvvendorerror">
          <name>EAP-Request/PPT-Error with a vendor-specific code</name>
          <artwork><![CDATA[
01 2c 00 0f 39 02               EAP-PPT header
                                  Code       = 1 (Request)
                                  Identifier = 0x2c
                                  Length     = 15
                                  Type       = 57 (EAP-PPT)
                                  Subtype    = 2 (PPT-Error)
80 0b 00 05                     Vendor-Specific-Error TLV
                                  M=1, R=0, Type=11, Length=5
   00 00 7e d9                    Enterprise Number = 32473
   01                             Vendor Code = 1
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="notes-on-referenced-documents">
      <name>Notes on Referenced Documents</name>
      <t>This appendix records two observations about the documents this
specification depends on. Neither of them changes any requirement
stated in this document.</t>
      <section anchor="key-exchange-mode-name-in-rfc-9190">
        <name>Key Exchange Mode Name in RFC 9190</name>
        <t><xref section="2.1.3" sectionFormat="of" target="RFC9190"/> states a requirement on the pre-shared
key exchange mode used for resumption, and gives the name of that mode
as "psk_dh_ke". TLS 1.3 defines only two values for the
psk_key_exchange_modes extension, "psk_ke" and "psk_dhe_ke"
(<xref section="4.3.9" sectionFormat="of" target="RFC9846"/>); no mode named "psk_dh_ke" exists.</t>
        <t>This document uses the name "psk_dhe_ke". That is the mode which
performs an ephemeral key agreement alongside the pre-shared key and
so provides forward secrecy, and it is evidently the mode intended by
<xref section="2.1.3" sectionFormat="of" target="RFC9190"/>, since the surrounding text in that
section discusses forward secrecy. Implementers should read the name
in <xref target="RFC9190"/> accordingly.</t>
      </section>
      <section anchor="rfc-9427-and-the-version-of-tls-13">
        <name>RFC 9427 and the Version of TLS 1.3</name>
        <t><xref target="RFC9427"/> specifies how the tunnel-based TLS EAP methods that can
carry EAP-PPT are used with TLS 1.3, and was written against RFC 8446.
<xref target="RFC9846"/> obsoletes RFC 8446 and is the current specification of
TLS 1.3.</t>
        <t>This document is specified on the basis that the requirements of
<xref target="RFC9427"/> apply when the tunnel-based EAP method uses TLS 1.3 as
specified in <xref target="RFC9846"/>. Implementers comparing the two documents
should note that the subsections of Section 4 of RFC 8446 were
renumbered in <xref target="RFC9846"/>, so a section number cited by <xref target="RFC9427"/>
may not identify the same subsection in <xref target="RFC9846"/>.</t>
      </section>
    </section>
    <section removeInRFC="true" anchor="changes-since-03">
      <name>Changes Since -03</name>
      <t>Substantive changes:</t>
      <ul spacing="normal">
        <li>
          <t>The encoding of EAP-PPT message contents has been changed from JSON
to Type-Length-Value (TLV) objects (<xref target="tlvformat"/>), using the TLV
format defined for TEAP in <xref section="4.2.1" sectionFormat="of" target="RFC9930"/>. All
references to JSON (RFC 8259) have been removed from the document.
Consequently:  </t>
          <ul spacing="normal">
            <li>
              <t>Privacy Pass structures (TokenChallenge, Token, Extensions) and
Issuer public keys are now carried directly in TLV Value fields,
rather than being base64url encoded and placed in JSON strings.
The base64url encoding and its padding requirement have been
removed, along with the reference to RFC 4648.</t>
            </li>
            <li>
              <t>The EAP-Response/PPT-Channel-Binding data is now carried in a
Channel-Binding-Data TLV, so all EAP-PPT messages that carry data
now use a single, uniform encoding.</t>
            </li>
            <li>
              <t>The "code", "description", "session-timeout" and
"enterprise-number" JSON keys have been replaced by the
Error-Code, Error-Description, Session-Timeout and
Vendor-Specific-Error TLVs. Field widths that were previously
stated as prose constraints are now structural: the error code is
a 1-octet unsigned integer, the session timeout is a 4-octet
unsigned integer, and the Private Enterprise Number is a 4-octet
unsigned integer.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>The mechanism for signaling that a peer holds no suitable token has
changed. In -03 the peer sent an empty "token" string; it now sends
an explicit No-Suitable-Token TLV, which is mutually exclusive with
the Token TLV. This removes the overloading of an empty value as a
protocol signal.</t>
        </li>
        <li>
          <t>Vendor-specific error codes are now self-contained. In -03 the
optional "enterprise-number" key reinterpreted the meaning of the
"code" key. A Vendor-Specific-Error TLV now carries both the Private
Enterprise Number and the vendor code, and is sent in place of, and
is mutually exclusive with, the Error-Code TLV (<xref target="ianaenterprise"/>).</t>
        </li>
        <li>
          <t>The relationship between the Code and Subtype fields and the TLV
objects expected in the Data field is now stated normatively
(<xref target="subtypes"/>). A recipient determines the message type from Code
and Subtype and validates TLV composition against it, and <bcp14>MUST NOT</bcp14>
infer the message type from the TLV objects present. Without this
rule a recipient could misclassify a message that carries no TLV
objects, or one consisting only of TLV objects it skips under the
M bit rule.</t>
        </li>
        <li>
          <t>A new globally scoped error code 9 has been added, reporting that
the EAP-PPT server could not parse the received message
(<xref target="errorcodes"/>). In -03 this condition was conflated with error
code 1. The two are now distinguished, because they differ in what
the peer may do next: code 1 means the token data in a well-formed
message failed validation, whereas code 9 means no token was
redeemed, so the peer <bcp14>MAY</bcp14> reuse the same token. The description of
code 1 has been narrowed accordingly, and the Unassigned range in
the registry now begins at 10.</t>
        </li>
        <li>
          <t>The handling of a malformed message is now specified per message
rather than as a single rule (<xref target="unknowntlv"/>). A server that receives
a malformed EAP-Response/PPT-Error <bcp14>MUST NOT</bcp14> answer it with a further
EAP-Request/PPT-Error, since that would solicit another
acknowledgement which could itself be malformed; it terminates the
conversation with an EAP-Failure instead, even where it would
otherwise have sent an EAP-Success under <xref target="remediation"/>.</t>
        </li>
        <li>
          <t>New normative parsing requirements have been added
(<xref target="tlvparsing"/>), covering length validation, complete consumption
of the Data field, per-Type length constraints, rejection of
repeated TLVs where at most one is permitted, and a single permitted
level of container nesting.</t>
        </li>
        <li>
          <t>Handling of unknown TLVs is specified via the M (mandatory) bit
(<xref target="unknowntlv"/>), giving EAP-PPT a defined forward-compatibility
rule that the JSON encoding did not state. An unrecognized TLV with
the M bit set is scoped to its enclosing container: inside a
Token-Challenge TLV it makes only that Token-Challenge unusable
(<xref target="unusablechallenge"/>), leaving the peer free to answer any other
challenge in the message, whereas at the top level of the Data field
it makes the message malformed. A structurally invalid
Token-Challenge TLV remains a malformed message, since it indicates
a defective sender rather than a version difference.</t>
        </li>
        <li>
          <t>The M bit of the Extension-Types TLV is no longer fixed at 0. The
EAP-PPT server now sets it according to whether it would reject a
token that is not bound to the requested ExtensionType values
(<xref target="tokenchallengetlv"/>), so that the bit expresses the server's
redemption policy: set to 1 it demands binding, and set to 0 it
signals that the server will accept a token without it. A peer that
cannot satisfy a demand for binding declines that Token-Challenge
(<xref target="unusablechallenge"/>) instead of spending a single-use token the
server would reject, while a lenient server remains able to accept
such a token and report the outcome with error code 7 or 8. For this
TLV the M bit therefore carries meaning for every peer, not only for
one that does not understand the TLV Type.</t>
        </li>
        <li>
          <t>The two Client Failure Scenarios have been reworded to say that a
peer sends a No-Suitable-Token TLV when <em>every</em> Token-Challenge in
the message is unusable, rather than when one of them is. The
previous wording was ambiguous for multi-issuer challenge sets.</t>
        </li>
        <li>
          <t>A new "EAP-PPT TLV Types" registry has been requested
(<xref target="ianatlv"/>), including entry fields, registration procedures,
initial contents, and guidance for the Designated Expert.</t>
        </li>
        <li>
          <t>A new Security Considerations subsection on message parsing has been
added (<xref target="parsingsecurity"/>), describing the pre-authorization
exposure of the EAP-PPT server's parser and the handling of
server-supplied description text.</t>
        </li>
        <li>
          <t>A Test Vectors appendix has been added (<xref target="testvectors"/>) with
complete octet-level examples of each message.</t>
        </li>
        <li>
          <t>A Notes on Referenced Documents appendix has been added, recording
that <xref section="2.1.3" sectionFormat="of" target="RFC9190"/> names the resumption key exchange
mode "psk_dh_ke" where TLS 1.3 defines "psk_dhe_ke", and that
<xref target="RFC9427"/> was written against RFC 8446 whose Section 4
subsections were renumbered in <xref target="RFC9846"/>.</t>
        </li>
        <li>
          <t>The "Key Material Generation" section has been removed and replaced
by "Key Derivation and Cryptographic Binding" (<xref target="keyderivation"/>).
EAP-PPT no longer derives an MSK or an EMSK.  </t>
          <t>
In -03 the method derived 128 octets from the TLS exporter of the
session established by the tunnel-based EAP method, using the label
"EXPORTER_EAP_PPT_Key_Material" and a context of the EAP Type
concatenated with the redeemed token. That derivation was removed for
three reasons. First, a Privacy Pass token is a bearer credential
verified either with the Issuer public key or, for a privately
verifiable token type, with key material the EAP-PPT server shares
with the Issuer rather than with the peer. In neither case does
running EAP-PPT establish a secret shared between the peer and the
server from which keys could be derived; EAP-GTC is keyless for the same reason. Second, the token
contributed nothing to the context, since it is transmitted inside the
tunnel and is therefore available to any party holding that tunnel.
Third, and most importantly, a value derived from the tunnel can be
computed by a party that terminated the tunnel, so reporting it as
inner method keying material would have caused a tunnel-based EAP
method to compute a Crypto-Binding TLV that appears to bind the inner
method to the tunnel while providing no such assurance.  </t>
          <t>
Nothing consumes an EAP-PPT MSK. EAP-PPT is required to run inside a
tunnel-based EAP method, so the keying material supplied to the
authenticator is always that of the tunnel-based method.  </t>
          <t>
Accordingly the Security Claims now report "Key derivation: No",
"Key strength: N/A" and "Cryptographic binding: No", and the
references to RFC 5705 and to Section 7.10 of RFC 3748 have
been dropped.</t>
        </li>
        <li>
          <t>A new Security Considerations subsection, "Tunnel Authentication and
Server Certificate Validation" (<xref target="tunnelauth"/>), has been added. It
states the relay attack that cryptographic binding would ordinarily
detect, explains that the attack requires the peer to accept the
attacker's server certificate, and recommends that an EAP-PPT peer
validate the EAP server certificate against network-specific trust
anchors, check the server identity, and neither defer the decision to
the user nor accept a certificate on first use. It also collects the
measures that bound the consequences of a successful relay:
collocation of the EAP and EAP-PPT servers, channel binding,
short-lived tokens, and double spend detection.</t>
        </li>
        <li>
          <t>A rule on token reuse has been added (<xref target="tokenreuse"/>). An EAP-PPT
server sends an EAP-Request/PPT-Channel-Binding message only after
successfully redeeming the token, so receipt of that message tells the
peer its token was accepted and the token is spent from that point in
the conversation. A peer <bcp14>MUST NOT</bcp14> use that token again whatever error
code it subsequently receives, and error codes that permit reuse apply
only where the token has not been spent. Error codes 3, 5 and 9 all
permit reuse and none of them stated this condition.</t>
        </li>
        <li>
          <t>The deployment recommendations now state which Privacy Pass token
types suit which deployment model. Publicly verifiable types, which
require only the Issuer public key to be shared, are <bcp14>RECOMMENDED</bcp14> for
public use cases because they allow the Issuer and the EAP-PPT server
to stay in separate trust domains (<xref target="publiccase"/>). Privately
verifiable types require the EAP-PPT server to hold key material the
Issuer keeps secret, and so suit private deployments where those
entities are already within one trust domain. The consequences for
OpenRoaming are stated in the federated use case discussion.</t>
        </li>
        <li>
          <t>The peer's processing of a received Token-Challenge is now specified
(<xref target="challengeprocessing"/>). The peer verifies that an identity asserted
in the EAP server certificate appears in the origin_info field of the
TokenChallenge structure, and verifies that the token it redeems was
obtained for the exact TokenChallenge structure received. Matching uses
subjectAltName dNSName values; the Common Name <bcp14>MUST NOT</bcp14> be used
(<xref section="2" sectionFormat="of" target="RFC9525"/>), and a subjectAltName otherName of type
NAIRealm <xref target="RFC7585"/> is not used, since a name in origin_info is a
hostname and RFC 7585 defines that name form specifically to avoid
conflating DNS names with NAI realm names.  </t>
          <t>
A name in origin_info carries no port, no wildcard and no IP address
literal, and comparison is over ASCII strings, so an internationalized
name appears in its A-label form on both sides and no conversion is
performed (<xref section="4.2.1.6" sectionFormat="of" target="RFC5280"/>).  </t>
          <t>
An EAP-PPT server <bcp14>SHOULD</bcp14> populate origin_info, and one that does <bcp14>MUST</bcp14>
have a subjectAltName dNSName appearing in it (<xref target="tokenchallengetlv"/>).
A peer that receives a non-empty origin_info field but finds no
subjectAltName dNSName treats the Token-Challenge as unusable, and <bcp14>MUST
NOT</bcp14> skip the verification or treat origin_info as though it were empty.  </t>
          <t>
Together these constrain the relay attack described in <xref target="tunnelauth"/>
without requiring keying material, which -03 attempted to provide and
could not. <xref target="challengefail"/> shows the resulting message flow.</t>
        </li>
        <li>
          <t><xref target="RFC9427"/> is now a normative reference. It is the document that
specifies how the tunnel-based EAP methods that can carry EAP-PPT
(PEAP, EAP-TTLS, EAP-FAST and TEAP) are used with TLS 1.3, and it
updates RFC 4851, RFC 5281 and RFC 7170. <xref target="RFC9190"/> is also now
referenced, since <xref target="RFC9427"/> requires its guidelines to be
followed.</t>
        </li>
        <li>
          <t>The requirement on pre-shared keys in the Protocol Overview has been
restated. In -03 it read "TLS-PSK cipher suites [RFC8446, Section
9.2] <bcp14>MUST NOT</bcp14> be used", which named a construct TLS 1.3 does not
have, cited a section concerning mandatory-to-implement extensions,
and forbade the pre-shared keys that TLS 1.3 session resumption
depends on, contradicting the fast reconnect recommendation in
<xref target="privacy"/>. The requirement is now expressed in terms of
<xref section="2.1.1" sectionFormat="of" target="RFC9190"/>, which permits pre-shared key
authentication only for resumption, and the positive requirement
that the tunnel be authenticated by an EAP server certificate is
stated explicitly.</t>
        </li>
        <li>
          <t>EAP-PPT now requires the psk_dhe_ke key exchange mode for
resumption, so that a resumed TLS session retains forward secrecy,
and does not permit the deployment-specific exception that
<xref section="2.1.3" sectionFormat="of" target="RFC9190"/> allows. This is a new requirement in
-04.</t>
        </li>
        <li>
          <t>The session resumption discussion in <xref target="privacy"/> now distinguishes
the requirement in <xref section="4" sectionFormat="of" target="RFC9427"/> to <em>support</em> resumption
from this document's restrictions on when a peer <em>uses</em> it. The
restrictions themselves are unchanged: a full TLS handshake after
every new association, and resumption only on the same
authenticator.</t>
        </li>
        <li>
          <t><xref target="privacy"/> now cites <xref section="3" sectionFormat="of" target="RFC9427"/>, under which a
session ticket cannot resume authentication unless the inner tunnel
authentication completed successfully. Since EAP-PPT is that inner
authentication, a failed token redemption cannot produce a resumable
ticket.</t>
        </li>
        <li>
          <t>The discussion of Protected Access Credentials in <xref target="privacy"/> has
been updated to note that <xref target="RFC9427"/> deprecates the use of a PAC
for TEAP and EAP-FAST with TLS 1.3.</t>
        </li>
      </ul>
      <t>Editorial changes:</t>
      <ul spacing="normal">
        <li>
          <t>References to TEAP have been updated from RFC 7170 to
<xref target="RFC9930"/>, which obsoletes it, and references to TLS 1.3 have
been updated from RFC 8446 to <xref target="RFC9846"/>, which obsoletes it. Two
section references were adjusted for the renumbering in those
documents: the general TLV format is <xref section="4.2.1" sectionFormat="of" target="RFC9930"/>,
and the Certificate message is <xref section="4.5.1" sectionFormat="of" target="RFC9846"/>. The
channel binding discussion retains the numbering it had in RFC 7170
(<xref section="3.11.4" sectionFormat="of" target="RFC9930"/>).</t>
        </li>
        <li>
          <t>The two TLVs describing a challenge have been named to match
<xref target="RFC9577"/>. The container carrying one complete challenge offer is
the Token-Challenge TLV (Type 1), and the TLV carrying the
serialized TokenChallenge structure is the Challenge TLV (Type 2),
matching the "challenge" parameter of <xref section="2.1.2" sectionFormat="of" target="RFC9577"/>
and the "challenge" key used in -03. Type numbers are unchanged.</t>
        </li>
        <li>
          <t>A packet diagram has been added for the Token-Challenge TLV
(<xref target="tokenchallengefig"/>), matching the diagrams given for the other
TLVs defined by this document.</t>
        </li>
        <li>
          <t>The Terminology entry for "Token Challenge" now defines the
structure rather than describing an action, so that it agrees with
the TLV of the same name.</t>
        </li>
        <li>
          <t>The "Conventions and Definitions" section has been removed. It
contained nothing but a second invocation of the BCP 14 boilerplate,
which caused the key words paragraph to be emitted twice. The
boilerplate in <xref target="terminology"/> now uses the tagged form.</t>
        </li>
        <li>
          <t>A definition of "EAP server identity" has been added to
<xref target="terminology"/>, for the name a certificate asserts for the EAP server
of the first phase. The term is used in <xref target="challengeprocessing"/> and
<xref target="tunnelauth"/>.</t>
        </li>
        <li>
          <t>A definition of "TLV" has been added to <xref target="terminology"/>, and the
acronym is no longer expanded again in the body text.</t>
        </li>
        <li>
          <t>It is now stated explicitly that EAP-PPT reuses only the TEAP TLV
framing, and that the EAP-PPT TLV Type space is independent of the
TEAP TLV Type space (<xref target="tlvformat"/>).</t>
        </li>
        <li>
          <t>The reference to <xref target="RFC9371"/> is now informative rather than
normative, since the document is Informational and is cited only to
identify the IANA "Private Enterprise Numbers" registry.</t>
        </li>
        <li>
          <t>The citation for the TokenChallenge structure has been corrected
from <xref section="2.2.1" sectionFormat="of" target="RFC9577"/> to <xref section="2.1.1" sectionFormat="of" target="RFC9577"/>.
Section 2.2.1 defines the Token structure and remains cited for the
Token TLV.</t>
        </li>
        <li>
          <t>An anchor has been added to the Remediation section so that it can
be cross-referenced.</t>
        </li>
        <li>
          <t>Occurrences of "peer", "server" and "authenticator" in running prose
have been lowercased, consistent with <xref target="RFC3748"/> and <xref target="RFC9930"/>
and with the definitions in <xref target="terminology"/>. Capitalized forms are
retained in the architecture diagram, in the reference to the term
"Server" defined in <xref target="RFC9576"/>, in section headings, and in proper
terms such as Network Access Server. The forms "EAP-Server" and
"EAP-Peer", which appeared in a few places and nowhere else in the
EAP literature, have been replaced by "EAP server" and "EAP-PPT
peer".</t>
        </li>
        <li>
          <t>The Privacy Pass roles Issuer, Attester and Origin are now
capitalized consistently, as they are in <xref target="RFC9576"/>. Eight
occurrences were lowercase, two of them in a paragraph of the public
use case discussion whose third sentence already capitalized
"Issuer". That paragraph now also says "TokenChallenge structure",
matching every other reference to the structure in this document, and
states that the key material required is that of each Issuer named in
a TokenChallenge structure, rather than of "the issuers specified in
the TokenChallenge"; a single TokenChallenge names one Issuer.</t>
        </li>
        <li>
          <t>A number of typographical and grammatical errors carried over from
earlier versions have been corrected, and spellings have been made
consistent.</t>
        </li>
      </ul>
    </section>
    <section removeInRFC="true" anchor="changes-since-02">
      <name>Changes Since -02</name>
      <t>Substantive changes:</t>
      <ul spacing="normal">
        <li>
          <t>Vendor-specific error codes are no longer allocated from a reserved
range of the "code" key. The 81-100 "Vendor Specific Errors" range
defined in -02 has been removed and replaced by the optional
"enterprise-number" key (<xref target="ianaenterprise"/>), which scopes a "code"
value to the sending vendor's IANA-assigned Private Enterprise
Number. A peer that does not recognize an enterprise-scoped code
<bcp14>MUST</bcp14> treat the condition as fatal and <bcp14>MUST NOT</bcp14> reuse the token.</t>
        </li>
        <li>
          <t>The globally scoped error code space has been redefined: 0 is
Reserved, 1-191 is allocated on a Specification Required basis, and
192-255 is Reserved. In -02 the space was 1-100, of which 9-80 was
Reserved and 81-100 was for vendor use.</t>
        </li>
        <li>
          <t>The value of the "code" key <bcp14>MUST</bcp14> now be in the range 0-255. No
bound was stated in -02.</t>
        </li>
        <li>
          <t>The IANA Considerations section now fully specifies the requested
"EAP-PPT Error Codes" registry, including the registry group, entry
fields, registration procedures, initial contents, and guidance for
the Designated Expert (<xref target="iana"/>).</t>
        </li>
      </ul>
      <t>Editorial changes:</t>
      <ul spacing="normal">
        <li>
          <t>Corrected a malformed cross-reference in the OpenRoaming deployment
discussion, clarified that "session-timeout" is expressed in
seconds, and fixed a number of typographical errors.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y9637cRpIn+j2fAkN/MDlTVUNSpK7j6aUleZvblqwVZffM
6e2fF6wCSbSqgFoARYkjqZ/lPMt5shPXzMgEwIvknm7vNLd3LBYLibxExj3+
MZ1OXVd2y+Jx9vx9V1RtebossqNNd1FUXTnPu7KusldN3dXzepltPz96tZP9
2JbVOXxYXubzq+xV3rbZm/ptUbn89LQpLmGko1fTV6/euEU9r/IVDL1o8rNu
Whbd2bRYbaZFvp6u191098DBG4rzurl6nLXdwrWb01XZtvDO7moNzx0/f/Od
c+W6eZx1zabt9nd3H+3uu7fF1bu6WTx2WTbNjquuaKqimz7Dl9BH8H76b17V
1dWq3rT8Gyyqbsr/oDXRJ9ESOlqCa7u8WvycL+sK3n9VtG5dPs7+AMufZG3d
dE1x1sK/rlb4jz86x4M+dlMYMMvONsslr/hV3hTtRXaSv8urjv5WN+d5JW9/
nB2t17DPx9V8Rn8sVnm5fJyt6amfW3rqv+X4ndm8XvVG/zZvuuzbpqzmb1d5
NTD807Kd19nJVdsVq9a+AU6Invpvc/wGDe7K6qxuVvDkZYFb+gq27zE9I4SB
x1/Mu2JxKxLBx3focd2bjH6m8l+a6uPsRTlv6rY+67KndbOuGz2VLFsASTzO
/semKrL93f09+Oz4+fPn04e7+7O9vWhiW/iH7ARPLG8WGawCdlTWAnOCSV9U
9bI+v8reFMsC1rraVDLhFohjkZXm28X7+UVenRfZadG9K4oKDpl2L/u+nudL
+vqq6Jp6XS9LeGMGR5VnQHdAiW/b6cm6mJdn5Txriv+zKZtiBXvTIonhScG0
s9/Dh8sC6Oz7o5fZi2JRblbZ0XyOnzwFcm9w614cPd2hF726uGpLfOv3+VXR
wJ7+9t93Mn0Fz3/L7NV3xWmzyZsr3a9065locLOizfy3mzYzrPyFXfkRrvyl
rnz6Cq7F9Nu8BfqQD5OFjU119/qpuukULu1p2zX5vHPuzUXZZsBRNri12aJo
5015WrS3ockNMizXv+3Ez5BT7WQ/FQ2ynWxvlr25KLK1PtrypgMf2LRFVp9l
8IYBvkHbNV+WOLU8nsW7srsoK+JJOSygOCurAikve/3d03sPDh7O4uFgkTm8
nj9ZAzsomkucfTLqqkBqLdsVLK7g04r42yQLL3P8skeHD+7PlDdnK2CnQOrZ
umjwDsAYdbW8wnnlWbepqmI5PaUzhQeQ8C/qxYyPZFUuFsvCua+Q9Tb1YjOn
GX34qjS/fkoPzG/kreWM47dOdMqT7N1FOb/ABbdjR4CTXRdFk2zXk6wtiuzD
h9/INnz6RN9e1U0R8YD8tN50EaGEDXvx48kb3DDa7xIWsCjgalz1NkumDYSS
d1lR5bDOFl4/38C7IhbkGU1OU6Z7ljs8b/jl9IqpNnvT5FUL/LETXnCCI5Xd
Vbb95vuTHb9l7sOHf8DFPTyAxTENj5yiX0ieybvMXsE3YVh5lCgCDr2/1y1y
v2xTLcvqLS7QDlE3La99nle6X66rgzAGKlNSxUnIrbGHMxs4Xn4lKAcbmCMM
R1sGu8Rnf4yfw4t5z3L+IK/mRaCpP/DwD/84oZ2G+YIIBwKY8FBNMS9AALZ0
wXlQoAW88af4dfivEMLMHemc13ULtEivbDdAmbk8iHcYd6WrHTCSy4L3o+yy
d7n/S3Ze0EeyIlhJzjoO/MKrmRDrwEnky2X9Dt8Cc3MgRq7w36ArABU0xaIo
VvI3mdfXnr3hZz805XlZ7eAr8bgcTgPGpe+Xuktn8IIZXuk3RQOjsdD88FUX
fqMLXWSgemWoe7XZFtLR1oT/m738gf79+vn//PH49fNn+O+T3x59/73/h5Nv
nPz2hx+/fxb+FZ58+sOLF89fPuOH4dMs+shtvTj69y0+u60fXr05/uHl0fdb
yK+6iM8glcBST/Fiw/SBg+KO5q1TiUG899unr/6//3fvIONbs7+39whYAv/y
cO/BAfzyDuiZ30Z8kX+FPbtyoJYVeUOccrkEKl+DUFy2xHDbi/pdlSFlwWb+
4x9wZ/74OPuX0/l67+Bf5QNccPSh7ln0Ie1Z/5Pew7yJAx8NvMbvZvR5stPx
fI/+Pfpd9918+C+/Aaoqsunew9/8q3PuBd4DEZOGevrnVEaykLcexSHefueO
FosSeSSoHzgKX379/mkB1PrYuZdHx4/d41TpOF4gIwJJ08ioDw4P9j8h+X7/
E379DVgW0++L6ry7mP6ULzfFLDtC5STP6tM/gZoLTBqYe9vhnYKFwK2EB+DD
BXCKPFvSgxNHzDq75OdVRMzzpimFhcAoHemAMEYJ/1nB3PJz+COQCczE8cuA
bJhl4SPwccayyGwNMHZg+SQvDmagtOF4xOkf3dv99EkFW7e85Cdh+5zT+SBj
oyXjzuM+4q57fQFfiVsFXAQULOKbrRegMxc9VC6Yuy/xbtGHT5kFDk50Hydp
2HmYEUucz5gTP3jjrE5Yot1+VioDeajuCqd2RFoovBn+1pmJma+j4MFDhi+w
Sl4gLyd1Dc7cLUBEy6GelQ0oWusLkMIzOCjQ2pZIQwUIhjnLDmA2QTkiFcfZ
ceHjJbBbFCSocpTdoETGef84Io974jiLxbEbFMf/wDv1gNWJkjTTNel3xE9R
yIJsWoO+hBSugsQrzn6Ah7TV5CDInurqeZtx9TBZvye6gSIPqywmm0l6NXlU
P2gGpgJon6hobZtjn+2ZW0MLIiNr4uo1s5jlFXF2Ebsk4kRDUF21rpBr8HXH
DRdNFMWxl/gsdECBrBaz7ClxggWr0zTLaZgmXn+YID3p1w43GCbmd+o1yPUV
zY+2qqLrgDrjlbxblEYlOfh9QCXGc07uXlaGbVXdaAb3BrlI2LL9eMNgWsdy
QZQQG5mXfMoaTgv6CCirot2rUWI0fBi1qBZTIEK8pJclXAHntZH1pgGNiqys
c9B6O7lCK1g7cXZcjVrc+KJ608wL0lpe1B2sXcyQlf/lE19xItxiUYMwglGX
V7HJFM8OZ8a+AZ1e15C6BS//U03HKTOYZcedKPbEruCRQiybcomfgGaQ0z/R
elzlb4FygEfAudXrzRIUiPlFDS/A8yhX6yV5DEiTZFNB18lrn+lC6spboau6
JZZzVjQNXskRAzFwVydDv7OuCNlblkJ/MJ6WP2at+AIm9MQCv+7Gvv5vf6Qd
+Klsug3wY6JFYF4qm7d/evVyJ10LaE11OIvBdfNfus2CaRzecA43EDgsnsQ8
hztS5hNj3D04fHSPyPUH2KfzGmYCm6XWNF/SNXuzYN8XJRAyzPbr1rN/egWY
xC3yBWdNw7OmXmVFDhbCoqnX+JUJa5hgOpc5iX18FsyIcl2SECCVJywosv1m
eHWiGegkV/kVmgYOvg4zXZW4Pah8phuD+9d1yCPgC3wcuK3EmEedBWwYXsJ0
gfHrK6et+q66i6bIYeasbBl1ObCGw5kXo/cfPeC9Bt5IQhgU46bO5xdFG/kj
cGosVdBzSnYSqkhNvTnnew8k4EjTgl1d5RVph3oeRBgN3kTPeGB7qqIhW3Xd
FptF7b89oZlXdeeXdgYHUy3gysMGzQvS39maEm5IFIEOprc6RaDwBsy6jAy7
4CeEg2YO3Io0XBVgl/fm1k5cmTJKWDUc07K+on/iguDm18t/BmLAGRDVLYA3
lejpQvPZoajmSZGR5smknbERpoRNGnVr3YIJjeeWyJiEUWZdc5x42uvN6RKo
gTga21BAhfDPy7KpK3JszlxQeUmrWBawFFBvBzxRGTsgaqBKVTmmczRbYZeQ
aMbYVlCrO+KduVuUZ8DryMgTSnuMjpiuyMk+R+2bWLXXgoCBAQ/Sz6PrDJsk
FBBocpj8mMZg4hOnynGQukN+ChKFeDeBPSN1ke4UXo06LDxtvRp+YzLhGTB4
K16DPDsHMqlEoMN2I3mfFg4XyZpcZ/2VuB+kiMFIqqTknTyN7gegM9x30PrY
8wAkZXU9o4riuMnpAOWCnBJ2Y9cualCNCsZv37x5NYsUSGBqJRrRtOMkj2Ah
LWm7BS5fxbuDbe2akkINcrNadaibTTJ+Vk9loMLgDY/Xcrap5uLs73g56/VS
17IkdxrxHWGtJH07uHYTdJL8adN2vBH4hWLBX/Ub7XXqGomST61clSDYnb42
JzVArQdgOvA9emug7Ynxv6pPMRMf4HTcL4evbM2OJLIBiMKxyMY77MW9Bit4
N1DTiudEOxgcxOwtdMLG4NgqWB3ywfTSTlCvic0LkGBwtOxoYpVw0XPKesag
DAcV77Y8r3JU4dvgFniw/wg9tmuvrbroc/KYo7is6e7CMR2/AmUiaBayxXi8
qw2pJ+lMiNXB0cM02gv2IC6IaDv4//i797oetW09L3ORBL2JvIOdUgUTTsEr
drAJoJZ6UgdtyIsOWKa7meNi9DFLmK6+RU3DwGDtC4gcRLihHg+3eLNa5c2V
d6xn/ohzeMtyw/oObJwnGCL2d7A3OBZRn7uO+HpK9EQlkqj0ZaMSegKUelES
ry6XS1gV7b64SINdSmaApxfieOJ7ZbUdLLNyIUyIJkt+V+XF3rHKXFniMszx
5fJFYzuMdM2FB155b4LZEq/KgvFx1MwvSlwcqq8vaiAAZKk5fIrs9KJ+Z7Yo
fBWocIXf1bAFu5bdn//8Z/dPU//zTxwVu+sn7mPmfz5G/7n1JzTEKxR28Mu/
4Kj/Cp9wwGZqPiGtM/oOLiYM0XuDOiXCJ+K0MZ8gUV4zxG0+8YP+EtuJp/Lh
cfYVnh/HS7/Z0stzFJ0pnf+WOMtJiUAyWhRrlmrE04Q0UPIv63NSnf03mfGg
4uHwPyjs53UjLJS1lnWOyq+1K5jzAT/6Dva1eJ8j1yGXhvVw4ciJK2BVnl90
EgpiVwyrPU/o2diHJI/f/CiLOxdkr5ir0XATM9ZkdGrulEJmp+LLI/tf3rbW
CDlzmHTpbJG42J6FUwAtnCPz62XO9kDiKkO7slJWtgaDv3PbmPPCTCrPXh89
O/7xxM8y92o+e3BJPku47QULUFicS2SqPG1PDsklP8VYEViT502+yoAdbsgi
YDbkUI1XdreEr8KRrGpglp50yDmhBAWKbCWHziwI/g+p0KhgnW5Iw6L8hnCS
6FwjB1qxeIJfL/hs5iQxNRnCn4vkm8A4Xi2nYOFXIeIGv3yV/XCJYqh459zR
aESy3awxwtmm6iZqw+9qdp7CH89AMjq2iEiHpSG8Xwr1RGDu/yweqMIndMyy
4yp1xZKGR4HknBQrGz3N4KlFewFGhxWuSBWRPgbaivM5IzlfTq9DiKbIWTO8
bD5jb0LQyRAdOBZSFB6uzsrzTaMRThJOLO2Kouet8kY/5VppsJxCTGEeHFfw
mqNGFAfGm1lmoYEqtEQW2dPgjn7Nu6x2Bw4t6jj7vJ1+6jdxwu6LoRVQDKgl
RXVoMWLtmulr6Nqvj13RarOYUNKjg32wACRlwIkNwTbN+QaVNOApxJrk63uP
duHk2Yd7VqOHAEyjLH6985HziBC8q9rf67BdM1AY1YLBb7oxvzS9H9WkYgq7
1jB9pfvlTwXsP1L+gP6KdUcqBKxuww5jjJ7bUdpou06v1LXhwiPZi6N/V40S
7WEOhMkZq1FGzJw2WHQ3STRw6/btz4uL4ue3HB72lwL1mzhtIp4o6bRM/DwX
MvtYp2sKVL3JkfQO05FAoW+KOYgXZaWLGs6PXD0YZeyYRXoGH3xavEWk5POp
9k/hXnwKQnbwRhS5xC4GZBgncJzjHIkxpTetbJ3ZdvT3XVmWR8s+2yzPgM23
ss0mccxTtKMNJ//MfQyl4J2ZY8hgcU2WzhHfNmGr5mIl9xrjkqirU7iLZDwo
Hmi4udQVguFU751gPkoMbHPaIkOA7+EbXgvr/Wdlyk6jnrPhv2tUlOeFIVM4
dA64I7/1JsbLo+PMsb4ehSkO9OQ4xosTrBt0EQLpNsDnehKeSYtYmFPyJvl3
dHQkMs5EK4euX5QyJSY7u2yIl4/a7Mkd7MYTdGACz0L8cHguE/POED9rg6yg
1BNyUg1GhnwOjCa/kH7ZssGeD7h2ZtmPa7xD6CxD3QhIN4N3B8ejxvx5dCZo
DWHBH11IqyGuX9Bl92MFZ19RYahdYuh+YROnYh1sSeQVSwkHFE2DCUccVM+u
Daq7KN/ARsyJz0dr9pHEVoL6dGj+LFhWXxZXpP4AY+owhujTdaorl9sEhvcd
LwvmBFK2mudrWIDftkQ5FONeLq/KF59n5lJyAfY+O5/ZJF3404cPmIaLEsWr
pEkimfMuDfz+9hvKJmNOc7j/cA8fxT98tyzeD6XqXZY5j6BKL+43pVN+d3Ty
Rkc6eHi4h5YOHBR/yyT/udHkvzeUZS6CmdIcMKCTBGsHop0oxCimRB5fjcah
1Mow3voPx9NnM5OJLlJsDQOQq23K3s1peA4jxXio9jRh03PKFkGn2mVeeTEZ
GzAU4BF7hDyHlfPjiu+w3iwXIhnxNpm4bKkrKt6vy0YuPEUwnHiN0fA49elw
cmuXJQhC+HVZnhVduSpCWI3147wlp9URTkXHDbsk2pgN+vwm7Bic1AKUgLcw
RLRxYaSwb3ReoPqfBFYRnzX5R+ATuf/eTZJHWwaEXs4nluHEPDBo32HrYHXs
6cV4ymqzCj4uUvbRmmgwQg8KzZo8zpZfcwam9TlxKgzqcChZyKVJeh4RCqZ8
VSHc07M/VLat87LhJJcNkq/XjxYsSGfuaFCD5WSozNo76btwVFCBVL1dMFcX
Xe6UDohHtN72Pq0iyyFpARoYv0/eg6oE6Tb1qTpC7Z8ng2OpFdk6Fvm8K/AN
kwGhWyOE2xbktu3iHJHWsY2EcqnsXTM+mRtf4aw8GXlPIj0wecRIhx2KJkt+
qOpS175z0puoW9Y1+92LHD1I8QTo1Pgbm3UI7bebElWGYiDbB0zas+gF5pYA
hYGYW7Q9LulENpedOaRYLxs+JdHLNAF1TJsYOylN3brFm+xh+XtE3DbOmhs4
ojd9UmT9xA9H+b2LIcHBeu0tJgisgO5DpAZx4VBI2Bm8Frw5+KFwxV5SXDzd
gVlKbnNGmWNgbRdODYEkY+iGTJ5hF/MNPzd4l2/4SRzLuvBbPx0ewHeLV/r2
7w6+4C+b+Zft2h3eGs1g6EHLg7wxNfLgv0zv+DP4xs+e6uc8OGwsbv8IN+Vr
sgZ3kgfvusR//auvcVyKbAezZ8c++Gs/x2SVxLV+Xef4hdf5o3Dqz3z7Ryn2
AI7/eY+Hf/6F1m7E2/AUfk2U7GN+wVBJQ3+jBg4GAMEA+i4vUT4PGz9n8Edv
+WB0JlEHmoJVHe+kQTe6hLiNawWHMblSVt3oKeDP0VkyotaxJ8UmKrll+VY/
RrUs+FvEThS3as9spO+QIkfFHG+GBkfThbW9xU3qdxbVMwRfVVf3mCgvkKyK
vjYX/ihOGtIs/64QfcHM/4soRNO/LUH6d4WIH/xViJH4wb8rRNErSXqBBPhc
hQhEgPzzC/SpL3j7F2hz123dsFjbJiG6Y8b4FV8Es86eiB588G/7Itz0IAVG
gNYxXjL+4K/iHFFdyrxmjBe4lxEXB3Zk3aITvy6oYEZqtZrwG/z5KK34I192
5NqkRE/y1avr8RSUOZwFxnP9X32UZm4K8UywwyfjmJc5fJlmm4daA8WJQAci
VY+F8hN9y4SqqyR0IelGFKdvB93t/B5UdrEcxGGaQanBLUo9W3e2+PEoSdOh
eAEVmpO2rVtYYMiOUxFS56SxFyZudEKcYqgRYAzFjpgLrq/Nk6mAG3yDteC2
uVbLmgg7E0qVrnyyU6Tua7GbbLWTI2YTot0k2z3oe+0tz8nu6o2UDFw1Xb0b
f1GswY6iatMqnoVPL/GZwhRbqAZdv+Wi0OR6b8w5n6Bs8hOo4sQU0/pYxamm
GeLuz5urdVefN/n6AlP9gGYoQ3Te2eD7wBYsYMoLymlz/SBXFlHhsD8dBwk1
sxxqhVUtN1S1cMKZO9M35apAAwvd9ZIw4ln7RI45TW6gGaANvKzlL5oH9K5c
Lh3nXKzKTlJoOcfDlGWHQTDxQy+EFORxqAyLON6J+UyFUJj8whW/FE3BkQaW
QGXmvEYqJ4+Wk41QM3yH8klMLl20Wc7nkaZvzDtJz9ShTaHWA/Xk7z+8f4ih
6VA522ICD1Una44OgyFMj5ibyNv0KkuAJsp8dduYRjBJ0RTEUkRkrd89v9zP
Xmsxx85OzEMpzGVtcz2aEft8WPa7nnneewmR4UY4K+Z0IVU4pReKe8Pbz4qO
iqTh0MMdIhbGRQh4+kdUDUABXmKb7rzoGHPAPMYh9n5Ij0LwIf9piUHZqGLn
746FL5j5fxHHwl9fR/27Y+HvjoW/wXP8lUdaSMJ9/tvLirTcz33cWzmf97i3
nf7u1vi8B/9ruTXGA36/qnP08b5gPlzv1tB1S42z92OInyMBPEKA0ZAsrYbn
h6+8BKJwIMYG/SeUD3QVhQmNV4B0UDDplhLBq9WbKY4RMJrmOarJVcDHUONg
uFYlY2A7TfN3NQEH/owWG4NQqS3uU6nG4JcICy+uehnEvWLlPsA/YR0CLHK2
XnczTQTF8rlT+8lEavG6BH8rYEcNo285X8lASZPTaMi2Nhn5VBqMpSUMYJf3
8KgUpBPnu9BN9csQBFmyRglPhfPQExCovHWbatNSqfP2hw/6bz8KRT5/Txmb
SAlXvQHklNSmwwRTGWMyntj/sob7ymmFU6ZQtHFxjwecBn75HtEO8TLUC0Uo
KN5rkOVYst5yrRfWbnQIpIBWfd7afQy7zEmDaBc7eig5rgDBpUXv5vXZsjiH
165gSDC8/PAZJvl7x53H92AcDDDT8zV/hinpi0uab36OZUYdYgCyG4QANqhO
EmhooyV0YBPPYPNCBQOSGpFNhYhMDMNSdXz0ZI0joqYjvAndFX8oFzUCulU6
2juCYvAH//OiPEeHxbxmfBqC/Lzhwomt+byPZ6cM7puU5lPsNHvbv4nv4CS6
fy4ZKFRiBWBMXKodcAnb6f5uCv/KTeHb2MK/KpkfPXhrS/jXrruN28PDD27f
mjXsZH8dArjzFdEHPyqXutt78UHaDfrljg+uyhbkFgikuz342Wu88yRHH7zG
x3DzG7d7qsdO8o1f+bWSn7+9SK8aNgOGhZo4tzFWxK7RwoQPX2kVOMeKzjbV
Isfi5XyZnW7KJYXNTpf1/G0EwRgVuUlLBRnS2YIS1tlIqR0GtZ0MIM2xfeJC
aVAoj8H+H1QyqiivgsCeR25+igxJ9ajrQ8hHmLak6slgGhJu/XhaveIiYCH9
GzFfs8imAC2uCnBuAq68zeMiWNtlmXNcR2IWO1KQG8qS7Pj87oE6JIQc2dh5
Kiag4stFNUnxcAx86DwQHRaZacBdq1RRGQ54rkUzNZi6GKgfw68TtOyoitiH
7jDOF8/EOYnYxQHEvA1pAQitz+G2lv+d5aGkiHBxw1ppE9L6TUaapvcKovop
AfN1XJ9eM8ge6OaCzEvoNH7MJzSlNgtg7Fxyr/WbNVXiIXwcjDNxBUL8lWeM
NyXqPtixjFZHAWqwpPGGweuD03qk7EnORNCvwn6iWRuSF7gIHUtBuWxYTgrP
/ULs33wJq1tgpankEJBLVOOuAZeIcD9i+pllL3yHEkJRwRV2YCtskP+3Pq5+
pjuC2LaMJd3O63XRL4wmoEIPhR5jeWdgr803CAhmQH4YX4vcGQtEk1giYi/i
Mhi0e0Erg5NLn+PNO9/kiERcFAEZfSqoRY43bKqfsz2r93NqbDFlYQQLbDam
5bQRjIjPcTPAlJwCm1luWjaoC+1AMbYjWQz1rgF6PiFm6fmc8OxOCVS2Ywi8
ZVeulwpA6QznC/BKKTfwlqa7AVlbscJXkt+gjJ9gRwi5SkFiKFLrMxxCJwrP
kKK/hwyWWa8UPIoK5wRvmzMviaroPD+navDfXFMNfor6WbGY8g5hqF2kBV/b
aN/w0OcIeovocsh+YNoCLZ/g/HAiAHEBg2wx1rygddtgc7Q7MZR5AnixcyMk
hxvF3OCiAdm8cVgQ0P6dxwXpQaTSTP0s/Ctee5HxXS29S5xtxsDsuc2Sm1gL
kIt5ezkrZnzKsBuw59l/A5a0XO1w3hdPylezUq2/ornmsCnvCVlIx6IEhwBc
KCMxErUA/rysuyKwTYQdCd1yfnzz3fQh3gRqxxTaVwiaB4J2rdj9MVh/ySsP
4B4RSFJ8jgxRlRwPE44zWExDlRxVbZ2ibVqdEXWTODS3l5CvJiiCBsCego/R
u6KAjSFVCPZT9EqFcUHwYSUIfyiVo0Z0Wb5YgPBoe7144iYh8NlpuVDE1xS1
U/y8tsMCKAadhZVCwDwG0sjO8hZhOGF2FeZKmWv1wPbV4LL7HYcM6wIBOHyB
DGFdWSckF+QGxCLFNUp5pCeBw/29+3hpx9pD6IG7gOpfmYvGhEkgvsx7UKqW
3FFJiFAR9RDZgNHBo2wqCxL1+wvTeoq/23IYgXAACBfNp9VsTJOjaEqldCdq
08ACjARSF3aB1PGvUcdF/DpfHa4o+j2pHtC7Mg/bhY12wtitoLQzfLfTAzZw
VigAYfo9aB0C2uNGBbkFXMJhAlYrKTcK3n/FJFp2wc9Zny5L1JB9xhnKnbIT
/dgTr+JmBad4JKwJkMKCYfFNqNvCwyAzdDH3DVsDzaER5LXrePqezKk/yI9s
WPWP3bMzxQpR/XvTMLB2gLfFPbEHFcPX0TiKUJdTa8qEowUid5Fbn1KtOKSB
WVbxGyPSiDEdgXX4t6P1gWymrDaFoVmcgMdtN++PM7N4V1vONcwltqHdbBiS
t/XT8lvkyKtvgSHVWBnqqhABT1KcYAh0zUKjiVER0vkS+M1W9W6JyyEmIw8Z
XaF7Y1eIcdYinDqDnpabBLr526KzjCBBHaxokR3BkiDEpGDjJV9Dil1S6y2b
vp1iTJcyLxrJpRBXecxuA6L5UA1ksdDYzRXFKnO/EnwBr6WNJiMBqGhLFNWb
YkAFB5YGQcQYWp77Q/F7OM2zFRCVkUWBobIQUFfeHyuHrDym09shLLeA7KRt
NQN6/vYrbBkqXhVEXrKy595sP8D7MxQTaztE+tMlhZQMFD+LF4QlotLPd4hB
zc0S8oSr87YwA6TeFSiu5ng9bO8EQ+vtbASUgqkUA5D27ykVg3EGkjsXPDdx
G+UZLJ5ZPZ6g4qziLjCXRHawN7sn0V2OVoKmUpmIFeFs08UyWGzOgmtJF0Ye
ilqFBUORNgwDgDCrJbdFIdcKzMshZLx0lyi4+V8+KM5hWsHBFbeeYBSl3xVX
2bOi0f42SLNPbQZ49m3JtvSHr94WVwv/zU/BOPTrpb8SSiNZgojmDgdPdrG0
dkKs6pK0apjri5PfwWMNpcvDv/2F8aIygaVsChJByfBk5epUOhto7yPByv3j
Nmokyo4GAVtwl08LEI2NIeBZ9luk1bSIxHlgFfROcU5/G3vksMUbhYAJhx3L
TOgRxiGHv3GPCFT6v4XDWmSvT44krY67w+2+393d3QejBCYmb1sYDDpxrfDo
2L2a3sUtcsZehuTy0w+vXn/Xf9EevcglL0IXm99yb8KktQiICtp6JUJ8GJFj
8wk/HA2H8W3GE9WepWZZw9kDTCxIdF5jiaGbjitPalQog0TqIkjBsrqsl5fc
qBROuQurYqUVU+opli4qWpWdgkHoGOzKfw2kBNmHZJvEqPHqBG2RoFmHRpA8
LDSgfiGg0r0GQrUAmt5UMYCOFMuXKfa3yXk3wNgmSWUJ0r943i7EN4aWOBb6
oFPEqfAzt7gN1S/oikO7Rl+ALHlFvWfxk//+5qmLJM39xN5RZ7Rn/HoJ81RC
OL+zulnw8pzOkRya3sWM584LTIbm+bcOdo3WACYxfiJEHLMO9QYZ1W4AStON
8ROSZixwGSoO94rBWOmSSc0EdpdRwHJW6/IueiX1gydBglYvt15F0iuTchVE
UpMNIIvgdaEIrNIgll/ITQ3pnNIVs/zl3oMM9gQqmjZYM5QS8G8ZoBp28Ttx
zJL6yHB/Af/Ofx/1ZqkxwcYQVpS4UxYls0TCyMfxVZLWChH6O6KFFzj7cP3U
WyypVUgO+pHHr3wPGnQnOIbYDq1zN1jnwSaLuTlrpDyu8wvlkg7LQ3I5QrlS
Q+lJqgXKaSLHHiMy33gopCrJFYC7QQMg5CBDMeetNyXPBHHXTpqnJxckkwvy
hCToG1ZTbVHQ/X5DUDbTGCGVHL+lOtqxZQzodV23LHw3DukTDuvUJmxIpXZC
bew0uje7PztM3/jM4Oqj2sNtO9tNk3PJGxOuUyDcasHmU8oSmU8KQiHRsBDV
RX5JtMoohIjcfqr+SOrC9SRDr3k9z7W9iNXoe9JH3feUoohN2WBCHrkkZIhN
qGWLluip71rAO+MaPL/JzG1oZsToTvEklqXE/9QhMvOdlKOLjwY8fXeoOost
JRU9tKWKqTtMlBMhogQf/Uy7gSp/RHRTUW5T8PQQQvXlguFeP4k8IoiFj39B
TZa11qcXOZ12UE7n/InsFaW6Cqw1a/hnhMgu39ItbX1Xd76qLSkE+Kot7oL9
8uhky2sg8pk2XtvCf4EIXHlAYAHPa1vbHst4Nc5JLvU6wmt+J7aAg11t4VDa
YP1HHeAo3bV/fHKmR4mFe2TD1xJAms+BWxAlbx8dHe1oNyjTT0DYpM6810GN
Y0MUhzG+OW02ULO+eTVMZL7MNEu6pQWpL1aLk2asaAiFhuLmIZ+1KEK8bPs+
jXfFcon/denDLXwBiVe2P322j55IrbhCcarGjhN6GloVhUkCA+oDPEZA1sZq
oGCw2N5RXowbAI5MpkuW4kAmFl1mvTSKYUrOGOm7wJR405riFAgTf3IURrjl
i2/cDIPqjbR7yuypleDuQE11kpbhAxvuujUNbfHYjCkiH6L8t1xomFaYkdnp
6dCs8qSBedCtvfeCeZvQ6m32G4PgQsNJZCRNPafq07flGtmwzy42Yo9yISR8
7y9icsmcNuG0/g6vjJ1G7+U2uzLN7xhPndKBcnJ+6Se6jdHHbD6iHUOd2yVZ
2e0OZCvtDXy2P/DZPfj/MMAe/PFedpAdZvezB9nD7FF2l8/cP02/8P9Jau9T
xDvQ/CzTfz7J1+Km80l21i81B2pQrXPIspPNaSefxDljz7Cyy/58+QwGzudO
P6H25gLoFUVMXHjzW/oU889wozkRDo6Pm4lIKtW+9hbxCUL+GOSBNz5ATWfD
FS3aURnkKiukeUkqb0YpmugE4Id99wEt96HXgiU5PKx49uVhD/eN4QzEf1Zm
vuZbQqDd2tlmflFzpJafle8LR+MHYHVMSmZlQlt+VYh0TqvSBrYLic6Smmaf
rs+CDsTz4bwp1aVxzydmiRN510TfTi4roTfmWkRj3Ld+Bt/CBsG6F4cPuEsA
nOuOfOTkWflVmUzLn7Y9Rit/+AT0gC+Sx/6foqk9VkvUC8LADIZx5KmBPhAW
itD0fqCD8HKx0dkmwO2aWxEg8GURH77S9cC0P9rrGX4+giUVcBXHfz66j4+H
k0SHPx5IJv04yGlhBkdZnNhrcvDSP8hVw8GGWLQfjKsfk4H0QzPIvRtmFEnM
/rySP/uBka/I3vfxO/lItF/fU8Wt0eNhGg79TMV5r46DkI4lZOHkBjWFRvBT
Mc4PWhpDi9cn4UlRV7hA6HfwPcWZS8RxKY/pQfNVdxkxyv5KJoHXoDId8JK6
EcIXxJMwHy2YkgzA1bpuuf5r0Mb0Oll0M2BJ4V3enkA7Mh2k8IxrYQvdUPFZ
4+zYQ/oCtEZWMjhwuUuALkN/2aO+b/A7hqmXyhMi8NJN9bYCVQXYAt3h3u5j
nAN0qKK5ZvfNTvouPGKw2ZN9gzz6zI6TJBWZVBjHPU2qOqYdyr6QuIyfDOqG
UYGcWGqOY8xn0RDerxjWiduLidcLigzYDUEPqGNjsksH8guV0Bq5PiioIWdo
MrTttjGjxJFEW/zwVeDJziV3rJXmLh01kZW04ZbzvTjvjXGT7Mz6RFwn2cMs
Vj3755dzXN60/SlbqSHFBou+AZ7/um0Ti846F5kFB31fnXgxIzQvWDorQUh9
wZdP5iIdH770rMlX7I/lNxJ7iZFycF4kdtt1zhkNcArkLDVp1uRS1G9m9E2l
JW46XgHtNeXcsdfahBGrujN+OsJJ4uiL79Lcipr/RVr+l6r4v4R2/eLj66BB
+80yAsr8/EU1/JGfn/BsZrPZL/AeVcM9EaYCM9xSFJkv3GPMAlygQ+aKOO32
Hv5nR5LLPNMlZqDchT3cQkqgRRGfwab1C3+haIeJ2zJMHv0Bbvaybq21XKNq
n5RFTwb6QUYsPZraLnzdZWOTu35qZH3rx+iBzEJKUihyF9aKvcQXFs2O3Q7O
vYY9fF2Q0b4I26fWgE4zpPfRKNZgKM8r9JTB2+U7fjHoZ1Yu8Bhk7t7BFM9o
U2GPdW6oW5wXlLCqvYRPr6jYYGFUHdNHDXV5ojZWWnL2uQcHX5Ftpeyn3YL5
nGPT2St4WDDNyrzK6TAkjoOD4XaDwDAJVwl3IhbUwiAFMaW8S/0uAww2GEq0
/vt3Wf95qKphcwndXRn9TnugplYlZtasb4Z5OlLcNxR9GciHTaO2WT2fb9Zl
SCJ+McleT8KicXfskC3PYNUWy0tM4D7Sv8KydyMjT4Q6jqSRXNAdmFc4R/+F
TcEpM29XiQCnnB13rZGslGqp4Hu8Fa0YQF4T9fPXmQ9dQzhyNoA+CWVaDVhT
Adb5Am21Ct3DSz6njoOupxhEy5urJ5Sa+pPT5pu8ULbgy5Vgd2ATJM085zPE
7F/+klaJoVtswck9sOij5ZJLI6YylFCHmADGAo31Mpz8IAWRXvNVuAms16gJ
6LeDCiI/faIS+Tbaw3FlkNuuytGDrN2sKg5diO83Pi0922GyRWuUaO1j9hJl
ee/nY5Bq3vAcMzTN597G/NhDrtBxqVADFURvQn7M0m/pd/em9w8P7x1yCe09
Oy7mR13z3QP+7LliIk15a/W7+/TdA/7uoRl3YB+ice8n47bXfPcBf9YH3+DP
vYqE330o46J9PA2ORT+u/e4j+93UdwDj2jns7dJnKeCkjntgx93bo89+AmkD
A58I1qnY7LJN/rv7em7WAJ+ymzHaB9EsPNEPKRdvrDluCRZomDwwAskZ+XTU
flPvckpv23s7JACkMIGCRRKxl/vWatydh0rqoFxm6/pYhtEf/KdqLZp37vM7
xxA7et6oa8uqJt4g126jfplI/tv3doSZR5lmlMOF1ggmTIYQnZZBqaZubGyv
RORzSjmvaJPC9GGrJmrJakdT06tYHid7PnnJ4ArSS7l9wJtmDbl94cf+u0Yb
uGYTOQbzGR0/mbd6VT6U/2B13n+gk9EX0OHs9Byy7UNz4GPnHCfB9k4ZCe2a
XYINuk8vqSzbuQ1JffZu+GNDaR+m1Odk2w9wZs9Xa6xwPO4rIoIxrNlYVKlX
Xaks7qnxlCWjcSu9cwMYSbg9gVNuP+Qz2BOa6al6Bp66r7MyAC1Hc4zeqm+P
utroay3T3X6Eb//tZpVXUwy8EY/jojFsAUzFZdnLH7+fhnwjGCdlyNt7u7yI
g5FFPOHKyLKSDuUowoc59fbenpAL4mI1a0x2nlIt6cLshK7vksaAzw0z67P0
7T1ibE+TcK32aLx1RPQrhUibRtwFlaQeZ2VpMPRtygMObN1rr1ZyiPOrdZTw
OeYjYkJVP++YIJjHZqZx20STPivPfafFX73/Y+/jrvc/eMPkG7+G2DfRd4D8
5fwfMSls07z2U1CRv9wcgvgNr78HFq0G8P/ic0ilZ5jGwcg0fok5eB9RSvER
lkh8T4cUOrm17WPn/hGLvFCyUCx25Fi9/sI+ffUtPcHHMdaAHXPx8eFjGXl8
V9Kk0J7MtHFyHYDmFyazkbsnc9UhuT9IhcXMnA4E5KVa9wbwQnLOKizjn9Zn
01O0pVda/f+EnEbJ7K870zBX5HuY+QjDY0oO+oXhzQwfIROYxIk2uST9mGwg
yqqMJweD5OdN4WsKkbuzrhdal9chAYrqRtS7wKsf1NLGihHKVsN4EX4J+jhq
6mBNabNdDZw0G+jXgYfYmjNVp35/C3FdoNA2C0HKxNAQNW64ClAJmtAsvih9
t6xL5okplgMrnGUe7D/UUKnvkhO/aVGhVXLtv4PAL1YvuY8VYUlDAQERgfWK
B4oXzL5VKm7inGYqK62UMC/qSoJoPnmM4ChljD4gZXYTIKXN83cU+2bpr3UU
Ic2Q+jbIDgzvDvc5wVE4Mf52u/MAA74P7Y7wfqDpUcqVVmq5iSpMVLZ4j9Er
LRvRVKtMpk3Fyz7rjQknlLdQVAaYg+yMcRMT9GWNUyvUlVxjZiZ5oJO4pK8m
DgWInBF85QFds4gobyBJCfJS7dmghn2r89Zl1VwsWsb++nZsZxUEhIJyqJPm
S5/jekY6dqecDHdvoockcEdZs6Go4VA0dkgL9HFZjzyQVbwzA9+eObL3a0/I
GdVck/+NE04vKb9jLETsepPyyumQmW/6D1FcPpq4UDFzYocGJhLZVdZD3tUs
AjhMlp7ypFlwvlInbpIZy45p+jsfCDtfPDSDyWOmsqwQ58a+K5pFrvAw2vfG
ID5MUEeeF764xWM9OLAFzsnu4DZKLSe6V5vVKXIIuuICdY45CIKiItwYkxoL
5hmFszi/7wpqxlQVBNhxJCurok0zkXptT4N1OBOnoRywU3Iw4zMumV9x4v3p
VeqFSS10qc9yInwNnNmNMwlHBaxxAWTBh+r8F05JGh+/UmgMoMgOb8NsqC8W
kcK6Xm+WZGb33ngqCel4Lwtt6lRZgFi7pQY/BHN9ySQ6WnbkDw6inwfp3LLI
RVtZvDzB70gUp8vCX4gG5M9SGW3BYQewpUkpY2t2ZLn0Z2oyNXxJGBWjdVRE
O/2B/izUZCCZhbdS+oviFyBFJJWHY5DVoWLP1AHDIOe1et99aY1LMku4UgM9
LVzxzLUhVLtkD8M0uKKqMzGWh018Npkj011U7dGv+8K+SLCKW4BAzNjkdTzq
ZCBHBgN4waWAPjM0us+SZF/aRD+1/ysNYmsPDxjEYg1/EzzmfyljVE1CfyjZ
S+aywz+/0ByYyCT9eWBMbyx6KlAjcZQ80VTsreJaf1jax5rfBTrb8dHLo2ne
yrdPXhyD3qFwWy+Ags/ZznnFddgDe7f96vlLtKSp7ExkoCjPW6NPGc9hxhVO
j+492CPqN9t1WzflhD6DFxRx4Q9MQ+rHVZxyno8I83A5A96Aj9GGKeOG8NOc
kcac5lXekOH6OgDMSPByzX8Z7NSIfyviRt5xAVAelQ9NsE4KUZrOQScEm8U0
zlpoTFcR4OS1mj5AeCuguRA+xnEERdD63EZR7GlWKO1Rhl0WS3JOU/FnOQfZ
2ZD34aiHaOAD262Yv5KeSfzTJD2qE1m8xgO5o2krhJC/TN51LrKAx5Xrh5iU
SV9LMweHJ01L97VdsodRQgJ5QHFoqrXPSKcv3s8LKQ0RSoJvSXYC562IohPn
4EjmtYzbxE5YrR1BL7iuyPh+7jL/OGnP5zhOJOMmjWvTd6K5TDjBFmOH6Ane
IIKlupsQsxQGeXdRL+3qzeaD4tDk5ZIqaHlPJEOI9o7BjyjxR9BcvDnCvTei
FFHyaZBFxlbFKl/iAMW1+8HokIXNQ2G4O1ggzIbT9LSwwBmJZFMuJMdAE2+5
4YBQhqRr+qQBSlBpyEUScp3uvJrfc0mSxXLTMKGvHPdTxSSYpjV+MEZWzUxK
q6WwyRgECVu7ucRF4HkauGFkGjPDCK6AkYG5x2cR4lHh0ZYW9CZai69WtZTG
6bgaMFiC8bLE8Sr2b+GYFfKfkYP2pnrIJrdTLs+E0Ow1Cw1bsMcookp2F0XT
o3/NFkOTjpLdNo0EhDHgxE4FqiETRnvt/QwZ47kmgUumEN49PLV+ZEyTZKnc
cyor4siYcIpF2a6XuYbkVxgJtdMOuErmfXive+E0FGC/RctdEDR+ZFudz+fD
V8Z0j3O7aTkY0t6gdGwteZbDGYFkFRSL1hE0F9XZkjQRZGKfer47idPy+tmD
Wp2Md84X9jA/g2vGSXbMoMEYS850JOUQBvCljbYQmHMd6O5yopXUSEYZ1sAW
zzYE9urrWxQ2zRMNUOtbfFfxnjulJMSCLtEosdJgBJFXNFztFpgv8mJpV1R2
PjQgiV7ZmPM+G8hdHzip2dCp7GU2qzPufNSTKAPeMzqFgXPVa4z4If2OP5np
0TNUetCPb5Ph6ksfOuBWmIUoTNuzh2CVmukoIK4Hb00mZLINCHTjDvvkYaXX
gc+ptFbavXZ7hrncqIdPa0TUr0Yl3tolj7xaoe0Pwv84UsyQoftMnxyh6xDw
4bwq/wOWvPKJy5z+N/ReF6cDqwtnNFo1ybT05bKs2TMDu+8sUqOKZVWlEXPV
Z0vkpKmCNLr0qb7W456jdtQyihyvVvP1bymkXbzTpqKGsJSGpDkLhvIuK8oE
18QqyvEDLimUe0MZR+zysDw5f8vukQByn5uZ6fQFA8bVCukQrgssbdyfJOZJ
Gw063uPC4bJu+GZUgyYJ7LatetWrBGfD11Op8cg86gWC/FG7qO9waH8l4jFA
JspbbVOKWfbcv8M9Esg2E6MLmMKaq3MqZtTC16twdyzg4mQRmznvKYxUb1gO
EFGaiGE6udUI3OCrfYeBLz1IXjZtn0e6RuDShi7Y4LmoZ3tRU56bhqVa6vne
OdW38jkqFcticV4EWEBeBHNsXEe4etwjzEAyYD0dWEp3PMhJRk0DOCwNs0nB
ZyiqQBVZ8pxCMfQDGqZ7IYdZEqjam3Z5oJeQG6L+6zrIBEY9kF3GLPr6WamY
c/HsbH1mIoIS4BTU4whINBReqZ5f1X4MWgoTeR7AaAX5MPf5jnIrKHe9B/qG
MGL9cB+j16dCWlGiFM8rFGfbc2B0svK8AkbOdhdv+cheiqMnqIy999rWlMb/
7dy3ivGhZpPvJEL8sV+Ok5ya+Nxbwdco5m9bn1TfsuN8SBpz7AuOpzV5gyss
ybspiBl0oxjqPmmXyUavCCNGLiPU4sQV9LzXYq8sPDRvDEUOA7VFALSKwyoa
G5ForehPg/0snYELjyCWtT9k8mauWxzAfkaXSYwPT2Di/kWmm8JGY+FmkaXZ
jGhSBP4cgJ99/a+FdobD0X5BBGv7shalVINm6fJL7XaadjRk/vm0Xq1gWNzD
KIS2ITlVyaUR/twp4J3GOvks6N0RWHuI9u0fUjOLo/TcyMjVgcnPx7q44xeH
21m+OpI4noCm0iM6Bj358uj4NbYgED/xg8OH8NInLh8MJJKWe1G3HfcyuCFQ
yVTv4PcMh/WMDFfvX0sjkV3urTzUq5FnXdYlpWidLblhx7OXJ9KdlfgKNkZo
/Bht6Mcz2jN2NEBO2yeBbyJAF66pdQZG4cUBsriuey3G9vEsLX1hkbSgLNpm
PHZsp2MzC7Ej4tO0ffGzHHRkCrUBRUcASggILEla5NUXdudBpd7VnNIk1l3B
ydQvuSkuWOOUkt9IhTGaOVPQHNCxTQYDSOFc8OoT0L7D0DZEywm4yFcj0VnS
rYHATwrvkXO4tGV+WixneO/WiJpcEwgvtijNjk6eHh9LX4yW/Vu4uirnBESy
thY1epIdbZk5KPR4HE1paCbEWqqI0Z/VqvqVXoPK2Vf27kJyE2Stw/zXMZs5
Pjo86Q1GBYUBKPVw/+EuXawgvVWWYUqAqGv4oIK/6spwAj+aVcp9SZYV0j84
s2iQyHG6lyAFyYXgWzynvFMdgDTM8MIDr3eifoRgONqvNhoeMCO86nRNN+OZ
O0qbyqivy44a+yVNptJAnhL6nM4vog2jLBC+IUObKeykquOVJHX/po0zahII
Dow9FgQIIO23rH4lUTe8mGPNTCFiQc4EhFwOHbbcJFheHhIEUv+PTRCwikiP
F4Ik5h7CqnsNtxCO+5D0yk0IC16gShd8lcVjQ1G7tEFwaDaMUKj02hAZjeRt
/KAzbcGDeKT0EfJi8G/kz4lOsW5cyLr7mby+77tJZoW9tiQTffZHPZqknSE7
flPNsG/mmC5IS/ZRXqPZ6km4oL0P6a2mLTeFm/hN5ZmtfgmVqniq5EQeumOx
WzSY1oxy3fd7jjpO9zSSahPZdp7oe4d6VCsc1vWyPNQKDaW7PcEjHVtbSEoZ
ytTsr4OThPcS5T6ZdZQvOZQlSRFEgnr2eTGDPkjrRbzd/DDxc7fHM1bAtYyv
+zbzdjelHh9XakXaEdH7q2TsNDvXAO3U/JKwfwlP1M7liGA8kPzaeFxr0vo2
HfARsY172bou9WPRFgfzFzRTYmXppvtdo3vJOAf0RF9EoCS5yd2dpGJyP5dR
/0UIn4Bw4W41vavN4xgvanDux+bmsBPwBjfIQLkwuqTRkFp3no3h0Lylx7hB
3tNtOaHdKVTs26HMbZG+CRnYTPYZj8aBN45yTjetR4yh5ZJeDNbQaaiPYCGB
FLPM55JNomEktlrPtXeZJOdwkx3n0z20bSDmgyQamPpPDCgW6rKLywA9reTP
SyGp8SfO5kh7c2qynULQodzwfmqUx8FFEUWzDXwTmd6mya0Jnrio1CyCkwus
B8XYuE/NGc8hZ0OS28S4+z3dMXKrbXeDeZuNz5JK038ZMJZUjk2zrltRV8Lo
jrqhepQnUmga0xDRtCWNJ0KJjqRSgGU70MsDpatRj8wwvkSTJsf7b1HAPPKw
wrvtofru4QF3RIdKcZ/MKF6k2uWkHjiKmXIRzt5oHdKET1Q0OtVwkqrBIVCM
gTpyOgZGIRENYSA25c1E9PqRhiu4EEYex2gzeILtBnsUkklGJqJlJdj6Iw+p
LJTvMuXwnjThwldyxgk9jJ1OL4Gk66b12Z1D0Tv62X7xDWwS7uI3e1yk94e9
2az6o+Om2P80nWYDT9nH9nfke3GJl//ernzvHg3/By2A+6M8NVha9eKbf5Sn
DtKnNHfRbpGFLBgWG5qdoCVvNxWhTCRZFijjf8Nk/jcXIEy0NkTAxFPhPFzM
dD02QWAtg4Lnw1c9sWJMkHFuoxZq6M7MScQUtxkCPpb3vYjSE66/1u5zrzWD
yvRKDL00lWt9eM21NnGJ7Bbsy+c8Bj7m0+PJl5LFdX62xO/+aJmiqs52EYPq
gYz0YHxBpJwzHh+JgtvU5/eq8+PUAV43l5iNOOGp0F1VjjDbAcQimgi6pVV/
WNb122yzhv3/rN23BToK1cVu0MH9Q91mtek25Akt3s+xGfMlWnYBs9C2qEJn
FUX9Bb9o4ssvhoLpbjuxuWYJlkNUzaTtxilOat/uQm+esfBO7DuQWOfwiinA
P6jhuuRsy5srxmbZD1G4fjj+NLGcw3ZFtvFNw2hcUAKCkDHM3/8YaXG445KN
jb6mwuK+yKLA94G2QVrAkU6nQ0AXMpJ504OdQVkR2KGVGcNKvxEaQxogI1Pc
QftjRPikTaKj8BlRqyZ1+CZ1Er/k08beMXijVkWXU8Q+lKQ4+xZR0KPo8c61
SiQhU9fOvA0zNctej4mcenMK1DaoIDldAwtcj+w0v5KIDxZBR40PRmWKU5my
/7mqYk+YIDKR75hnwEgCN364QykxLrumKkf0S2rtJj5w7mMW83GqSR2pfB/O
u+SBH42LFk61TAdLYUnMHHfHq+l5F5NNCNzqfFmfEmPtgZCETPoYjiUFY7EQ
gkpsI+gnt6l1Yn8s1VG4tI7CZ/JyQYl9s619oiChatiSh4UAtQmJSIDnScLK
e4LE3UqQZD1BYnc+JQF9x8UYNE3o+uLyBV9HbPoXLtyEDVtU7FoEU6HlYGN1
b7XZ/rkoN4IbUi1OOgCZ5xB1GSCBFOFGrFnfsMc3q0V2Epp3nQ70tBGJkZDk
sMh4uGN5/zV31ZgyeztDUED6DiNoHvUEzdAm9OQT3rZRu0RyTIZtEk3zCqLl
6NbGXdY37r4iwRTuJBgMxqmHKIIGrO62SPa+HC0CFLwtjL1BGjRFhR89nuos
S4DuP7JgICZgsy7PROMoq7QO5xZpa2mWkUofkE5URJAtNl44dwk42GnBxTVg
zjG2lhRRUkCmUZQ7w2GCnpy2P/KqO5c8MTI4Q2ygsNUiYEktlJSzWZag9w/v
UNJqedPoIkvevQ64RcEJc6pdMypCfuVTY7RXOqbg4oRDUyi/+63CqVxFK0zS
tNiJSr3DBYUkaR5g10D94Yb2i3RZNTFsHXCvubTmRdaKvIlj55Vv3C1cRzig
X4F3sYZBMX+2mQVUyuu23CjI3DUOJUC2qDc4ZRo76kX1N3cehzctEAWE4KUH
kvLbiN78+UVdszeB10tbgk773m7ev3E300MVx6hPTNxUvsYvFLyj33mFfmWO
tfwN7fHEA6/B07eZuUch/U/Ypd/W7wpKczQ0TPVJArmzorRu7ulGWQ9Dm8n1
myaQIh3ganZebipvOOTUV95Dp968wNd/QwscW1+yujeRpcQZv6TV5raBoASq
l+WqJBht0Cv4UftJ8gg3BpC6W2BlrffSDKknxi7zKh1t8izg0V7P1W4nvSJf
TiJfJ1zuKEqLKRvyFQoScAkIpYgn0/pCBdvuZ+A++9trE7Ap1bJThB8f6tIg
rmFL1B/F9qUN0ECEMIjfQRSRU8wQQsbWRW5bavWAc2PM3uneoz3Zzx8rrWUn
sGqBXqeSiRNbpKV123CcOejqPYuJBn60P90/POyrS6hYerXOa5bGEhOnMGl9
vKP+64hqAYSZGnmS4fp5Bp7Hh0+Ct7E+jwqSWGmMMMVduanj6hnFBKWPdiDY
NmSNrsv5W7pLDdiyTQ5zYBybwK3JJnyiStMEsz6s+sivnnpsHH5LdJkGjQkC
Qd9OkTd3cI0UK/Vhg2ixxiWNwfkY5eAGMIMIkUDitlQIMogyQBWROs7X7TDi
AJ6XGzKLxWR4IzyXPcqL7BmrMCeqHgngJ9P9UImHh325bRNFgsNjixETpTDm
ZsKgPmnIKGaJL9sjw18XqNe3bRNQjO1si5fsNTKvdae9xI3z2DN+sCBizdTA
I3Qqq8gRTkhpxSKgF/HfSo7jd0qohAhUhlZDUQEJ3K+8WSxR2NVn7h1++QIT
MSsxrt/BX9uB0g9/S7g6Qd5ccUKl1CCl2goWcDvZes/F73CAcsej+Zt+vZ6N
4ua0QSnnJBpcGuFG0S10zMd8GMvWTWnpCDnhjXuId5Lq4X2GneNSOlL4mcOX
WkcbkN0I9Aoh23xK2zufn8+jMHxUZ5j/WGDOuHzHAnA5awBp8VEtHpJrwnLD
DmYfkrtFpD1xn/p27IgrQaWS5ANDu3k8qcGefa+d763SG2xjWjfWpddT4Egb
WYl1GOv9Bvd12lvY3diH92Z39L3x/cyu2c/x6sPrSScli/huusFqxtvHa+8l
8dosca2H8GzwkQ6jTRuv8zgE7ITTX7mpiTRK73XuJReOQUe/Fp26L4Q4nW48
RlWeDb3V0VtLaXMt7qLTjc/CO6M8P76SiI8HpNOe5ehzu5qICsmsxA1bGrdy
DEl2N+nVZetu3flOvX0eTUEcfhfy+yfu8872uu7Hybyo8qas20ClXpTwajEl
mxYcArhJ/hDnc8vFZRk6LDy0xKwnRDWd0tk3+RRWE9f2vCENcNOgEhbt5bSI
fB1I/BsF0hTJ7fqyNc4NHInRqtZ7ozoi6aDkomqTrbElp9eUmlq9lQuw9HB9
99nxoxXBjGvhvfdm9JT7oP5Fzptp3LdazCMKuzEJ2CCpsi8vlUWk7vQKGwcx
HgwtuNEQ+Ru1GH2SbcjBCywf0V/rpnORp8cHtMW/67N3h5KSc8uccV0x3zSg
iHdOnr1tduzQJYkO0P2lbsJoZjNXsij9u8+j/+yEB7uB78krBzlfSCqTFi0N
ltWNXgbpwNxdZa+95O4vzlMPVX+7fPBdGrwDkw7eOMok4np0l26SHFepDqHh
zcoGNyRYBX08B19LeJ0gy2P30Dhiw0160rA3yVCuu6tbaWg/r6uGT7XwNIn+
kSZCxzn0ESC6SfWxFo6xDegIi/CCoWJ8fn+4P3HQ1d9YSyLRkuzxx+0x0EBE
lzcpFnK8fSCPd3k7OC/DdIOIybkugSz59KZHPC3xzyW2q4ttV+kcfN1UYuqx
th1MZInR9Stj3ynAldEOve++eD+nzvDwnfOcC+JcfxnWAIeZsfW5HbsLd2Zf
fGsE8KLsnCmDug1Ehi/jE/fYdbrFAKPoASH1AbYHGEgUvguYZD5ae51OMUxZ
gzFCN/SSOCzsq+c9vKY9PSqsdQGUw8aN/UUb47/2crlb8wtf3TXALwb0z+sY
RhYzjL7UvR3HGFqUuz3HyIZlSC9aJTG1X+Lo3eDg7e2OahzmJz2q/eGjcndn
7fFJjRzUnQ6Ix3K3O6HhCSvXQnvEee476jcc0RU6OIKa3PL2gIdD+tv65XJ5
tTMU4E+OlV2qZQQjc1cuQUt1nyfb7/2FCOCvdlX7E/dSuBSftvsMGvApEFEC
hIv2yXhqPBZh/H0ehdLZ0JiqWlqLzkr6q5OLFz3Ys2yEzHRwcisNju/4X20v
X0P1cZ/XfT21DdV+fIEmefCLaZIyqvtCVTJySdxdlRxnOy4muc9hO738lGvY
DiYNgHVczX35ZfLshDOufWK8+0w2k577LeXM4TUqgd0/d1c2c8O5uzvLm8Fz
d5/DZpIz7+n5t9MpogSRwewQ8iH9Iuqm1EFX7jZZKMM0ArtAoFayDQTz6kxu
Q+weHBviM6ns/i2pLPvFyezues0Yf3F31WuGiG2Q1rKnIaUnO6KQLtUoX+85
MqrKNeQ3ifOhtID6lyBKFo7pjSgQ2B4DGdeQ8fB83WfTsWbRkU4n8ocyGBA8
Q1KxWu1RJ+DM/TyxUfe4u+YC3I7+H2R/Y54a3c4B7xPSv8GDTOSrcD28AV9E
lb8OmvxFSRJ9ONdS5DX0OHx2n02PD29Dj/0ivMHEP2SNHDAT33MULv+1ErfM
PQFj1Y5h6T4EGEGJbbw+enb84wkx87adMk8Xv7fGm1xUjELIFSUDVsReMiUU
LtyzlCMvdyH9k4LHGWZiYhYi+9iPKu/DhitF3beiB/y4dESm7I9L9zhDTqp3
mLipVKTMTfgowefwWDB1EwWw/ODnRcc5y2r7Y3uuRUB1kE6pTLa3yr7WFhjO
96wLm9TgOXNHOUxUA12cHfpCAQjOilNmhC9mFJTMWlSILeY0LsJ7wHvDPUN4
G9Ae/M5ECkIcU1vdT2QXODcXgTYppkOZdQJu7fvAENiofy5PFgKr28uAOJDU
ZFGwDtduzs7KeUkJTzgVU3cpiUa9F5ah98xkjKxkeIK+WJZv0VrA6OCuzIBQ
SbJnodnZ05q6TTTSEeDDV6ER2qeQxiMVElhh1MA1lrKZ0GMF9ScucMzJcvbD
r4BNLdtZjLZCXLbl/pDl3H4dOfAK/rWQ6QTDHj6bdvUU/uMEeZRetamWZfU2
Py2Xin5CoDaS16IvJDx09UrDx4hupPmdzhNrb9ohTW1sHzDFbil4dt3AEs2Q
MDfGk5zoVcH5H3VYmYW/IDgTSEEJTtUDzHHi50yZyBcolWp5xdCYTrvfBn88
0RVeFlkIhzKj9u4ELvkbhpW7Lw57TICMzgUpnlzlDRWGy4m4jNSLpzXnM1Oy
C8UazkBxCx0noqVJ5FXpbq7P1hWmjxI4+XzTtsX1s+QMK/yCh6WdMGC88yTF
FY+c+JgeNYf/zzfApOC+wQGgHEH+N5Wtd7y/U/18Eu301IidiCJDUnohnVOX
V26N2I6V+IzWm1Pgu+ECcUcrSc0110rLVyVqzBfdyeFj7oDfYwwedcwropXr
1koCJWEL71mB2TsbXXve2q8pghNSeU7ooE292ACXvdwsseErrZzKdHuRoCJf
8yA+EPRK4BOBVKRWyEMZeZKgz8sF0MMrxIxFteWM9EaarDlyf/uQPM0Rz2Me
p52hnWfgrNDhRDjIFc9EpnrikavospG5h0TwUwRJSRotFmZ8+CqBunImS+0e
ozcaAg7cCWdgub7ij1q8DDc+A4Usx0RYcwBUiL6iRg5IUOLCyiXjy+kLQ/GM
Miv9CveAFvgv9Xwmrd1oZ52Z/IBGTN/VNY0vo1Q571ikU2IjaeIEl4sVlku2
x4HcK8FXgu9oeBOOdSONtmBHTo2EwHuwiZBdKUevddxHrlzzGZfXzY4s1fkF
NYoXziC7hH9xvHf6UcQRJteMKkxZ6KZYOE9NBHfMozE+Paes+qGwyVsK4cWy
mNrworK/kgpsFKYtrLfXTMjc67K65pjcTwMYrFLHhm1H4MHpad6SceRPyTcm
86Cs1FPMiSTFDVeugwfNKqlqqCBo6k0zR6rlNjY6SkiT5M1xccJM7kcgkjzD
AgePt2sDSWEfFdDfkcrAaiSxUgKFxc3k5C3a35LQ1oEXNQJaOignN5qjm7J6
BGmij/C3T0TG6VcmZg0kbOfSCRipXRAz8I8+bcdQgce79k8E1hc5zUltXkxJ
3WSFuZUWVqpprZHlqGZ11Es17YvuT3JQVgSpTp54aNg+8WEYjrwjwoMA2nWm
s3cR9CUYjC8eRn8cI5yz0dKg4Sak6e86MaJc99fIhlYcdoPeo7IlHZpR1MmK
8pVaPTMqPZ4Jd7kjMU3eBf2Cp9nRg5XOhq122rzXLKjJ5VXmBt5y0wYlDFKQ
h3O9sr2GFmpjtNnbgsDDuc83dnonG0o0TYRZXphkyiEEWYU35lbQdAQuIfEJ
XzCbbI9lFbzf7QUBpCsbMmZmmlxjm6OvMEGzKtsVUlLwNMiTNCYn0Dv71hHt
h3DRN6S+UwWcLyLQ7oEzl2UUuQTr36P0wbKjzTMFhCHhBFNokbHzjoBiyODW
wpz0GxPfgf1bECOL7PXJUbYd/pztvt/d3d3fmfhjcxT4NCuWHccJRds6pu/x
njkRC/GmDzvwpLUoSxgWXhkQQYsMecUgxzEvGGMbtB2s/MIawn64of346YdX
r7/r78We2YsRhoMZ5fEB+UspS31bFGuy5pqim1D9nrbiQ1x/zjpjhZzWKYj4
s+yVnGU2eJYM/N/5qrHXz5/+8OLF85fPnj9jkyo1Bm4hVFJTYVD719Wdb4Bp
LKl3RNuV3G9eDacgirjyEyWggFkL99Z3BfYJAuqCy6dxkCDZQqVUyuSc53Kl
9ikzXGuSGXIgLCZtV6LwUBWxekamJxVibqxN/fYka++mrOdt2t49xalVjttm
BlPHy0cPAj8RQ/4Udx9BenLiu5SVqksRW2yDddYOi3bdqwGSt2RzK5pH0mo3
XBlOu9pGJzXjtVM1G4/m46O/6F2RExXh7CKZNIZOjX6KAlU+SvXRklXfuj6+
Ytolh+GvNUeTlECSJ3QAuDfSAIWkCwZiQ0Gr2ZdJwpBRE6lbbhJlNGKPqGxU
B69s6hxQ6bzFlT0ryBbFeJa/MNs/gIB4XecrWPGOc+a3odaSvzmePpstmvys
m3awK+0UBFPV8PfJ80HREfzQycvS6wT/Dj0WhcZwe1Fy5M15IX27A5KUsKbf
l9PvStHPZ5mZpu9J47vJNbXkU6MzOkzD5Q0o0XhdQFo+9i3c2e2O/gBRVeW+
qS0AlNg3Byhi6DPpw7O2/zi5UbWnE1YBpn5vfWrmXhTU8l1tGrN1SKFx63Xl
ha9+d4w7V5FXVApOfl8izB2M/S2cyeKUPEVLdjtn27//9mhH9RR+naQ1t1HX
D0LW89CV0YJIC5NeSNVCbToJXxBPw75S26/zxUkx3/Fo1k5Bv7omr1qC7EOv
js3obb2qNXosdsed/xjl9sgj5MFjbyhuquBVYF9ZtJ3TkQT0Qmxdrkuol5eK
vMNdigisPtieoJ4VoamKCpgUymfgFvkuTbPoxlGUANlESx3ghMVLeIQs/3LV
Wp+Rt57kyxOnQpF5EbXfkvPxYSfeSjgB9Mxc0EVcXk0iRdjlp6h66vBt5t37
iWLcuwI0dnwgfotn2XOOehCh96dl+h0W76lu1q6NxMxTIEqs6jzh9sDT40W2
/eLoKYrGhmvSTfQFRBPYBsBTqPbnRxhrevxskr08OoH/Ztsq7Xdmxj/2kLxj
13K5xGPG63BmHfZEpfoK6DRy5cN8rxfnjqqs+wzby2P7Eio18mqHCkG69WTI
RY4TLyjVRmdXhD55FNfgi/dE9AKHrjgUjVdo5W2q8CvRhedNhpaAwlluomfP
zPn42SuGp6RwHtMk6yBE/XMMy8M08uXEB2NJP2B+xSyeGgioz4qsPG9shtRN
3fYyen+sH/yzxhCJ+MiFgwoIuXIQiqUpeKwRw4XtJy7XbwQYIoLswpYH5x73
5co380s2ZIYxHe54dVngnUSgJl6qv4Ch9rg3ghEbHTmS0GmpS2xljcQ/yCsF
RE32kt1eWVAbwDtAcR5+x2w4b9ZPNHGs4EjjjJpR6yaO8U6CE0amYN5KPgU7
I+K0F3UpOCdBn5Jm6nwFLiSTwhOOW5TErG3zw2AMGLuzZ3PyQWIgHfSNDoOr
3iRLznMSTlv2k8D8jVJJ7gSBfX1bChhbWEKApvXzRJIwBy3rwZViMmjfCTN8
3H3fi/wZz8rZNtjmXaw2TESb8Rpd3hTj9nfUUdxopgOmn4+RXe+W0GpXiief
oAqChNKLJrfyFy4vFzuH6z8TmJGT+QXQKQKLy1hJ1GYkEHgYd8GimCdNba5O
XtnhqBdI9orbW6MLlv9lJtrHC6B6q1AyqK0/LIbktW1gtCTOVI9poxbCpeDx
HMNCeDgpLYhLQcZOE6wxfcAFxLFZlMTDxJFXdXW1qjct3m0QnuV5FciCm5U5
oFrYNsRb8tyC/yIefVQYV3Dx6gVjRbD5ZpTTBXmfpOUabBXtXGOS42PPGp6x
QXABxVZaazmMVLHPU8+RMziizBWMbygGaroCNu6kICRwCXLZT2PUNFAa8vlb
kOkUIpi5Y+WZQnqUk8R8jHddiMe0QZcejXEreHy5dKUJWgZapGRiIs2U0Zum
KlVAW4H94VJ3cRmGXAtDgU7BhCKPlCZz9eF/hI4tDfsSQvY1p4fkfIe6PDar
FtlYH1tvPoUethPne/x83bJWKXCJ6FwS73Uur/yarIkAn6RmNnaeKwlgJCre
M5HpuOGsd01NRI9F44ehN7B+dL7MWVPl078V5DKhK9OkuLUd2WkeCi31alTi
eBPxAQxsvcyvBHiZlGpurxnRAG+4fFdwXui13DYwrJyPRdBItAiRQKDZLBbC
6/BEQBattd/PJYW2BWaKEWvVMATexbk8jQsBs2IpBM79r1dlu6Tu5hchQanG
t/hiiTY/K5yEf4nnHsNY542YJ6pYuxNqBqp7FpgKTYY7ECq/SgGpzvAxx2kY
vAevn//PH49fP3/GsArAyikHzjiShjgVUi1zjUlmjcZ8jOdJ0FJ1YJ0sHqe1
z49/9/xyH/YFLjymCWqigiQ1+kk7O2kpBy7Rn1n9SVI5FDuBJfH0bXE1pabg
6DmZOp5df2+id+nL/WwmIj6cfKJXWA9iMNn9De1HapQQlfHGPjU37yffXgDR
4EITzJBN5l2pVY2eRQILU+diLOoQW0jtOWABEnxllIfmag1aYJOvL8q5L8Ku
tSFvxdmUSFSK1swCYvvDB3gnbA2qIqU0OUgZZSSXQvDGDe82j4x+rmJ55uOc
wF42TWhcptlIapX4Xm16QB376pOIFjFxZlHKEDnrhtIb0nbsSP4qABM6dkZ2
E12VmksAjCYiAV/ITnzqvKg2ZdUPjZJy5t+BWyGwjBNNElEF5es2xBoXotUg
oBz3aGcox9gpN8ueDp5uqf3ZJMDnRi4qMit4gL3JG0bF4iI+YqheLWCz2kU5
AaouZi9A/PrrISpC5CvXHWch7MLXaMl9mUQmf2i+4SOFsdji7ihNucIaWVAI
CkxW7YtyZe/+qtxCKHoJyklmlO6yWeaYzGYHpZ4Y0XB2hoRYgD0DyH4C+gZF
ihS5s/J8o9mwKA4zf6gsZf5Uo24zyUCh9xFrP9hFkQyoYgCGoTxRdM8wjFtL
rTIuTQNdkulpa+V+D3rtg82T89/sTT3vdOZPtJcGNxlEh4gZj9tdYiW5tgyB
4edv4xUuKD8EPeiZ+MTmpRYReBlaN0JE3pI2r8F8NlKlsCdt3GuTH9Iy5yE1
yD5MGQmEXxngEOn12NbxEmdJF9pQaKh3LHLOeOlaTcfOl06o05wiBh7oCkTK
L1ZY8bX3XE/7EzvuT0PrprvsHVUDcaJ1zRHL1nYW5gDOZZQ7hqq4B8mhUo2W
dXKOOJI10FBc2kyZpEDEaTGNnJA0DYXBzQ7wO5uKOeVCcSPaIRLxMIpEgPHc
o363QBscmyVrB/drYE5Yi6GmTG7mUrG/Q4SQtqrW/TawWdhxKhTkjFZidFzi
SlaCtm73huvXbRhD2lMbdEPffNp02jNXlAoH0BfnpNJnklneKSUHAxvpN0rp
noMFmIkyVFstWwFyGAZqdakYDlzBBWjrKmbDNEzEnDxrkAwRuAQVSadv046/
aIXmlHthWl5b5hbxeAak8VAjkwgbElePKe6wtFBnM9jpHEgR5zwgHKSRuYIg
mGb0dn4M34jZ4Axk6p4PtKgPslGwZxDp1qBgD+VMrTDi45kqN6iScFU45dLv
AGtDVk4xc+NzQyWRlpl9i35q8tlKDx2eJEV5JTDTs6aknHsuUXHEcufz8OU0
l6WkEtYSM22k0Qyag6GX96rI0WZtGX1dx2Alcc6hFItfymqV0864YndJI9GZ
KcAg0QlrR7Ofwz2GJQkDdQRDi+9ccT/c0GOLJXpEXoF/z1B02Wz8RDUYTQDq
ZeuA8IqytzHDZlVf+s4WvTi5LgA2f1mXnXqysTuVj7h+zaof0GKTh3b0NOcE
WmkIlVnTVvt+JTAQMlX3sBlLhT2O4JSuokQyr3HylTktlpjN24qvA0ZgfcVz
6Kj0K+ZneP1Xm0qTKXGptAx0/Zp0UbHmFL5/WZ4VmFuSYJZdSZcT6RWb4RaW
sruhyDHDPTEBMpjaAijhLXC1qYSxMGlzGh6e+oep6TIJhFaUEsQ7qFn9YSaJ
/XHW3YZz4wWdmjuz0cKeDeJkSKeEXEwKvVhc8UceoXzeGVECL18W50DKaPyp
pYAUMYb9SxnoqJNYg416qNFBiLZxE1yIT04K1wz/hU0w+SbCEpXBD7Y4phYD
pwVwoiYKkOUR80Xxjbl4nFQcDKVS2S1lV8DOJ+H9Bf0Zvd1L8lmVHQPIBJRw
9vKRQqeOKeCRyrHFuFHUSXLz4ZWoz85QuYCRaRfQulBVTSKR8D7KaSbSUAew
h+dWzNMkfaLsQqMLTPHsRE4Y7xujauNOJICc3tBkSc3eIir3TLBZ1JsQOBDW
XQlnVqb2SipaIogyTng0XcVQsJi4ipad+vxZmhuNtB+PdH2tS1Is2DGbQy8u
mzWaB99elGvayhBjDv1lpHIjYlOUbyjhQCoNbUMolZifnvv0rCmKiB7haIDT
lOekMdPhopGugt2ZGWgSNOV/dKr/4HvUng5NCnxRzLFJL9eBUNxSvR4oNQU1
HxMkZT8tAVip1XGGWQ6iEsyyH8ZotPUZiX5JizhimrMocvGbctPZPvYYcU8L
brPAwWEMPXk5Bjul9ISnpRSRCs/k7eR2so4WJBrQ1rF11yjpoPUFTDtH4TCn
rBhZszN00BbmYsTkdhO1ySgGdLqNqnyHqE7jz2XCqDjXaDGLnFJzKdTtOPXe
9hXAseJQmJac0xTyJZUpMqlpjbfAfCaY3MRaWHevmy5naHyYW+ETUMmyMd3Z
zMnHd8Qmasc3hrkgTPOSa4WMT4drAUhyzzBlE3mydjVqI7pJlKxtoaOdUCqd
hFjkG/s7McOBF6LhbHKEFXpEtCOPDc+pTAx37vPwEnhKNpZwXizhMauKVeEt
7nDw8uhky6fVy2eqqW1RDRXw4nYilSF5Jma1beVQ+LJJaj0Y59ercktWIZaH
gc4BV2Pus4WS0oaFdktPFC9JGI4csRP63Qf0pDhzPlcP3vbR0dFOphaK8Cvb
G4Vnnnh31elvi6TC5XChlqI/y1LzCq9pJJBpCqvzKqpJbbEPxTE6Vlyi1+WC
SQ//denDWOuV2BZJR81eGrXfj17eRTtgGySWgUtxUaWqLUlEMYVfuWe1hnOy
Dah5Wz2LgLL5fAqOvQAzyX/vBrPssQO5FG8Pvzd6rUtfa5l+rLe/wTE+fKBM
hEf3din8m2QcxvWfe7MDn7pAD7D6ow12vAY8qAv1GmwgrkiyyT2gRDPoGSaq
aAoKGgYN5r9ZDBa+jBPrHZUGzlIz+7a4aglnITxFbmXKjAtVVQQJXc5LjOMp
d+BsfnbrgrUPJlFNBTZeFEl9I8nGFV5iKtmugEdP67OpMgphzKafQjkvBvFQ
EkXShkalDojd+PyqseBpsPz9/OB3XQYWyAVnYX8rhXkfnYJAGgiFhWhnomDT
MVJCNGhw7MdkE9/1TRPFPTChUx4E7+C67ljOLSkcnZ9SPpPTAnWvRiCf97wJ
rNr/s4njIj90Ah8sFg3QglF5SH5zcrJ+wB14NJ07mVoobaAXnPxOpNnBg/sH
eInw0zcYqVVmhP8WytWRbNr0hLVETBp0LRzYMm94qWH96NtBJ/AGNRZ5/SmZ
U7r16gViQg0G5SXSNE6dDlE0UWLrxfyCdiqs57Fz2TT7XpmNaBIYncMnHnsS
bQpqGlCHomrde9gyrOs9y5w4zvRhpnHzQQxFkhAQWc1NQY1ZWEfWzoYiePX7
a58gfNTyKpJJ63PC0TmHCI/f4HTQ5CmjtPMZwN6HQtGGVVFIEoUMd6ppTUja
ToFlcp+zqS1aL4rl2qv/cqggSejFLLYwMQPbhUW9JVtNW9faVjIlxOWnoUq5
Pd9J9TjWz04cheNRQrDHgN+IpX+CXwoSYEOqpN0jvzlVSVXBlgjy7Pv8Cobf
D8UEzWNkmvQWciFKnYWcCRtxQIPcZoqOrvX+ys2aInQDk+CAKGldGyp3EQPN
1+M7fmXAqpFpn4IS8LZYhAHw2PqTjjO8XbZtRSH+wWSD7wyVDBPywYNHDwRg
H6ff4PL0hlEva1YNOSyopISbQRnBjEDD2zTLvrXz5UdoCDhEQ4f4cGgrMrAs
vXoUQy9CgRhbKy5rgI7qFdEV+XHN0SELTLVSpbjwThlYXu2ueXc+b9Bkl/Np
Qy4LcrtcKvTPmnylZfzLgTGjfJq2redlnHyeLy7BlMo5wmBUMonOM5/LDKMr
tYY8yBVP7Bk77fUlsnFyu/v6tSMexxpK76bIwUpPc6biQX4bKog803aBSJSc
bj2c79YIhKOCCaX7lIQ/9whockRuys5KtF65Qgu4y6quSni7JKEoT5UvO5OB
QF+2XAxN/tMC5lvWXMGMkaUwI9ljzrddOCOLE7+hksos+71YEdFAE7tiA5SA
bQMdMdL3iJWmBoAGppmGJxIn4h6D6KSWsTQ/gnmj+PEy7qmiScFLLJhxMQaU
V3xYd9OcX/pqEGfwItap7z04eEgqMl6xWcgAeTzkoE1/nHtaroHJUHUkHM15
3ZUihV/Wzr2gKquEOvlPIXUtOLngLz+YrsFJBptkn3nbMne96dDPWFqtzcAN
CWojg1BpYzJDCq2ilb0s8oYyB4OjfOhHy8OwjIpSerqQ0aQAUv4lI2OEV498
wb0uMJ/xl93Fu20hptYMDNJEExvdvFBFNzDGNTvXG37oefcUjSzxQsEuI+19
0d58KXGRG5fcpYMzdr8rMDVJM+h4uieETZmk1sGFxe+2XUNIf/DNfz5y7lnq
3qX9mclfv8tbBoKDuc07voeD6WDXvndgmzMnGJCYPUc5fRi61beC2PEWIr8U
Z/5bkKJYsHol84j9AY+zf4eLQx0tMuzc269/oMbHY6wPq/E5QVBqptEgAckB
+pJo1tztt3Xi3oJbvo3v2ZEGsJyETq2WvfvRd0Hj2n5pIGrsTTKxCQ4KLd6G
Z0AW1bdPX2X794XjPtzb9/BvSEIvmISwIZkmHNjPNEG9tA3YxOWohV/kWeRn
HDU2M42iRaHcktZnqAEl6aav1DuwDUPuAEfhJ7f8FOk1mK7NTdP0C3IK2H7G
UX/leI5YjU/5BIxuGWaEIQL4+1Zv5C3ndTF8wH/hlUJc2nWdN/VmLRqafkiY
dOop0GH14HzKOMravNF981/jrI36zJnANzXWlLbjoXUVthF6jjUTsImNZMSZ
WYTGnV2U6UAvQPMVX/fYPc6OKH8ExCbX7JIwKPzEGorg7U737t97eA/e+BL2
gJ9i/C7M3fAhLuzu7eDoKPo2p+8hu1Usle12h916obDgJ8nEiMicfM8LSscw
EE28rIlZCrla0cgEC9tF/sJA4QScAKv9yNtLPx+VeDzl8esybLf+eOp/7L/j
H2zLvusZT+jKnrIkat/Oe0ffG+n9Lr3c4XCx9krsZu3nPkb5yeR9t3fO/F7S
+XNmvyaNC2FoXaRQZNRnVaZANsqnTz00nLCRHzOkhD4Txr2Q4w+7ObaR0Wbj
VvEIaXdCP/J3T7N/gx/e133+MP3a8Jfv2ZGR81/35QP+MG3TOPzlQzPy0G5E
X76fjNxe9+UH/GG/teLQlx/KyKH7/DUjP7JfttUwQ1/e22XSTQCWh0fe26MP
fwLpC0MruQtKdO/L+3qC/WbCyZfN9VD6lvtxLL/2+fgniX0USOi55KEptp6w
t5ELSVyPXBfuWcFFGahqYeeQTlF+yXXerEJOVBA6BMLdUqYPvBX7XYu5Xyal
ZxTxCekKl7RtrbQrJWANrRUpOcdUsUgoCTOAqb0nVI5zfLF5mHsss0TRPohU
PMQJwpSlRIobO802wMtPy/MNWNQYC+adCfWJeXBwTJxWj5oEwjbaSo1T4jza
YpWjoG+lubTfURfvqGbvxtsaj4suMEYg0gxFJ7ttEwEJZtHG23wz1YliyUbI
v86bSaWVzjMl5IGS+9Bd4hTTnJG30omkcviJnOpU1+FR3yVFkQulKTZ8RQ5N
FW0B6CzxrqG+E9BujBZHF4DvGrKAoCR9kWbE3e1pwC0bU72TduT8h1Y7Ol/W
p5yqgeBrCwOIP6QpcRZw4HBU6DjYfzhCpR8G1v8y5QnfP648weCGqxp1aZJd
bOAuTPES06VZGOYrcpp7v9xFjcI1fakeRRzvFlqUipbb6VC306Bu1J8esVQZ
157gW4/2p/uHh9eOhULEE8GwljVwef4iepalxWEtizb6Y5ZK51v+3EkNu/Fn
RE/THJ6y8lnJFo+DWm7OhqY2pMfZ8DWP2390cJ2jep6N0ppWgwQyJ0Jrdu1g
ogc+S/rCmQUW6lW6eWaiJ/6Ydhu7zSrH9MjXRdr7aqTFyza1ldqZDQ724K6D
DfUvgrHNuEYjvf2wtxlUNNcXaTviz9jFiBvcoFQatoDX/3/9AQd6vsCIwONs
rbDlFFnItvQlW5iVc1kEJQT/wH4Ul7c+OTG++7P/9ce/mtpKjWgC7hJi6sWq
ig9iBc02u0azdeOarU9JuF6fxRlxvXusf2Z30T+d0T8Tfa6nihmlLouUOpco
dZ1izgwobkE380qfu6MylxhQ2fZz/5WdSEix98sMQNkPjEqUy7ZzdAr3g5Tf
LYziTCkOv+UrdI3m5ctadANkXSumZNQkWYv23yvbt3xayyVVP/IQoscpvztV
tGdPCzcqbpj2xKgp+YhJSa6xDx94SFgDdaHe8WE+TfKMlUZJIgp4keyH9b43
JjaDDEFj8Du+brOTF8c+KvmCoAEpe0TQbwbG3X71/OVOuPKhpw7q5FujzxlN
WrJmHt17sKfIIzgA7wmrCjx5rRjI7Yky3MO6KZKkSL0F4ttt1/k8ABwbOE2u
muMkesQJYY0mrGNIezJWQKT4kMccifxkw9q3vylsATDNUA7HYgVcWS5gWy8x
xUVAa4Bg0ZQ1U/R9zft31xNtKOyTLXf9Lac3e6uE06MmomSDcRxqCsOjTk6Z
8WfDgZStlij2xsN2NSlrdPNcuRYlJizB7MFLZYcUTVLvHZvr3MLijRUiYthR
4QgRmT8LQapNNp1IxdHWP8nUUiT23L71oJLzt8QEbq5HrAaugCmBJPf4eVX+
h6RdVAMTivbRVE9i5UoDMqBaTLiVGNUKyvmokCISNX00J4EymkLrOjWH3eXj
zWb5oiETEuwgfZHV990wpoyp//Z4N1JiiVojFqwUpnDSbSq/LYuRa4F5GLXU
BccSWQq+HS+v17OhFHgZhKxYBbwK3VU4UdDrs1M4YYx0vUE946eCmmYgxAf8
esm/aaSL0gQW5XtOAw8YTTVodJ0kYRQGhDINss7E9JaEImz5Job2Zhl0Lu7N
hhkm52VV+fRc/B7ShTPcmvNPLkCTQG774QP/i6E/YES5Nni1L+ClWKO/4jzB
iyJOMPB1iq1oWgjBpishIMQr0HDmUpXqLDYPJlBoWJh41KZbM7B8TrimvoWY
yYPdVE8cKRLF+6KZl0lTQcz+4ZLS5ZU0+6gkUUwwHBeuV/QSfEFWrHonOQIM
KFyZL/rx0FKp493LyuA3Z2ebq9l/SFnQwZtI+RxEd740nAQyTOrPf/6z293L
9vNsdze79wj/t7uX6Oe6cD6+kVwD+2P83N+AUbotS965xaPHIYvqm2z3/f5Y
Iof9+Z6cpfK6wwe3eCLEnOgJim3iEm8zw5PNaSeP0+Kic9xxD3dxA2Ez98+G
X90/y1u89MU3e5Ps9Te7E5o6/sKL/uaAlosv3aeX3us/+4Xv2vfvuncoT+/S
64Z/iMx+ph36RrokmKcGIlP0Q1pv8zNFLdn3jZt7IE/ef5Q9uEf/O8zuH2YP
9rP9Av+BP1v86KzYki8/eJjd38vuL7IHu9n9uX6Nf7aYZ2yFGY3+BCfFzyRZ
3ndhYru3WJEt+R9Y0RmuAtZ1/wH938KuiB+9+4pwOgfyf3s/adTstrSwa2nh
INCd2YKUX/ReSddtzzxxeKsnDok7UYjp0mBaBM/gICvd+mRY7SAu5NPAYOk2
jjBfdlYhY/V9Kn822P8TU7j9EgvV3MFDFrUST6lqakyZInZMZKi3xdXPJRe6
R6VBLEBZrJ2V5PKXEpA14y/QO1R4cikIeq25851w9H3h6I/mfwGOvo8cnXf2
P4Wl7x3e/+vz9EPazmGu5ynl7tz10N+ovYP7eonHLlQ2xF7pXqHI2ctms9nw
w0KK9/aFQFH9gYf50X38Hz06tLo++aajEH/fvYf/o1EGRFBE8v0R7tEIB/g/
GmGAfcV3ZJL5uyZDHBheIfUclk8M8gFz1+mRO3COXvDf8pBWQPQtMgH28yC7
jydHmESM3ahJWM7XG/otb9PrvJv/33Cdd//6t/kB7eaw+O8ndnzWzX7gb/au
oU0wFO5Knb35RHQ62MA8z/67+jZO2FAl02xIzkW9zrfTfvBxVMD5qMBQW/od
fbcNnpJ40xx5px2TgeLvwe63mG66aI0ZckpK7AFRecqN/ppmyOldifzef6rI
2mciJwpgAn94jSCJva53p+yHQWYR43547cNEWt9kDx1O6BFNqxcDNtNKHDZ3
11EfhdmRXHlwgNr2/VPUm1HP3iUTws95i+9j8Z5UaNSwH5FqDl/ui6GtNcZz
thyz4hFNG37SpKzPWsjebqxtM8fCWzIfetpcKMNv+HqP6MwRx0hzPvDcbsNp
0pDIKKcZ9CgG9jMb8NSrD/fe/gFYf4JD+ur5y6zRZAJu8USxbvWycpkTe+YP
7+/tR36OOe3h2d8cg5nfXSn+6zKY02sMudGY0Gd4OoKr4zBcggdFtng09HTf
w/0NE48oydf9WOc27K+5RD6MdcurlGaW+asEsrzjqmOfBrLIngndtqkb12dk
vcOKWSR4CeIGUA+leemsmcZaFUF5lr0UrFTWNVcZQ0C1pH8aQH1HeXwhWy60
20Q+gI7G54oe9QL3iZKN4csYQn+092jXdtven+3N7nmwBfgjtgrnNMHcvlPr
R7FDAHdYcm/J9yovwlbxoZ4SkUtZQ+EwAPu6Ke8tN+2w8SHsoL61bt/+vLgA
02NrRsU3OCcNQnPLzne1NaZRE8dn0FbRKfy8ouiX0X62+CtbHLjldxT4AQJd
6wYczO7NHvkNeHhw/9OnnSdoA9CKuJOrmR+H19te0GjT2gXal6GfIVfYDR6V
m4hKfSfHG9fY4QORfHFXQzufHCF3fAFV2Hz+WrXA5gG+ZkYgWbndoDbk4nSB
4pJqqKT5KU3Co2qfXl1PDxbhtN3AFdow4Ae520qOojgt4NFWJL3ZzDLfOgJD
hZJQ0ShePiGM+sQ5IUQuwqH2TdI7ECn4YP+BCeI2rQQVhW6QuGkI+BrSsmTi
tr6/TlQAhg9ZgAYFEZd+I76YtBHiJt4hb5I4PgLMNOjCD5DNOM2HBwf3ZzoX
IitkDzXGelr/BcWjo9AYbC3BrkXsoT5z8roeyWHZlOYZ6/WEVWkZsqan+C4c
MFS0NYycSb3ue/tiCuM23BaDL2Xu2ZfNc+T1JSfMuK8+qQ0usOeDTk6fMKpC
rjKGEufMPOE8/QWlVmy6Ye+AIYMRzlH3/hwoZJf7cjIJzs9LH2AJ63eKHSA1
4Xw1qP9FmElvjSgfngpb5jYN0917KIEY9LOsmrP5N1tdsyFZcoKAxJg+c1ko
MycE8TeU6MJJ5QNBvhAm9Q1vFEyZ8gb+x8kPLxGesibxO2XRO+WM9W2Q4Du+
hcl2XPU0MYk2LOn5Tz7NAJkrwfVEjYQOZsAWEkQeDA469MCLiCQ0FpwYaFh4
WPuHj3a40Fwa9uD2mPwN2yP6qWkpgNgg2T+ORha344baE3brTUxVyA7xRdQV
ej2eWwkyvvPtibSvF64Xncgm67+d0CAW9ZhhOPCG3D/YNEs+QsFBpZQZokfa
BASfBc7NxZZv+Gbap1jXXjBqOKLWxj1zws7xJHj3JiwPQizX7z5uPm77wf2D
hzPewTcSDU09F7ZchLJMOV8h7Imvmx2sLaEqiZaypHqxaWWfyDpxZBoFh2a8
UA6Uoq+iJOgl3Qgz4S3SwkB0G/cE/iq+ian4Jrb8GW8Za4Vv+xYfAB23pT85
IMHZJD3Um9iTvl076dmH+spRxRlBUiiu/q5cYF0I7QYyLMI4Lqk0hEYQ/Y2A
rrHbkQdd7wKFKs3ny8chs53tdKnWzrO9KYcZNpVkR0kK/USQA7iiV/05hPl4
wI/QAP3HVKyOp2PdOMhM+VtI2kOmQgmVSw9FI15X73BtxXcmnldGGRaeR1Ai
wGVZBcLHGDAEtCbC7WbnwJZcuSeo8dAGFgziSymR2PQMPh/0Ghr0c99UlvAe
CH0C75pAAfsnfM1qwHmmrKM6V4buJ8fZXjmD6PrkBd4N2qqfRgpcNJOLl7I8
m0pVRbwfMGi9Fgff0FVANbEpbAobF8dQBmrAUeZrh9/GfJvxbMHAJtoAZKQJ
YUOGnRKU5FJSSqoqPXSKJtlwIjds/ByYrpMilu1+GuiOJ8IhtE+fBcNwZmJB
a0BPJszSUcWoz7iW5D/ihJxDI8xTrnTFFU7YG5NxqFsevuV8GrQWyzX13PWJ
TNq3hSU/zwWFJLlosmiO1IFUmo9wqzJUsupWUrdE+yylTksTt3BLqzPBme6/
Ryuoda0CyMNIKQqMiJJ+g8g7ZgWMbYqA9tguDBWoPAyvgkAQmKPtpNQ1xDwW
cEefpxN3cMOL3L4t1y1nrgmpcjEaToYO+YgqqcZLobJHQYcCMUtNVgpqkiys
SO52goo3V/2U+8KJsJXQj2bY0gHHhVHhanIHP0k0QyMBc8eXAZyX0wbF87rH
wWhUkvXOc6/w8w0hUmAil2+rcCX5j1yI51dAnBF12gW2A3/fPZahBTM9rixh
iCiTguU82gnVVhQLg5U/YZAvWgPtKI/o42TviFuHloytAfLEBMCQOEjatccu
Syu4/G6EI6uAhOp3KCuDKRjE1I+VzwvmUntC0Y/qiHArKQkOAc2zvV3PGbAn
31K5NQIxxjUR/l57a2ddNObko2YYAUyZbwmQxabCDhUVp1TjzfetQ0y6J0H+
h1f3tDVmvD4BEzb9HaeDigvrjCHZXDbs/A2GO+ohRNFtzYIwr2p5Mp/7Vhr/
f2VX09vGkUTv/BUDXtYSKELSRmvFOSwExckaQWzBEhZ7WRgjcexwMyIFcihF
G+x/3673qqqrZ4ZycopjD3t6uqur6+NVPRII4y7UvsWE4N42eZK4Xr1nuBEG
Fc15I31rrnLadsnV187X7Bm31EmJYpDJPMm9AYvN7vfY+pg64PffxT5eLHMP
lcPqfVIArnfHCSizHQgdwJMbCSkPZqyikF8qECjKv6M0RWNpZEum/bl3G8xE
SoDdsVGCaTdTyhgXdgeLiO1ojfQkKrbtoB6XAR44syQdxcz/HkQBjyQZMwtB
2hxCeWB5/hEEXaWSLyziB4/LWmt9X93XwoC73jwfiKrlWhXiPJN4nozo4ZHo
P0rQ5wjOf7ck3sUuD/f0YaC7G7RYUtPiCgV9QYHnlRshGGFejIz5U90LgXCH
vjztestiCl2JN07GNhlF9bFk+VcPM6J2offYbrXbisVoK8H/8/w/FqRt6kfv
qiF6D9200cQdZxYIAj1xGSWl1oRqlaxmdZm69UPe3FLQ5E63mcdr3c8pVI67
EHBw2Rl1fBnSQVFOpIEmNC0CCsYFO4lCcQnFFZuyi6mdPrIkCHrU0JyB9e8a
173cQ0MfDzFvVL5sNy6VJb+xgd4xLo1J1b+saSLTYPB7QhbfIOKmaZyrbFL1
+okCGpx5oGJhVwl3YxBaFcgQrHugt5/uoHxmsh2l1aO3cyM90SSCF7Xb5xuI
dZrACRDmUniVLFLtp0QFoA8cVziYdCNCvM/777etEkF551Sre1h2BYWsyCOR
0aK9tzDi+Ga4bdbcOdNvjZyQ/QfD9L7sNUpAI2L6iOyD3AYZxGYftgq+GezO
VvooZlYKF1jjJyLRYKWdCQMxB809g5UnxdQEA4wGx2sxSM+T966F3nJIpAzB
RbXLrJtq05oLhZqQNKHnipyrspJQJeTnA5t6ZOoNVRhueYtg+dkQG/Cyxafa
5XntFBQxnvGU5Jy6b1ur5oKPqQ4yaMJG/V2GfA8x68OBNnATKhhCtrUlfR+G
AYmLpquWWzugFu+onvQwigHsDTKwaPdCbcdCuk1QiXKOg2E/0mEq23aBDVwP
KyXRWlrJaUyqSxs3slmBhvb21frP4CyVtemawrKGZNavaVAkGqa9j/Q9BJbR
RJ8rbCaLk5VXNFPkW/oU7PJNWgTp902ftHtSZR7pfexoSj5uYhisYT+IR9Lq
vUWUNJjpkvXRLy2KXTwhWrpb0JOhCuZ/B3aZf7XyBZzmmbBb3vhiZnbfFGaa
ozWiyXRQXs5/Si7KWpWbtVfFbKc4S6I3Yl6Q5ls/eRkTgbkXzKQqMhEv5pDS
wBIi9FA8VFxOlCC8uD8f4mplKmnhn41J+Ec2ZpfgqudKwmliqF6VJ8Km6a23
zxzke+8liCfK9oMaKp5WY1TC4ebOtzseYeXbz9c/aVHb2/RHRIVD5E/TUXx+
UZ2cOrg0hDGuIfmbzpPokGbGQWOHR62F3JPzimmStr5FG8jp239dffh48/bj
p/Tcp/QNn9JifLIVnap5blUIobIKXQFJoJUeXuUIAAWMTnN2ipGM8RV+qre+
H7xRul/EshQzEe1sfxAG09mfIeNKY1gFlHGz+nQGGZNKvEhSSWrBKwJbHCAE
bCWcNOM48iunrB4JrSCBLVds/63F3WL/JtcZoior45GVdgGgDRWvgrVtTpoV
+J2Rdu4qTZfH0B9pMpWyy60OCBGdX6QO6AGjgTME7ju85cebS1nW9EQrTqnd
BYhrcE+k66YEfmY54sLdV7LuRSDrZt6XIhPN7K2UjK62WhimHgxnaz1UPW+s
dknB0yzehlAYPyPA7kF3Y5GVhNRys7DezBIyNOYgRFc0aG0nzY+XvptNl1WD
7zSzWusL+aLMKZZ/B8s4x97EVt/itg105H3Gc5qCsHoQ/lqMENAjcmVk5jql
9Bj1kie6aM+JjYSGSMhWinGLCZKbKo4TPpcGaKasQbYC3a+VwxyK6r1uKgME
TcG9KMosMpN5C2fhst2toou6VyFpTK2/QH5Fay/Taki2U7dP9bMa7gUpu75F
qXzkIy5ykA3P9dpUw9FSc3o67HM7FeNpOuhpq/CbvW1q/V5sBulkuQPPXh+f
8YG1X4Kv5yfHhgqQ7tektKh4fS0267TFiz9ljc2q6Q13u9dYlRkJ5Zm5DEyi
//ToEO46rqisPSy00gARfq5JZbCqTtMS3uCXsfJRUnfKfyZsnxh55ww5LW2y
VdKKvsDDbiLyMhM7732lMbKe9mXVulwBX+dUd1vGWsx7kgssBEhugNF8Rnbw
6MKWlI2m/MEYTvhA5gpXfwVN2VdOF94jSS6YwoUvTfvlJbfjrrMwphPZKlPH
TvXD19ls30AdKk1UyXU2yhTVI4KSk4MeZ0ctVC45N/jt40ydKt6Iq62VpEMD
7SMGuPwr/pHB6BGCUPUYh01F+ogBc1pYWC38pXS6dTnaZ7Vpim5WqvvvmuRE
ZPSf5YqatrUdgLwuO7Ng4DZiO5vMNpvZPh/ES9brCZwpS2QUVSBiUNpjHh5M
Z0oiU3iKqCKdAsK8Ijuz7EKbA3wgw/fcn0HbPcZmdTMAskIggFirTeygYGSn
2C18zVzbgHC4v84q6r5vBW6B5YlDy8GI/rfmIMvck3sAC+dVzqdbFaEnMNUA
GtqSsqSIzkmiXp8KA4o31M6rK2ssFO1D+Zmm2KHgoZ0s3DpmcmoLShhu6J1X
sJTRCtbHQV1ZS2ytyI+xg08Y3USnxy5YkSa6BvxHmQqNImWxZoBJfHC8TN6D
43O1xxDG+tj3jRi+6V1ijg0M5IkjlX5thE6LlqvG+wiN8G4zi0CObdK03oIK
WdTl0tq/aGco7VeDKFT4Km3kH7Ual/VDksGPa3ZOQMeGADRuqs8N7k60a2rU
ECfcM8qZkhUrB6Jn2Dx7Ogg49RJtjOF4RCiPg8W3N5gPk++nTMsOcnQMFAgM
x64nNQX1qSH/u7uQJegs49G4SeVUgopyrmNNkZJRSWF28lzzW33X7R3d12wu
njtLEQWNyRCAhEcv2g7g7sX7a/yX0Wk02ErGzv19uhnw97G7j5jRXGOPgXj8
4+z0DPaL5prKlyB/8d7w2/Rq31+8+9jU7b3SFr0+O08DWEBd3mRuTU1gtAhj
WGYll04i3OGf5b1i1Mk4HkPBqlqr9PuMj5W7RkybxzXSGppfl0X6/v21BnHg
R6ZJoovIPf+Spu7ofAJi4QEdR9Mfnpbt4k6AzNS31bsrY2+S3NuyE9Q2V0wR
r1tyAYEg6eL68t07AwMSN7ciHSy7ISUj6r/YDn5+Fki5Ay+OEHzgZwtzlSBu
tkqJh7noFac9jqtMGVS96qE353+zTT47PT8mRKYKlkCPKPxh/bBrYTfl1eFH
lhFtESzZQPHQBgJjUsnPIt2nHIo9qZM5tmWsKRL6xBJPNTyk0jsmCQpwZPtP
BnodKatATwHVMcBtwBmR7XReBH+CH/GMm3W30d5JcTbgOV7vvvyCdJOoZswY
63yz/uItlyPeb+gM9BrcRb9CQyZsLie3jKxozyE0LJsEzYT07P7B6C6dY5Bn
ReEt8yqoWgF+CGTeWwpJ+LPtotUn5JjQ9EX8UlV4HdLw7sgZOXEXML8WBP0K
OH8MmF8VwHzRY1fpz5kLkX/64UI6NqWtFCzzwUvwfeTRSBZHWP4352dS2ySe
5+n5SdZIJ6+P52V1AnzrrTAtP0XP1VVesUTulcnBllxCo/m0NWMpbCisbutN
Cd2vkKKIpR9+Zznxx4dHodJMzm5IImwa3t+OSsKFVCdnPC2B8ElWd+B+gomR
5iKNOSXkPDNHO43x7fz034PrY2pixvKYWgV6J3eZBcCtYRmVw0wx+BmaL/HQ
pAUpvAo4OOrWR5lR0it5kJXRjORtPVoLY4lJfbuFfHP8Hp6zVVrNGI+rwaWu
fsrnglqnZyLTqUiWIA1jgb/390jPgGV7aTQ1Ut6DlEqZcTgpMw62nNqKrPdt
ZVCHuSMmGAd1VlgY4AEfi9lZ3iOEtW6bHkUau4fuMZVwu6g1aGhaFOUchpD+
Uy/24KmPalgqRnszzt/y5jX/Votz8k6ypXi/xkklw9Or6iF1hcMT0LW/iTNp
vd8G+9LPBJHZWuG+CKez2XvYdhGMo+Nv/NwORS8YyVTqLkUDoN92YvC1+IZY
ieETpFpJ6uNQGZkPS2nPfNimdf+yhUbYLK3GRlO4isU+FNPyEPiAG43FhYfF
wdw27WNjdAcKzn4DGFrbYrMki5jkNm24BQaYGpdFKygWGWLyBSL4c+Wh9H4Y
U2+cct3uoLMCb3S5NDNFjPFk1SEPlAb9tekM9kBh65+w3QrxfQ8OZzqw3oOW
xVwUMZC51gaFoC+RJhpoHrRKNNClxXEcGaKzTNf3YnfX2OFQOBK/JHv4Wc7S
Ulw5lfsFEXSXngLa9uWQeHuEIXgXwmbI5VnFVZbOVTp6HsvcGT3r1cUlLjKt
ILK4F+7iePEKewC6PyPJHqqiPhbBXwySAQ82L8i13ciM/pXU4tzwXGtncOgy
tGw3RYwcD16B/Gt6uKwwG74gnZgn2J4qiuFVMATrxX92TvrF882ErdrE5sN7
gRxLPkif3Vp3q3tClV4syzJ9CAcw6O8A5oi/Pwu/1xo+nv0+UX0QLdPE8orw
FVKytLAqY9mb0sccY3U/KEAvwCQGaEMdUCFZDGhxCPe5eMR588/Ab29xDYVB
elcDgs0Nw+nDrgmjNq07Box7xbZoB/l+tdbGz2o5MIa6pCe335dXE3hs9NMD
2TbvNiSPTX2SU0mskR1EVq+8r4LnLt8fNj8OILfvTk2SZAbOIyldT51rWJnt
Q9Ou11/Su/sRZWcsG+2SOPDuPi8JsC0+UIfeojR85UMaRlKFwZtf9+vcKTY3
yDOu2/WXZ4P3pHGmRDrlXnO8Zj2agB3LMZaQdY7SJxSApWEiGUspzN4WNUGk
UfEksMhnBl1cin++0n4AaWe+B/MI/n8/8ELTRV7v4wljdEnV9iGC5+wlG4Si
8OSb6nadbpLNg3jvIlaK52b2VFOIgGUBA1Qj46Qh10YTzt3T8q4xTRCGU5c0
L7rexF773tVfvlA+7lWQFv7BMstpsC4tXDftS5eq9OI1MxcQxknKMB7ifTkZ
n18ycYg2cz8P6VWNllqk4Z0CGt81GnFUf7l0xMe/LUnCyLcMvyQnO6X7/+r5
vkS7Juu6Rlk+MxLq592uF88ZevXO3Y2BSU5RNbsDiYJtDrbjTtXCXzbIDQRV
MWTtlIrsaw4yXeMF7UJcVMeLz74aEC2aQxtqVWNLdvsW54d6LE6lBMfs72Mr
glgH/y5TS9UOjqDHyW8XmSrqvP94+3j/gDQez1uh/8Z0fa7aXm82bMqlBnlU
3/Hyhvrmwoz7ibzfkIuOvw9aTcsT8yxo9DCLwbWw1hmhGSJleaWZ2BH5lZE/
5poL11pBK95hk5ICAZvFUY6EYPAPd+xsoLnTqTgbLOmVI6rogMLcn4rUG7YH
FbIWYsTUJE6ykezDYmYVZE5XFhmxMXK0DfV6dGxRPsDbEdU2ry7rh7TlvNe1
U8eGjpEqZj2cQoK7FFtbVl0vtplzgEax71TzCFDiWr+/YI36O/caduYyL7Y0
O2IEWQnY0qo8MIGFEIPRsRuzglr8fAUVHj8AeNrrvPIyEZx5boo6S4jXaiV4
9Tk5bwABWtSZeaem3VoBwwS4Po2FMy0yXngd9L/ue47jQSz8rBUZyM1aEKHM
kc2qi07wpJrU+4AArBXNya0Z9iwLB2BNW00Obpr+Ws+rt8svv8iluw7CCtPd
hW3GDj8GdV4R8aT3p94yTBRKQHGYH1McZyfIKxQ4QSacwiVPW7aE32qtY/J7
EGWVmONWID3TfQpoWtiT9MFJHzKQxmCg9roJWTmuw1b0iijSlw5lMg/XcLua
0aS5jiBJ/UIWLRphoiPgd2OEWKPkmf1yoOl3vSbs+RVMAon1z/kYKIjFyUxj
5QbwxHmnwys3yZ0xIGy9McLacIIS2Kg37ZJpSHKRZol3pa8p3IemFWh1fOS+
XigmVAV0tK/I6Z/uK/L1YnIzM2piVczbrb1Zm+i3ms6ROhK5NFxO5vnJ0cnx
cTXVRlzeUQ64Bbk2FSAd1Fr6kpfRxU5NoqXsk/G+DiJ5Y9XeprdQDSZBOs6Z
IKVdFnWtP3EuGrEBjryCdKSxXaXWQFExk2ONXqQ23jXvjgXcL1FtkGij4F/p
sWy4RnyhxJl2V1hhXfs3Uickzq2x+s2UDxCZC9t/mck+Tiy0EzJFYCyBy60P
qJmFU64vpiGQHYjITCSIG/Pt0fmxpsCdYFA+WmVJfiKmiTYJEISWfTU3cCCK
XC7W9vbJttMU50JIXymAS0bPOIY0WR98jJbeOwelsQlnykkqi8xaqcnL1D2x
9oS/jMSeMzqsYhd+pSLlD9SjqFoc0pa9Ms6gg71Bt0vTVkXtX8+SszWO+JAc
XpfT7vdcssnaWuHlOC7D3i3km/U0CQNn0hKTX6b1fnu1NLXyfPJ/d5OxztHx
AQA=

-->

</rfc>
