<?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.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-housley-tls-using-mls-handshake-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>Using the MLS Handshake in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-housley-tls-using-mls-handshake-00"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="05"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <abstract>
      <?line 58?>

<t>This document specifies an extension to the Transport Layer Security (TLS)
Protocol Version 1.3 that allows TLS clients and servers to use the
Message Layer Security (MLS) Protocol handshake to establish the shared
secret instead to the traditional shared secret establishment mechanism.
The MLS protocol provides straightforward mechanism to update the
shared secret that can be initiated by either the client or the server
during the TLS session, and each epoch provides forward security and
post-compromise security.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="TBD"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-housley-tls-using-mls-handshake/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security  mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/russhousley/draft-housley-tls-using-mls-handshake"/>.</t>
    </note>
  </front>
  <middle>
    <?line 69?>

<section anchor="intro">
      <name>Introduction</name>
      <t>This document specifies an extension to the Transport Layer Security (TLS)
Protocol Version 1.3 <xref target="RFC9846"/> that allows TLS clients and servers to
use the Message Layer Security (MLS) Protocol <xref target="RFC9420"/> handshake to
establish the shared secret.  The resulting shared secret is used in the
TLS key schedule to derive all of the cryptographic keying material for
the TLS 1.3 protocol.  The MLS protocol provides a straightforward
mechanism to update the shared secret, and either the client or the
server can initiate the update during the TLS session.  The period of
time during which one shared secret is used is called an epoch.  An epoch
provides forward security and post-compromise security.</t>
    </section>
    <section anchor="terms">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
    </section>
    <section anchor="rationale">
      <name>Motivation and Design Rationale</name>
      <t>There are operational motivations and security motivations for using the
MLS handshake to manage TLS shared secrets.</t>
      <t>An operational motivation is the straightforward mechanism for shared
secret update that can be initiated by either the client or the server.
The initial shared secret is based on the client KeyPackage and the
server Welcome, which are carried in the TLS 1.3 ClientHello and the
ServerHello, respectively. The KeyPackage and Welcome are specified
in <xref target="RFC9420"/>.  At any time during the TLS session, the client or
server can update the keying material in their LeafNode of the MLS
ratchet tree, which results in the computation of a fresh epoch,
including a fresh TLS shared secret.  By discarding all stale secret
values, each epoch provides forward security and post-compromise security.</t>
      <t>To apply the MLS protocol in TLS 1.3, the client provide a KeyPackage.
In MLS, the KeyPackages are distributed by the Delivery Service (DS), but
in the TLS environment, the the client KeyPackage is sent directly to
the server in an extension in the ClientHello message.  Once the TLS
session is established, the client or server can provide an update to
the keying material in their LeafNode in a mls_handshake message as
specified in <xref target="mls-hs"/>.  Each KeyPackage is intended to be used only
once.  Reuse of KeyPackages can lead to replay attacks.</t>
      <t>A security motivation is the ability to obtain both forward secrecy and
post-compromise security, especially for long-lived TLS sessions.
Forward secrecy means that TLS records sent at a certain point in time
are secure in the face of later compromise of a the peer.
Post-compromise security means that TLS records are secure even if the
communicating peer was compromised at some point in the past.</t>
      <t>Forward secrecy between epochs is provided by deleting private keys from
past versions of the MLS ratchet tree, as this prevents old session
secrets from being re-derived.  Forward secrecy within an epoch is
possible with the MLS protocol, but that feature is not currently
supported in TLS.</t>
      <t>Post-compromise security (PCS) is provided between epochs by the client
or server regularly updating their leaf key in the MLS ratchet tree.
Updating their leaf key prevents shared secrets from continuing to be
encrypted to public keys whose private keys had previously been
compromised.</t>
      <t>Note that a client or server sending an update of the keying material
for their LeafNode does not achieve PCS until the peer processes the
MLS Commit.  That is, the PCS guarantees come into effect when the peer
processes the relevant Commit, not when the sender creates it.</t>
      <t>This specification makes use of the two-party profile for MLS that is
defined in <xref target="I-D.kohbrok-mls-two-party-profile"/>.</t>
    </section>
    <section anchor="overview">
      <name>Extension Overview</name>
      <t>This section provides a brief overview of the
"tls_using_mls_handshake" extension.</t>
      <t>The client includes the "tls_using_mls_handshake" extension in the
ClientHello message.  The "tls_using_mls_handshake" extension MUST
contain the client KeyPackage.</t>
      <t>If the client includes both the "tls_using_mls_handshake" extension
and the "early_data" extension, then the server MUST terminate the
connection with an "illegal_parameter" alert.</t>
      <t>If the server is willing to use MLS to establish the shared secret,
then the server includes the "tls_using_mls_handshake" extension in
the ServerHello message.  The "tls_using_mls_handshake" extension
MUST contain the Welcome message created by the server using the
client KeyPackage.</t>
      <t>When the "tls_using_mls_handshake" extension is successfully
negotiated, the TLS 1.3 key schedule processing depends on the
shared secret produced by the MLS ratchet tree and MLS key schedule.</t>
      <t>The server MUST validate the client KeyPackage.  KeyPackage validation
depends on the GroupContext object, which captures MLS state:</t>
      <artwork><![CDATA[
   struct {
       ProtocolVersion version = mls10;
       CipherSuite cipher_suite;
       opaque group_id<V>;
       uint64 epoch;
       opaque tree_hash<V>;
       opaque confirmed_transcript_hash<V>;
       Extension extensions<V>;
   } GroupContext;
]]></artwork>
      <t>The fields in the MLS state have the following semantics for the TLS session:</t>
      <ul spacing="normal">
        <li>
          <t>The cipher_suite is the cipher suite from the client KeyPackage, and the
same cipher_suite MUST be used in the Welcome generated by the server.</t>
        </li>
        <li>
          <t>The group_id field is an application-defined identifier; it MUST contain "tls13".</t>
        </li>
        <li>
          <t>The epoch field represents the current version, starting with a value of
0x0000000000000000.</t>
        </li>
        <li>
          <t>The tree_hash field contains a commitment to the contents of the
group's ratchet tree and the credentials for the members of the
group, which are always only the TLS client and the TLS server.
See <xref section="7.8" sectionFormat="of" target="RFC9420"/> for details.</t>
        </li>
        <li>
          <t>The confirmed_transcript_hash field contains a running hash over
the MLS messages that led to this state. See <xref section="8.2" sectionFormat="of" target="RFC9420"/>
for details.</t>
        </li>
        <li>
          <t>The extensions field contains the details of any MLS protocol
extensions that apply to the group. See <xref section="12.1.7" sectionFormat="of" target="RFC9420"/>
for details.</t>
        </li>
      </ul>
      <t>The server generates Welcome message, which MUST include an extension of
type ratchet_tree to ensure that the client and the server have the
same MLS ratchet tree.  In MLS the ratchet tree is often provided by the
Delivery Service, which is not an option in TLS. The Welcome message provides
the client with the state of the group after it is created by the server:</t>
      <artwork><![CDATA[
   struct {
     CipherSuite cipher_suite;
     EncryptedGroupSecrets secrets<V>;
     opaque encrypted_group_info<V>;
   } Welcome;
]]></artwork>
      <t>See <xref section="12.4.3.1" sectionFormat="of" target="RFC9420"/> for details regarding creations and
processing of the Welcome message.</t>
    </section>
    <section anchor="tls-extn">
      <name>The "tls_using_mls_handshake" Extension</name>
      <t>This section specifies the "tls_using_mls_handshake" extension,
which MAY appear in the ClientHello message and ServerHello message.
It MUST NOT appear in any other messages.  The "tls_using_mls_handshake"
extension MUST NOT appear in the ServerHello message unless the
"tls_using_mls_handshake" extension appeared in the preceding ClientHello
message.  If an implementation recognizes the "tls_using_mls_handshake"
extension and receives it in any other message, then the implementation
MUST abort the handshake with an "illegal_parameter" alert.</t>
      <t>The general extension mechanisms enable clients and servers to
negotiate the use of specific extensions.  Clients request extended
functionality from servers with the extensions field in the
ClientHello message.  If the server responds with a HelloRetryRequest
message, then the client sends another ClientHello message as
described in <xref section="4.1.2" sectionFormat="of" target="RFC9846"/>, including the same
"tls_using_mls_handshake" extension as the original ClientHello
message, or aborts the handshake.</t>
      <t>Many server extensions are carried in the EncryptedExtensions
message; however, the "tls_using_mls_handshake" extension is carried
in the ServerHello message.  The "tls_using_mls_handshake" extension is
only present in the ServerHello message if the server recognizes the
"tls_using_mls_handshake" extension and the server is willing to use
MLS key management and authentication in lieu of the traditional
TLS 1.3 key management and authentication.</t>
      <t>The Extension structure is defined in <xref target="RFC9846"/>; it is repeated
here for convenience.</t>
      <artwork><![CDATA[
   struct {
     ExtensionType extension_type;
     opaque extension_data<0..2^16-1>;
   } Extension;
]]></artwork>
      <t>The "extension_type" identifies the particular extension type, and
the "extension_data" contains information specific to the particular
extension type.</t>
      <t>This document specifies the "tls_using_mls_handshake" extension,
adding one new type to ExtensionType:</t>
      <artwork><![CDATA[
   enum {
    tls_using_mls_handshake(TBD0),
    (65535)
   } ExtensionType;
]]></artwork>
      <t>The "tls_using_mls_handshake" extension is relevant when the client
and server are willing to use the MLS protocol for key management and
authentication.  The "tls_using_mls_handshake" extension provides the
client KeyPackage and the server KeyPackage needed to build the MLS
ratchet tress for the client and server. The KeyPackage structure is
defined in <xref section="10" sectionFormat="of" target="RFC9420"/>. The "tls_using_mls_handshake"
extension has the following syntax:</t>
      <artwork><![CDATA[
   struct {
     select (Handshake.msg_type) {
         case client_hello: KeyPackage;
         case server_hello: Welcome;
     };
   } TLSUsingMLSHandshake;
]]></artwork>
      <t>The TLS client creates its own KeyPackage for inclusion in the ClientHello.
The KeyPackage includes a cipher suite and any MLS extensions that the
client desires.</t>
      <t>If the TLS server supports MLS handshake, then the TLS server inspects KeyPackage
from the ClientHello to determine whether the cipher suite is supported and
acceptable, whether all of the client provided MLS extensions are supported
and acceptable, and whether the client credential is valid.  If all of these
checks are successful, then the TLS server creates the MLS group and sends the
Welcome message in the ServerHello.</t>
    </section>
    <section anchor="mls-hs">
      <name>MLS Handshake Messages</name>
      <t>If the "tls_using_mls_handshake" extension is successfully negotiated,
then the client and the server can update the keying material in their
LeafNode by encapsulating inside a TLS handshake message with a
"mls_handshake" type.  Only the MLS Commit message is needed to achieve
this capability, but any MLS handshake message could be carried in this
TLS handshake message to ensure future compatibility.</t>
      <artwork><![CDATA[
   enum {
     mls_handshake(TBD1),
     (255)
   } HandshakeType;
]]></artwork>
      <t>In the TLS protocol, the "mls_handshake" message encapsulates one of the
MLS Handshake messages specified in <xref target="I-D.kohbrok-mls-two-party-profile"/>
for key update or resumption.  When updating the keying material in the
MLS LeafNode, the Commit message MUST include the update by value.  The
TwoPartyMLSMessage types are:</t>
      <artwork><![CDATA[
   struct {
     ProtocolVersion version = mls10;
     uint16 tpmlsmt;
     select (TwoPartyMLSMessage.tpmlsmt) {
         case mls_connection_update:
             Commit commit;
         case mls_epoch_key_update:
             uint64 epoch;
         case mls_resumption_request:
             Commit commit;
         case mls_resumption_response:
             Commit commit;
     };
   } TwoPartyMLSMessage;
]]></artwork>
      <t>The format for each message is defined in <xref target="RFC9420"/>.</t>
      <t>Since the TLS environment does not include a Delivery Service, the MLS Commit
message MUST contain the proposal to be applied by value as specified in
<xref section="12.4" sectionFormat="of" target="RFC9420"/>.</t>
      <section anchor="establishing-the-initial-tls-shared-secret-with-mls">
        <name>Establishing the Initial TLS Shared Secret with MLS</name>
        <t>The TLS server creates the MLS group, add it adds the client with the
KeyPackage provided in the ClientHello, which results in a group of two
members.  The server send the Welcome message to the client in the ServerHello.
The Welcome can include any MLS extensions that are supported by the client
KeyPackage.</t>
        <t>Upon successful completion of the MLS handshake, the exporter_secret
produced by the MLS key schedule is used to derive the TLS shared secret,
this value is referred to as the "Handshake Secret" in <xref target="RFC9846"/>.  The
TLS shared secret is derived as:</t>
        <artwork><![CDATA[
   MLS-Exporter(Label, Context, Length) =
       ExpandWithLabel(DeriveSecret(exporter_secret,
           "TLS shared secret"), "exported",
           Hash(Context), Length)
]]></artwork>
        <t>Note: Length is the size of the TLS shared secret to be input into the TLS key
schedule.</t>
      </section>
      <section anchor="updating-the-tls-shared-secret-with-mls">
        <name>Updating the TLS Shared Secret with MLS</name>
        <t>After the initial MLS handshake is successfully completed or a session is
resumed, the client or the server can update the session key using a
Commit message, which results in a new TLS shared secret.  Once the new
MLS key schedule is computed, a fresh "Handshake Secret" is exported to
compute a new TLS key schedule.</t>
        <t>To enforce the forward secrecy and post-compromise security, the client
and the server periodically update the keys that represent them to the
MLS group by sending a Commit message that includes an Update by value
for their own LeafNode.  See <xref section="12.1.2" sectionFormat="of" target="RFC9420"/> for details.</t>
        <t>Once the Commit message is sent, some traffic using the previous
keying material might still be in flight.  Once traffic using the
new keying material is received, then the stale keying material can
safely be discarded.</t>
        <t>The following illustrates the update of the TLS shared secret.</t>
        <artwork><![CDATA[
Client                            Server
(Initiator)                       (Responder)

  /------------------------------------------\
 |            Initial Handshake               |
  \------------------------------------------/

[Application Data]N    -------->
                       <-------- [Application Data]N

  /------------------------------------------\
 |             Some time later ...            |
  \------------------------------------------/

mls_connection_update  -------->

                                 # no epoch change yet
                       <-------- [Application Data]N
                                 # confirms epoch change
                       <-------- mls_epoch_key_update=N+1
                       <-------- [Application Data]N+1
[Application Data]N+1  -------->
                       <-------- [Application Data]N+1

Legend:

    []N Indicates messages protected with keys derived from epoch N
]]></artwork>
      </section>
      <section anchor="resumption">
        <name>Resumption</name>
        <t>After the initial MLS handshake is successfully completed, a session can
resume as long as the client and server have retained the MLS group
state.  The normal TLS 1.3 resumption process is described in
<xref section="2.2" sectionFormat="of" target="RFC9846"/>.</t>
        <t>To cryptographically separate the resumed session from the original
session and ensure forward secrecy and post-compromise security, the
client and the server each update their nodes in the MLS ratchet tree
with a Commit message.</t>
        <t>If the client had sent a Update before the TLS session was disconnected,
and the client was waiting for a EpochKeyUpdate, then the client MUST
use that pending Update message as the basis for the Commit message.</t>
        <t>If the server had sent a Update before the TLS session was disconnected,
and the server was waiting for a EpochKeyUpdate, then the server MUST
use that pending Update message as the basis for the Commit message.</t>
        <t>The following illustrates the update of the TLS shared secret after resumption.</t>
        <artwork><![CDATA[
Client                            Server
(Initiator)                       (Responder)

  /------------------------------------------\
 |             Initial Handshake              |
  \------------------------------------------/

[Application Data]N    -------->
                       <-------- [Application Data]N

  /------------------------------------------\
 |  Disconnect and resume some time later ... |
  \------------------------------------------/

mls_resumption_request -------->
                       <-------- mls_resumption_response
                                 # confirms epoch changes
                       <-------- [Application Data]N+2
[Application Data]N+2  -------->
                       <-------- [Application Data]N+2

Legend:

    []N Indicates messages protected with keys derived from epoch N
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations in <xref target="RFC9846"/> and <xref target="RFC9420"/> apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the "TLS ExtensionType Values" registry <xref target="IANA-TLS-EXT"/> to
include "tls_using_mls_handshake" with a value of TBD0 and the list of
messages "CH, SH" in which the "tls_using_mls_handshake" extension is allowed
to appear.</t>
      <t>IANA is requested to update the "TLS HandshakeType Values" registry <xref target="IANA-TLS-HS"/> to
include "mls_handshake" with a value of TBD1, a DTLS-OK value of "Y", and a
Reference to this document (once it is published as an RFC).</t>
      <t>IANA is requested to update the "MLS Exporter Labels" registry <xref target="IANA-MLS-EL"/> to
include "TLS shared secret", a Recommended value of "N", and a
Reference to this document (once it is published as an RFC).</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC9846">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
              <organization>Independent</organization>
            </author>
            <date year="2026" month="February"/>
          </front>
          <seriesInfo name="RFC" value="9846"/>
        </reference>
        <reference anchor="I-D.kohbrok-mls-two-party-profile">
          <front>
            <title>A two-party profile for MLS</title>
            <author fullname="Konrad Kohbrok" initials="K." surname="Kohbrok">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <date day="3" month="February" year="2026"/>
            <abstract>
              <t>   TODO Abstract

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kohbrok-mls-two-party-profile-00"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA-MLS-EL" target="https://www.iana.org/assignments/mls/mls.xhtml#mls-exporter-labels">
          <front>
            <title>TMLS Exporter Labels</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-TLS-EXT" target="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml">
          <front>
            <title>TLS ExtensionType Values</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-TLS-HS" target="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-7">
          <front>
            <title>TLS HandshakeType Values</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 488?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Sean Turner, Raphael Robert, and Konrad Kohbrok for providing constructive
comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIACzphGkAA9VcbXPbRpL+Pr9iiq66k25JWpIdJysnW+tIylkVyfZJdHJb
u3cqEBiSOIMADwOI4XqT375P97xgAIIyZe9W3akqMQQMerp7+r0bGo1Gokqr
TJ3KwXud5nNZLZS8vrqVr6M80Yvog5JpLie4cTx+NhBxVKl5UW5Opa4SIZIi
zqMlXk7KaFaNFkWtM7UZVZke1QRttMTVwkEaHR0JXU+XqdZpkVebFV68vJj8
IPJ6OVXlqUgA/VTcn8pnIipVBJxuVVyXabUZiHVRfpiXRb3C3UkZ5XpVlJW8
ijaqlM2qe5XXACHlp5dKaTAY0OUySjNcAvE/pqqajYtyTrejMl7g9qKqVvr0
6VNaRbfSezV2y57SjafTslhr9RTvP6X35mm1qKensqy1tkx5uheL8G4GJujq
VE6+PxciqqtFAc6MpOHzDQDK1wYG1mL/U/lTOk8zT9hQXl2dEerTaanuu0/x
QBlaLSJ/vKfnWsXjuFgKkRflMqpAH/Hw5oezk+Pj39vLb46/fm4vf//85Mhd
fvP8BV2Cm1aMJhCgXVyXB5CkQ/muLKoiLjL5kypJFIxsERBHr+QfQ/NFmcby
Rum4KLPIPklzjQfj7m3mx2WeqJXC//KKb7NUyZOjkxejoxO+o1WZKjB/Vrid
iJRTScTgxuXofPyhWOBMP/DpVOtitIrKajNalcUsBZVC0MsBqy5fvXk1gtqM
Lq5OewgxeGFNyKkJqdnFL8QmsOgqmqpMm+dROVeQACd26/V6nEZ5ZMQNyjPP
lyBOPwVy9N/4l0W1zJ4QqsqCG2UOHGM2Icz+c7I/aoxZpXI6nQnURP4UZbV6
JHoVI2ShkLKN7hnKzgeGkBDp17ePwtkbrS/CGWcNwQMXu79aRrdvjr4WYjQa
QeF0VUZxJcRkkWoJ01gTSKlXKk5nkDcZ5dJTLauCTe3DmiL6NAXvRZWMsgwm
h6mOs5RwB/yERPseSwl8rRVtIa6V1tFcbW1w3VJFb4LoVRigaJqlesE44nap
EgEjUaqKVK9SUeIIAM1JWgG1KLMLpV3ogTAblirGFqlejsXEupiV2xsX92kC
DhEH0/migm6tozJpXmJ6VqTJTFJ7I+ZHDO5OyVkBGSxL5HQjFcwwSCY0DY8g
OYYi5pJIwAnr8oiPWrFjGjIjVRQvpFoV+L9Hz6GlHQ+xUKwKXY1gPLEKnk35
h2MjFss0STIlxBPYpaoskjomZsmPT1L69dd/vrR8/GjN9K+/7ik5wkqO3E9y
zAZwCdgglCLRJ0X2zMZSkhSUStdZRWfQPlFwBDgkFHrQcROqH9RG6nihkjpj
EU1gw+8VESOLmTnicrOqinkZrRZwGFhPcGGisRCyibMT7qCJLU74LCb98hh1
JVLskMg2/laCdkifMJxmiXXiyqssuH6ptHiuQE2RgGSEbUu/dg2KF7LI1S4+
auyWZbgiqSKhBrhX9lI8KN/yAfl+IieqXKZ5kRXzDUQarF5qFmnF54WYLdFy
cP3+djIYmn/lm7d8fXPxH+8vby7O6fr29aurK39hVgj88vb9lX1OV82bZ2+v
ry/enJuXcVd2bl2/+tOAj0AM3r6bXL598+pqYEQp1DTwic6QbQYQX4FfxB+s
QExRplMjft+fvfuXfKpXL4+fCxZ0iogg6HxNIRGu1wtljUaRZxv7K44P/Fut
VFQSHHAfwfMqraJMD2kXxIXrXEJAFDPyukAoEbFpIEDnilySvImMZVVgbumu
DYOBPVFQQCDsA7n0MJxG22MMH+CMZe0ifUFi37L8SzjFuRW8UJQ0sITA9G9H
8sVKsNN8065tN+J15/Nst/Ei5o2u4wE204jEvsjD939Um3dR/IHII+4Emviz
yiDgamj1iPgaRyViRGeBvNU4Y1CvFUyoB3LLQPjekCwaLDiFhdlmzBrb2dbu
xZs4Y58gnAzNKCknBDTfyFDJt9xUizehVQnsUtcMGnpSxJsqmr0pEuWsJyRB
4GhhYeFQS+WZYUy0dowgQ1BX5tTxZiRnWGAd5RBkxFmd0IbuwZYggbbvNzJJ
NThsVsKCw1Fkyi4QJhYc7u2BH7JQk4J0EEpZdW18k9W2GGl3Av7NuY3FZU4v
m4XNfc2HCFIqmIvayi0tOVcZBKDcSBKNNFby4Pz2cCixRgTypPL7tCw47jSQ
+2UV0qzpVpKWECwipRCNHrBtCSMFu0EoqEvjxsH5t3ms3P7CyhFt4D21Sjpi
JQOx8rxpJMyg8mkhIywlEpS7xthYrGALhdcDyXrAGbFmNbggGWgzg6w1krvE
Gu/aKHq2EQWIwys3isIXyGZ4UIR+ZqPWUq2yCJJTVXjKdq3PUjqbFk3TjJ7g
xWJaRUBwWlSLUBBxLA9HghBlphCSvmFLmBXI+0lEklChgcoPHahLhXjP2Eha
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
aSqfPG0IPeG2ANRWGArpc/C/A6Sjbew7SgAA

-->

</rfc>
