<?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.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-combiner-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="APQ-MLS">Amortized PQ MLS Combiner</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-combiner-02"/>
    <author initials="X." surname="Tian" fullname="Xisen Tian">
      <organization>Naval Postgraduate School</organization>
      <address>
        <email>xisen.tian1@nps.edu</email>
      </address>
    </author>
    <author initials="B." surname="Hale" fullname="Britta Hale">
      <organization>Naval Postgraduate School</organization>
      <address>
        <email>britta.hale@nps.edu</email>
      </address>
    </author>
    <author initials="M." surname="Mularczyk" fullname="Marta Mularczyk">
      <organization>AWS</organization>
      <address>
        <email>mulmarta@amazon.ch</email>
      </address>
    </author>
    <author initials="J." surname="Alwen" fullname="Joël Alwen">
      <organization>AWS</organization>
      <address>
        <email>alwenjo@amazon.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>security</keyword>
    <keyword>authenticated key exchange</keyword>
    <keyword>PCS</keyword>
    <keyword>Post-Quantum</keyword>
    <abstract>
      <?line 56?>

<t>This document describes a protocol for combining a traditional MLS session with a
post-quantum (PQ) MLS session to achieve flexible and efficient amortized PQ
confidentiality and authenticity that amortizes the computational cost of PQ Key
Encapsulation Mechanisms and Digital Signature Algorithms. Specifically, we
describe how to use the exporter secret of a PQ MLS session, i.e., an MLS session
using a PQ ciphersuite, to seed PQ guarantees into an MLS session using a
traditional ciphersuite. By supporting on-demand traditional-only key updates
(a.k.a. PARTIAL updates) or hybrid-PQ key updates (a.k.a. FULL updates), we can
reduce the bandwidth and computational overhead associated with PQ operations
while meeting the requirement of frequent key rotations.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mlswg.github.io/mls-combiner/draft-ietf-mls-combiner.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-mls-combiner/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Messaging Layer Security Working Group mailing list (<eref target="mailto:mls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mlswg/mls-combiner"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A fully capable quantum adversary has the ability to break fundamental underlying
cryptographic assumptions of traditional asymmetric cryptography. This has led to
the development of post-quantum (PQ) cryptographically secure Key Encapsulation
Mechanisms (KEMs) and digital signature algorithms (DSAs) by the cryptographic
research community which have been formally adopted by the National Institute of
Standards and Technology (NIST), including the Module Lattice KEM (ML-KEM) and
Module Lattice DSA (ML-DSA) algorithms. While these provide PQ security, ML-KEM
and ML-DSA have significant overhead in terms of public key size, signature size,
ciphertext size, and CPU time compared to their traditional counterparts. This
has made achieving PQ entity and data authenticity particularly challenging. The
hybrid approach in this draft amortizes the PQ overhead costs enabling practical
PQ confidentiality or PQ confidentiality <em>and</em> PQ authenticity.</t>
      <t>Moreover, research arms on side-channel attacks, etc., have motivated uses of
hybrid-PQ combiners that draw security from both the underlying PQ and underlying
traditional components. A variety of hybrid security treatments have arisen across
IETF working groups to bridge the gap between performance and security to encourage
the adoption of PQ security in existing protocols, including the MLS protocol
<xref target="RFC9420"/>.</t>
      <t>Within the MLS working group, there are various ways to approach PQ security
extensions:</t>
      <ol spacing="normal" type="1"><li>
          <t>A single MLS ciphersuite for a hybrid post-quantum/traditional KEM.  The</t>
        </li>
        <li>
          <t>ciphersuite can act as a drop-in replacement for the KEM, focusing on hybrid</t>
        </li>
        <li>
          <t>confidentiality but not authenticity, and does not incur changes elsewhere in</t>
        </li>
        <li>
          <t>the MLS stack. As a confidentiality focus, it addresses the the harvest-now /</t>
        </li>
        <li>
          <t>decrypt-later threat model. However, every key epoch incurs a PQ overhead cost.</t>
        </li>
        <li>
          <t>Mechanisms that leverage hybridization as a means to not only address the</t>
        </li>
        <li>
          <t>security balance between PQ and traditional components and achieve resistance</t>
        </li>
        <li>
          <t>to harvest-now / decrypt-later attacks, but also use it as a means to improve</t>
        </li>
        <li>
          <t>performance of PQ use while achieving PQ authenticity as well.</t>
        </li>
      </ol>
      <t>This document addresses the second topic of these work items.</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>The terms MLS client, MLS member, MLS group, Leaf Node, GroupContext, KeyPackage,
Signature Key, Handshake Message, Private Message, Public Message, and
RequiredCapabilities have the same meanings as in the MLS protocol <xref target="RFC9420"/>.</t>
    </section>
    <section anchor="notation">
      <name>Notation</name>
      <t>We use terms from from MLS <xref target="RFC9420"/> and PQ Hybrid Terminology
<xref target="I-D.ietf-pquip-pqt-hybrid-terminology"/>. Below, we have restated relevant
terms and define new ones:</t>
      <t>Application Message: A PrivateMessage carrying application data.</t>
      <t>Handshake Message: A PublicMessage or PrivateMessage carrying an MLS Proposal or
Commit object, as opposed to application data.</t>
      <t>Key Derivation Function (KDF): A Hashed Message Authentication Code (HMAC)-based
expand-and-extract key derivation function (HKDF) as described in <xref target="RFC5869"/>.</t>
      <t>Key Encapsulation Mechanism (KEM): A key transport protocol that allows two
parties to obtain a shared secret based on the receiver's public key.</t>
      <t>Post-Quantum (PQ) MLS Session: An MLS session that uses a PQ-KEM construction.
It may optionally also use a PQ-DSA construction.</t>
      <t>Traditional MLS Session: An MLS session that uses a Diffie-Hellman (DH) based
KEM as described in <xref target="RFC9180"/>.</t>
      <t>PQ/T: A Post-Quantum and Traditional hybrid (protocol).</t>
    </section>
    <section anchor="the-combiner-protocol-execution">
      <name>The Combiner Protocol Execution</name>
      <t>The Amortized PQ MLS (APQ-MLS) combiner protocol runs two MLS sessions in parallel,
synchronizing their group memberships. The two sessions are combined by exporting a
secret from the PQ session and importing it as a Pre-Shared Key (PSK) into the
traditional session. This combination process is mandatory for Commits of Add and
Remove proposals in order to maintain synchronization between the sessions.
However, it is optional for any other Commits (e.g. to allow for less
computationally expensive traditional key rotations). Due to the higher
computational costs and output sizes of PQ KEM (and signature) operations, it may
be desirable to issue PQ combined (a.k.a. FULL) Commits less frequently than the
traditional-only (a.k.a. PARTIAL) Commits. Since FULL Commits introduce PQ security
into the MLS key schedule, the overall key schedule remains PQ-secure even when
PARTIAL Commits are used. The FULL Commit rate establishes the post-quantum
Post-Compromise Security (PCS) window, while the PARTIAL Commit rate can tighten
the traditional PCS window even while maintaining PQ security more generally. The
combiner protocol design treats both sessions as black-box interfaces so we only
highlight operations requiring synchronizations in this document.</t>
      <t>Specific update frequencies are left to the application. However, there are
significant security disadvantages to infrequent FULL commits. Notably, if an
application that has a threshold activity window for determining 'inactive'
devices for removal, the frequency of FULL Commits <bcp14>MUST</bcp14> be greater than that
threshold window; if the span between FULL Commmits exceeds the threshold window,
the device <bcp14>MUST</bcp14> be considered inactive and removed from the group, even if
traditional Commits are more frequent. Depending on the PARTIAL update frequency,
the FULL update frequency may be significantly spread out; e.g., if a traditional
update occurs at every message, occuring frequently throughout a day, then a PQ/T
update could occur once every fifty or one hundred messages. In contrast, if a
traditional update occurs only once a day, then a PQ/T update frequency should
occur at a far more reduced ratio to the traditional-only update frequency, for
example a PQ/T update once every one or two weeks. A critical consideration is
the PCS threat window of a quantum attacker within the context of the given
application; FULL Commit frequencies should be calibrated accordingly.</t>
      <t>The default way to start a APQ-MLS combined session is to create a PQ MLS session
and then start a traditional MLS session with the exported PSK from the PQ session,
as previously mentioned. Alternatively, a combined session can also be created after
a traditional MLS session has already been running. This is done through creating a
PQ MLS session with the same group members, sending a Welcome message containing
the APQInfo struct in the GroupContext, and then making a FULL Commit as described
in <xref target="commit-flow"/>.</t>
      <section anchor="commit-flow">
        <name>Commit Flow</name>
        <t>Commits to proposals <bcp14>MAY</bcp14> be <em>PARTIAL</em> or <em>FULL</em>. For a PARTIAL Commit, only the
traditional session's epoch is updated following the Propose-Commit sequence from
Section 12 of <xref target="RFC9420"/>. For a FULL Commit, a Commit is first applied to the PQ
session and another Commit is applied to the traditional session using a PSK
derived from the PQ session using the DeriveExtensionSecret and <tt>apq_psk</tt> label
(see <xref target="key-schedule"/>). To ensure the correct PSK is imported into the traditional
session, the sender includes information about the PSK in a PreSharedKey proposal
for the traditional session's Commit list of proposals. The information about the
exported PSK is captured (shown '=' in the figures below for illustration purposes)
by the PreSharedKeyID struct as detailed in <xref target="RFC9420"/>. Receivers process the PQ
Commit to derive a new epoch in the PQ session and then the traditional Commit
(which also includes the PSK proposal) to derive the new epoch in the traditional
session.</t>
        <artwork><![CDATA[
                                                                        Group
      A                                      B                         Channel
    |                                        |                            |
    | Commit'()                              |                            |
    |    PresharedKeyID =                    |                            |
    |    DeriveExtensionSecret('apq_psk') |                            |
    | Commit(PreSharedKeyID)                 |                            |
    |-------------------------------------------------------------------->|
    |                                        |                            |
    |                                        |                 Commit'()  |
    |                                        |    Commit(PreSharedKeyID)  |
    |<--------------------------------------------------------------------+
    |                                        |<---------------------------+
    Fig 1a. FULL Commit to an empty proposal list.
        Messages with ' are sent in the the PQ session.
        PreSharedKeyID identifies a PSK exported from the PQ
        session in the new epoch following a Commit'(). The
        PreSharedKeyID  is implicitly included in the commit
        in the classical session via the PreSharedKey Proposal.
]]></artwork>
        <artwork><![CDATA[
                                                                            Group
      A                                      B                             Channel
    |                                        |                                |
    |                                        | Upd'(B)                        |
    |                                        | Upd(B, f)                      |
    |                                        |------------------------------->|
    |                                        |                                |
    |                                        |                        Upd'(B) |
    |                                        |                      Upd(B, f) |
    |<------------------------------------------------------------------------+
    |                                        |<-------------------------------+
    |                                        |                                |
    | Commit'(Upd')                          |                                |
    |    PresharedKeyID =                    |                                |
    |    DeriveExtensionSecret('apq_psk') |                                |
    | Commit(Upd, PreSharedKeyID)            |                                |
    |------------------------------------------------------------------------>|
    |                                        |                                |
    |                                        |                  Commit'(Upd') |
    |                                        |    Commit(Upd, PreSharedKeyID) |
    |<------------------------------------------------------------------------+
    |                                        |<-------------------------------+
    Fig 1b. FULL Commit to an Update proposal from Client B.
        Messages with ' are sent in the the PQ session.
]]></artwork>
        <aside>
          <t>REMARK: Fig 1b shows Client A accepting the update proposals from Client B as a
  FULL Commit. The flag <tt>f</tt> in the classical update proposal <tt>Upd(B, f)</tt> indicates
  B's intention for a FULL Commit to whomever Commits to its proposal.</t>
        </aside>
      </section>
      <section anchor="adding-a-user">
        <name>Adding a User</name>
        <t>User leaf nodes are first added to the PQ session following the sequence described
in Section 3 of <xref target="RFC9420"/> except using PQ algorithms where HPKE algorithms exist.
For example, a PQ-DSA signed PQ KeyPackage, i.e. containing a PQ public key, must
first be published via the Distribution Service (DS). Then the associated Commit
and Welcome messages will be sent and processed in the PQ session according to
Section 12 of <xref target="RFC9420"/>. The same sequence is repeated in the standard session
except following the FULL Commit combining sequence where a PreSharedKeyID proposal
is additionally committed. The joiner <bcp14>MUST</bcp14> issue a FULL Commit as soon as possible
after joining to achieve PCS. The FULL Commit <bcp14>SHOULD</bcp14> be the first Commit sent by
the joiner.</t>
        <artwork><![CDATA[
                                                         Key Package                                    Group
    A                                          B          Directory                                    Channel
    |                                          |              |                                           |
    |                                          | KeyPackageB' |                                           |
    |                                          |  KeyPackageB |                                           |
    |<--------------------------------------------------------+                                           |
    |                                          |              |                                           |
    | Commit'(Add'(KeyPackageB'))              |              |                                           |
    |   PresharedKeyID =                       |              |                                           |
    |   DeriveExtensionSecret('apq_psk')    |              |                                           |
    | Commit(Add(KeyPackageB), PreSharedKeyID) |              |                                           |
    +---------------------------------------------------------------------------------------------------->|
    |                                          |              |                                           |
    | Welcome'                                 |              |                                           |
    | Welcome(PreSharedKeyID)                  |              |                                           |
    +----------------------------------------->|              |                                           |
    |                                          |              |                                           |
    |                                          |              |  Commit'(Add'(KeyPackageB'))              |
    |                                          |              |  Commit(Add(KeyPackageB), PreSharedKeyID) |
    |<----------------------------------------------------------------------------------------------------+

      Figure 2:
      Client A adds client B to the group.
      Messages with ' come from the PQ session. Processing Welcome and Commit in the traditional
      session requires the PSK exported from the PQ session.
]]></artwork>
        <section anchor="welcome-message-validation">
          <name>Welcome Message Validation</name>
          <t>Since a client must join two sessions, the Welcome messages it receives to
each session must indicate that it is not sufficient to join only one or the
other. Therefore, the APQInfo struct indicating the GroupID and ciphersuites
of the two sessions <bcp14>MUST</bcp14> be included in the Welcome message via serialization
as a GroupContext Extension in order to validate joining the combined sessions.
All members <bcp14>MUST</bcp14> verify group membership is consistent in both sessions after
a join and the new member <bcp14>MUST</bcp14> issue a FULL Commit as described in Fig 1b.</t>
        </section>
        <section anchor="external-joins">
          <name>External Joins</name>
          <t>External joins are used by members who join a group without being explicitly
added (via an Add-Commit sequence) by another existing member. The external
user <bcp14>MUST</bcp14> join both the PQ session and the traditional session. As stated
previously, the GroupInfo used to create the External Commit <bcp14>MUST</bcp14> contain
the APQInfo struct. After joining, the new member <bcp14>MUST</bcp14> issue a FULL Commit
as described in Fig 1b.</t>
        </section>
      </section>
      <section anchor="removing-a-group-member">
        <name>Removing a Group Member</name>
        <t>User removals <bcp14>MUST</bcp14> be done in both PQ and traditional sessions followed by
a FULL Commit Update as as described in Fig 1b. Members <bcp14>MUST</bcp14> verify group
membership is consistent in both sessions after a removal.</t>
      </section>
      <section anchor="application-messages">
        <name>Application Messages</name>
        <t>APQ-MLS combiner provides PQ security to the traditional MLS session.
Application messages are therefore only sent in the traditional session
using the <tt>encryption_secret</tt> provided by the key schedule of the traditional
session according to Section 15 of <xref target="RFC9420"/>.</t>
      </section>
    </section>
    <section anchor="modes-of-operation">
      <name>Modes of Operation</name>
      <t>Security needs vary by organizations and system-specific risk tolerance
and/or constraints. While this combiner protocol targets combining a PQ
session and a traditional session the degree of PQ security may be tuned
depending on the use-case: i.e., as PQ/T Confidentiality Only or both PQ/T
Confidentiality and PQ/T Authenticity. For PQ/T Confidentiality Only, the
PQ session <bcp14>MUST</bcp14> use a PQ KEM, while for PQ authenticity, the PQ session
<bcp14>MUST</bcp14> use both a PQ KEM and a PQ DSA. The modes of operation are specified
by the <tt>mode</tt> flag in APQInfo struct and are listed below.</t>
      <section anchor="pqt-confidentiality-only">
        <name>PQ/T Confidentiality Only</name>
        <t>The default mode of operation is PQ/T Confidentiality Only mode. This mode
provides confidentiality and limited authenticity against quantum attackers.
More precisely, it provides PQ authenticity against "outsiders", that is,
against quantum attackers who do not have acces to (signature) secret keys
of any group member. (Authenticity comes from the fact that the traditional
session adds AEAD / MAC tags which are not available to outsiders with CRQC.)
This mode does not prevent quantum impersonation attacks by other group members.
That is, a group member with a CRQC can successfully impersonate another
group member.</t>
        <t>Note that an active attacker with access to a CRQC can become a group member
by impersonating members in the moment they are added. As such, the
authenticity guarantees outlined above only hold as long as the adversary
is passive during the addition of new group members.</t>
      </section>
      <section anchor="pqt-confidentiality-authenticity">
        <name>PQ/T Confidentiality + Authenticity</name>
        <t>The elevated mode of operation is the PQ/T Confidentiality + Authenticity mode.
Under a use environment of a cryptographically relevant quantum computer (CRQC),
the threat model used in the default mode would be too weak and assurance about
update authenticity is required. Recall that authenticity in MLS refers to three
types of guarantees: 1) that messages were sent by a member of the group provided
by the computed symmetric group key used in AEAD, 2) that key updates were
performed by a valid member of the group, and 3) that a message was sent by a
particular user (i.e. non-repudiation) provided by digital signatures on messages.
While the symmetric group key used for AEAD in the traditional session remains
protected from a CRQC adversary through the PSK from the PQ session, signatures
would not be secure against forgery without using a PQ DSA to sign handshake
messages nor are application messages assured to have non-repudiation against a
CRQC adversary. Therefore, in the PQ/T Confidentiality + Authenticity mode, the
PQ session <bcp14>MUST</bcp14> use a PQ DSA in addition to PQ KEM ciphersuites for handshake
messages (the traditional session remains unchanged).</t>
        <t>This version of PQ authenticity provides PQ authenticity to the PQ session's
MLS commit messages, strengthening assurance for (1) and ensuring (2). These in
turn provide PQ assurance for the key schedule from which application keys are
derived in the traditional session. Application keys are used in an AEAD for
protection of MLS application messages and thereby inherit the PQ security.
However, it should be noted that PQ non-repudation security for application
messages as described by (3) is not achieved by this mode. Achieving PQ
non-repudiation on application messages would require hybrid signatures in
the traditional session, with considerations to options described in
<xref target="I-D.hale-pquip-hybrid-signature-spectrums"/>.</t>
      </section>
    </section>
    <section anchor="extension-requirements-to-mls">
      <name>Extension Requirements to MLS</name>
      <t>The APQInfo struct contains characterizing information to signal to users that
they are participating in a hybrid session. This is necessary both functionally
to allow for group synchronization and as a security measure to prevent
downgrading attacks to coax users into parcipating in just one of the two
sessions. The <tt>group_id</tt>, <tt>cipher_suite</tt>, and <tt>epoch</tt> from both sessions
(<tt>t</tt> for the traditional session and <tt>pq</tt> for the PQ session) are used as
bookkeeping values to validate and synchronize group operations. The <tt>mode</tt>
is a boolean value: <tt>0</tt> for the default PQ/T Confidentiality Only mode and
<tt>1</tt> for the PQ/T Confidentiality + Authenticity mode.</t>
      <t>The APQInfo struct conforms to the Safe Extensions API (see
<xref target="I-D.ietf-mls-extensions"/>). Recall that an extension is called <em>safe</em> if
it does not modify base MLS protocol or other MLS extensions beyond using
components of the Safe Extension API. This allows security analysis of our
APQ-MLS Combiner protocol in isolation of the security guarantees of the
base MLS protocol to enable composability of guarantees. The HPMLSInfo
extension struct <bcp14>SHALL</bcp14> be in the following format:</t>
      <artwork><![CDATA[
      struct{
          ExtensionType APQ;
          opaque extension_data<V>;
          } ExtensionContent;

      struct{
          opaque t_session_group_id<V>;
          opaque PQ_session_group_id<V>;
          bool mode;
          CipherSuite t_cipher_suite;
          CipherSuite pq_cipher_suite;
          uint64 t_epoch;
          uint64 pq_epoch;
      } APQInfo
]]></artwork>
      <section anchor="extension-updates-and-validation">
        <name>Extension updates and validation</name>
        <t>As mentioned in <xref target="welcome-message-validation"/>, clients <bcp14>MUST</bcp14> validate that
the information in the APQInfo extensions of both T and PQ group match.
As the HPQMLSInfo contains the epoch of both groups it <bcp14>MUST</bcp14> be updated
in both groups when doing a FULL commit. Consequently, when doing a FULL
commit in both commits <bcp14>MUST</bcp14> contain an AppDataUpdate proposal with <tt>op</tt>
set to <tt>update</tt>. The <tt>update</tt> payload <bcp14>MUST</bcp14> update the epochs to the new
epochs of both groups (note that the epoch of the T group may increment
by more than one if one or more T only commits have been performed in
the meantime).</t>
        <artwork><![CDATA[
enum {
  invalid(0),
  t_epoch(1),
  pq_epoch(1),
  (255)
} APQInfoUpdate

struct {
  APQInfoUpdate update;
  select (APQInfoUpdate.update)
    case epoch:
       uint64 epoch;
} APQInfoUpdateData
]]></artwork>
        <t>Consequently, when processing a FULL commit, recipients <bcp14>MUST</bcp14> verify that
the epoch set by the APQInfoUpdateData matches the actual (new) epoch of
both groups.</t>
      </section>
      <section anchor="key-schedule">
        <name>Key Schedule</name>
        <t>The <tt>apq_psk</tt> exporter key derived in the PQ session <bcp14>MUST</bcp14> be derived in
accordance with the Safe Extensions API guidance (see Exporting Secrets
in <xref target="I-D.ietf-mls-extensions"/>). In particular, it <bcp14>SHALL NOT</bcp14> use the
<tt>extension_secret</tt> and <bcp14>MUST</bcp14> be derived using the SafeExportSecret
function as defined in Section 4.4 Pre-Shared Keys of
<xref target="I-D.ietf-mls-extensions"/>. This is to ensure forward secrecy
guarantees (see <xref target="security-considerations"/>).</t>
        <t>Even though the <tt>apq_psk</tt> PSK is not sent over the wire, members of
the APQ-MLS session must agree on the value of which PSK to use. In
alignment with the Safe Extensions API policy for PSKs, APQ-MLS PSKs
used <bcp14>SHALL</bcp14> set <tt>PSKType = 3</tt> and <tt>component_id = XXX</tt> (see Section
4.5 Pre-Shared Keys of <xref target="I-D.ietf-mls-extensions"/>).</t>
        <artwork><![CDATA[
      PQ Session                       Traditional Session
      ----------                       -------------------

        [...]
  SafeExportSecret(XXX)
          |
          V
    apq_exporter
          |
          +--> DeriveSecret(., "psk_id")
          |    = apq_psk_id
          V
DeriveSecret(., "psk")
          |
          V                            [...]
       apq_psk                     joiner_secret
          |                             |
          |                             |
          |                             V
          +--> <psk_secret (or 0)> --> KDF.Extract
        [...]                           |
                                        |
                                        +--> DeriveSecret(., "welcome")
                                        |    = welcome_secret
                                        |
                                        V
                                ExpandWithLabel(., "epoch", GroupContext_[n], KDF.Nh)
                                        |
                                        |
                                        V
                                   epoch_secret
                                        |
                                        |
                                        +--> DeriveSecret(., <label>)
                                        |    = <secret>
                                      [...]
    Fig 3: The apq_psk of the PQ session is injected into the key schedule of the
    traditional session using the safe extensions API DeriveExtensionSecret.
]]></artwork>
        <t>To signal the injection of the PSK derived from the PQ group
into the key schedule of the T group, each T group commit that
is part of a FULL commit <bcp14>MUST</bcp14> include a PreSharedKey proposal
with <tt>psk_type = application</tt>, <tt>component_id = XXX</tt> and
<tt>psk_id = apq_psk_id</tt>.</t>
        <t>The <tt>apq_exporter</tt> <bcp14>MUST</bcp14> be deleted after both the <tt>apq_psk_id</tt> and
the <tt>apq_psk</tt> were derived.</t>
        <t>TODO: Replace occurences of XXX with the Component ID of this
combiner.</t>
      </section>
    </section>
    <section anchor="wire-formats">
      <name>Wire formats</name>
      <t>Operating two groups in conjunction requires that certain data are sent
over the wire in duplictate, for example, two commit messages in the case
of a FULL commit. This is made easier through the following wire formats.
The GroupContext of both the PQ and the T group <bcp14>MUST</bcp14> include the
<tt>required_wire_formats</tt> extension listing the following wire formats.</t>
      <artwork><![CDATA[
struct {
  KeyPackage t_key_package;
  KeyPackage pq_key_package;
} APQKeyPackage

struct {
  MLSPublicMessage t_message;
  MLSPublicMessage pq_message;
} APQPublicMessage

struct {
  MLSPrivateMessage t_message;
  MLSPrivateMessage pq_message;
} APQPrivateMessage

struct {
  Welcome t_welcome;
  Welcome pq_welcome;
} APQWelcome

struct {
  GroupInfo t_group_info;
  GroupInfo pq_group_info;
} APQGroupInfo

struct {
  PartialGroupInfo t_group_info;
  PartialGroupInfo pq_group_info;
} APQPartialGroupInfo
]]></artwork>
      <t>Where PartialGroupInfo is defined in Section 4 of
<xref target="I-D.mahy-mls-ratchet-tree-options"/>. Messages in APQPrivateMessage
<bcp14>MUST NOT</bcp14> be of content type <tt>application</tt>.</t>
      <t>TODO: IANA considerations</t>
    </section>
    <section anchor="cryptographic-objects">
      <name>Cryptographic Objects</name>
      <section anchor="cipher-suites">
        <name>Cipher Suites</name>
        <t>There are no changes to <em>how</em> cipher suites are used to perform group
key computations from <eref target="https://www.rfc-editor.org/rfc/rfc9420#name-cipher-suites">RFC9420</eref>.
However, the choice of <em>which</em> primitives are used by the traditional
and PQ subsessions must be explicitly stated by the CipherSuite objects
within <tt>APQInfo</tt>. So long as the traditional session only uses classical
primitives and the PQ session uses PQ primitives for KEM, a APQ-MLS
session is valid. Specifically, the PQ primitives for APQ-MLS must be
'pure' (fully) PQ: PQ cost is already being amoritized at the protocol
level so allowing hybrid PQ cipher suites to be used in the PQ session
only adds extra overhead and complexity. Furthermore, the <tt>pq_cipher_suite</tt>
may contain a classical digital signature algorithm used if <tt>mode</tt> is
set to 0 (PQ Confidentiality-Only) but <bcp14>MUST</bcp14> be fully PQ if <tt>mode</tt> is
set to 1 (PQ Confidentiality+Authenticity). These cipher suite
combinations and modes <bcp14>MUST</bcp14> not be toggled or modified after a APQ-MLS
session has commenced. Clients <bcp14>MUST</bcp14> reject a APQ-MLS session with invalid
or duplicate cipher suites (e.g. two traditional cipher suites).</t>
        <section anchor="key-encapsulation-mechanism">
          <name>Key Encapsulation Mechanism</name>
          <t>For APQ-MLS sessions, the PQ subsession <bcp14>MUST</bcp14> use a Key Encapsulation
Mechanism (KEM) that is standardized for post-quantum cryptography.
The use of experimental, non-standardized, or hybrid KEMs in the PQ
session is <bcp14>NOT RECOMMENDED</bcp14> and <bcp14>MUST</bcp14> be rejected by compliant clients.
This requirement ensures interoperability and a consistent security
baseline across all APQ-MLS deployments.</t>
        </section>
        <section anchor="signing">
          <name>Signing</name>
          <t>For APQ-MLS sessions, the choice of digital signature algorithm in
the PQ subsession depends on the selected mode of operation. If the
<tt>mode</tt> is set to 1 (PQ Confidentiality+Authenticity), the PQ session
<bcp14>MUST</bcp14> use a digital signature algorithm that is standardized for
post-quantum cryptography, such as ML-DSA as specified in FIPS 204.
The use of experimental, non-standardized, or hybrid signature
algorithms in the PQ session is <bcp14>NOT RECOMMENDED</bcp14> and <bcp14>MUST</bcp14> be rejected
by compliant clients in this mode. If the <tt>mode</tt> is set to 0
(PQ Confidentiality-Only), the PQ session <bcp14>MAY</bcp14> use a standardized
classical digital signature algorithm. These requirements ensure
that the authenticity guarantees of APQ-MLS sessions are aligned
with the intended security level and provide a consistent
baseline for interoperability and security across deployments.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="full-commit-frequency">
        <name>FULL Commit Frequency</name>
        <t>So long as the FULL Commit flow is followed for group administration
actions, PQ security is extended to the traditional session. Therefore,
FULL Commits can occur as frequently or infrequently as desired by any
given security policy. This results in a flexible and efficient use of
compute, storage, and bandwidth resources for the host by mainly
calling partial updates on the traditional MLS session, given that
the group membership is stable. Thus, our protocol provides PQ security
and can maintain a tighter PCS window against traditional attackers
as well as forward secrecy window against traditional or quantum
attackers with lower overhead when compared to running a single MLS
session that only uses PQ KEMs or PQ KEM/DSAs. Furthermore, the PQ
PCS window against quantum attackers can be selected based on an
application and even variable over time, ranging from e.g. a single
FULL Commit in PQ/T Confidentiality Only mode followed by PARTIAL
Commits from that point onwards (enabling general PQ/traditional
confidentiality, traditional update authenticity, traditional PCS,
and PQ/traditional forward secrecy) to frequent FULL Commits in the
same mode (enabling general PQ/traditional confidentiality,
traditional update authenticity, PQ/traditional PCS, and
PQ/traditional forward secrecy). In PQ/T Confidentiality+Authenticity
mode with frequent FULL Commits, the latter case would enable general
PQ/traditional confidentiality, PQ/traditional update authenticity,
PQ/traditional PCS, and PQ/traditional forward secrecy.</t>
      </section>
      <section anchor="attacks-on-non-repudiation">
        <name>Attacks on Non-Repudiation</name>
        <t>While PQ message integrity is provided by the symmetric key used in
AEAD, attacks on non-repudiation (e.g., source forgery) on application
messages may still be possible by a CRQC adversary since only
traditional signatures on used after the AEAD. However, in terms of
group key agreement, this is insufficient to mount anything more
than a denial-of-service attack (e.g. via group state
desynchronization). In terms of application messages, a traditional
DSA signature may be forged by an external CRQC adversary, but the
content (including sender information) is still protected by AEAD
which uses the symmetric group key. Thus, an external CRQC adversary
can only conduct a false-framing attack, where group members are
assured of the authenticity of a message being sent by a group
member for the adversary has changed the signature to imply a
different sender; it would require an insider CRQC adversary to
actually mount a masquerading or forgery attack, which is beyond
the scope of this protocol.</t>
        <t>If this is a concern, hybrid PQ DSAs can be used in the traditional
session to sign application messages. Since this would negate much
of the efficiency gains from using this protocol and
enial-of-service attacks can be achieve through more expeditious
means, such a option is not considered here.</t>
      </section>
      <section anchor="forward-secrecy">
        <name>Forward Secrecy</name>
        <t>Recall that one of the ways MLS achieves forward secrecy is by
deleting security sensitive values after they are consumed (e.g.
to encrypt or derive other keys/nonces) and the key schedule has
entered a new epoch. For example, values such as the <tt>init_secret</tt>
or <tt>epoch_secret</tt> are deleted at the <em>start</em> of a new epoch. If
the MLS <tt>exporter_secret</tt> or the <tt>extension_secret</tt> from the PQ
session is used directly as a PSK for the traditional session,
against the requirements set above, then there is a potential
scenario in which an adversary can break forward secrecy because
these keys are derived <em>during</em> an epoch and are not deleted.
Therefore, the <tt>apq_psk</tt> <bcp14>MUST</bcp14> be derived from the <tt>epoch_secret</tt>
created at the <em>start</em> of an epoch from the PQ session (see
Figure 3) to ensure forward secrecy.</t>
      </section>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>Recommendations for preventing denial-of-service attacks or
restricting transmitted messages are inherited from MLS.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The MLS sessions combined by this protocol conform to the IANA
registries listed for MLS <xref target="RFC9420"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="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="I-D.ietf-pquip-pqt-hybrid-terminology">
        <front>
          <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
          <author fullname="Flo D" initials="F." surname="D">
            <organization>UK National Cyber Security Centre</organization>
          </author>
          <author fullname="Michael P" initials="M." surname="P">
            <organization>UK National Cyber Security Centre</organization>
          </author>
          <author fullname="Britta Hale" initials="B." surname="Hale">
            <organization>Naval Postgraduate School</organization>
          </author>
          <date day="10" month="January" year="2025"/>
          <abstract>
            <t>   One aspect of the transition to post-quantum algorithms in
   cryptographic protocols is the development of hybrid schemes that
   incorporate both post-quantum and traditional asymmetric algorithms.
   This document defines terminology for such schemes.  It is intended
   to be used as a reference and, hopefully, to ensure consistency and
   clarity across different protocols, standards, and organisations.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqt-hybrid-terminology-06"/>
      </reference>
      <reference anchor="RFC5869">
        <front>
          <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
          <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
          <author fullname="P. Eronen" initials="P." surname="Eronen"/>
          <date month="May" year="2010"/>
          <abstract>
            <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5869"/>
        <seriesInfo name="DOI" value="10.17487/RFC5869"/>
      </reference>
      <reference anchor="RFC9180">
        <front>
          <title>Hybrid Public Key Encryption</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
          <author fullname="B. Lipp" initials="B." surname="Lipp"/>
          <author fullname="C. Wood" initials="C." surname="Wood"/>
          <date month="February" year="2022"/>
          <abstract>
            <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
            <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9180"/>
        <seriesInfo name="DOI" value="10.17487/RFC9180"/>
      </reference>
      <reference anchor="I-D.hale-pquip-hybrid-signature-spectrums">
        <front>
          <title>Hybrid signature spectrums</title>
          <author fullname="Nina Bindel" initials="N." surname="Bindel">
            <organization>SandboxAQ</organization>
          </author>
          <author fullname="Britta Hale" initials="B." surname="Hale">
            <organization>Naval Postgraduate School</organization>
          </author>
          <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
            <organization>SandboxAQ</organization>
          </author>
          <author fullname="Flo D" initials="F." surname="D">
            <organization>UK National Cyber Security Centre</organization>
          </author>
          <date day="21" month="March" year="2024"/>
          <abstract>
            <t>   This document describes classification of design goals and security
   considerations for hybrid digital signature schemes, including proof
   composability, non-separability of the component signatures given a
   hybrid signature, backwards/forwards compatiblity, hybrid generality,
   and simultaneous verification.

   Discussion of this work is encouraged to happen on the IETF PQUIP
   mailing list pqc@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dconnolly/draft-hale-pquip-hybrid-
   signature-spectrums

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-hale-pquip-hybrid-signature-spectrums-04"/>
      </reference>
      <reference anchor="I-D.ietf-mls-extensions">
        <front>
          <title>The Messaging Layer Security (MLS) Extensions</title>
          <author fullname="Raphael Robert" initials="R." surname="Robert">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <date day="21" month="July" year="2025"/>
          <abstract>
            <t>   The Messaging Layer Security (MLS) protocol is an asynchronous group
   authenticated key exchange protocol.  MLS provides a number of
   capabilities to applications, as well as several extension points
   internal to the protocol.  This document provides a consolidated
   application API, guidance for how the protocol's extension points
   should be used, and a few concrete examples of both core protocol
   extensions and uses of the application API.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-extensions-08"/>
      </reference>
      <reference anchor="I-D.mahy-mls-ratchet-tree-options">
        <front>
          <title>Ways to convey the Ratchet Tree in Messaging Layer Security</title>
          <author fullname="Rohan Mahy" initials="R." surname="Mahy">
            <organization>Rohan Mahy Consulting Services</organization>
          </author>
          <date day="16" month="October" year="2025"/>
          <abstract>
            <t>   The Messaging Layer Security (MLS) protocol needs to share its
   ratchet_tree object to welcome new clients into a group and in
   external joins.  While the protocol only defines a mechanism for
   sharing the entire tree, most implementations use various
   optimizations to avoid sending this structure repeatedly in large
   groups.  This document describes a way to convey these improvements
   in a standardized way and to convey the parts of a GroupInfo object
   that are not visible to an intermediary server.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-mahy-mls-ratchet-tree-options-03"/>
      </reference>
    </references>
    <?line 714?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <section numbered="false" anchor="contributors">
        <name>Contributors</name>
        <t>Konrad Kohbrok
Phoenix R&amp;D
Email: konrad.kohbrok@datashrine.de</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V9a3MbN5bod/wKrFy1Jh2SfsSZTeTEO7JkrzWxbMVSHlNT
U2aTDZIdNbuZRlMyk3h+y/1+/8W9f2zPC2ig2ZRlxzN7r6riSN1o4ODgvHFw
MBwOVZ3VudnXewfLsqqzX02qT7/TJy/O9GG5nGSFqfZUMplU5hLbnH43hFd7
aprUZl5Wm31t61SptJwWyRJ6SatkVg8zU8+Gy9wOp9LFMIf2tlZ2PVlm1mZl
UW9W0Pz46fkzla2qfV1Xa1s/uHfvq3sPVLFeTky1r1L4aF9Ny8Kawq4tNTIK
4PhcJZVJAJ4zM11XWb3ZU1dldTGvyvUKnp4Ya5N5Vsz1i2RjKt20ujAbaJju
K62H2spj+iNZ1wtT1BlOLNXQTpu300VSzA29Pj084/+Xth5+t06Ker1Ul6ZY
G+zr/QNrzRPe+xHgxAb/hZ/g82WS5fAcsPVnRNuorOb4OKmmC3i8qOuV3b97
F1vho+zSjFyzu/jg7qQqr6y5C9/fxe/mWb1YT7jDq/ndcBHwNa9D2DE2G/FX
o6yMPri7YzVHi3qZ7ymFOCthnYY6K2B19n4a6fMsKXAcpoa9nzJYOv8QYE6K
7NekhvWHly+TyyQnjM6rJF0DZPpsuijLHNsaxstb7GBUQwf3/1ys7Mikaz/c
k5F+nuQmGO4JILtO/NOPGG9CPYwW0MPWeCcjfbLGVfh1cxEMepJUMGb0pjXw
wY9nwRDLdb7ET/6cLJNfy2I0XfgR/jLSB/mVCTH4l/L//u+8eXptzwm2+rn0
HZdLpYqyWkLrS6BTdTw8Gi2TxYYWs0rq6cLUw7oyZliusEOLtOzEwY/Jxuq6
1MB+l8ANwB36NX+iz+ETgFhfR+6ONrRGtpHJvC6Bo/QJgEAckVRzE9Ii8HtS
V8n0AkjMEzmIFqHDa0EH4ldZMQtmOxwCV08sdlgrdb7IrIa+1kvgcp0aO62y
ibE60auqrMtpmWv4WDOJ45QSkDZJmmHnQDUoD60hyaWvgFngtVqhLPiFZYHu
nX7Xj1oB6hLgV3Np9Cw3b7NJbnRSpNrMZtk0QyCSUOCimJtlKYqgJAccUlsv
lPBBvUiabywtCEC7WteJwDgFeHQ5w96+hRVTT4tpsrJAl/geFgvFWWaXlro+
yoDn4aOzbF4k9boyQGMg0GFqSzvSZyszzQDOJM83A31ltHIY04vyCue2toZA
MG9XABEsPkjTytD4iVMggoqBzkZmNNC49AGC1NoynqH1NFstTGXXWW0G2Ls1
jJX5OqkAvwbmmxWI0bgL14MKlyroa6SfbLRdrxBEbFkWwxR4BaYffDAsi3xD
En+9Qo1jteolo4tRMtKnB6/Pjw9euBd9YD+92ICMSIcAXPiJ++LZ9y+a5oS5
KcCsKpAjU0bYBIa/ylIkIYAjXsHy0lQLk8DCW1tOM1JFRG0wWrkyFbUD+K4W
GVDT0hiaFfZamV/WWWWIuGEJZvg3/o4wAn3zhyPFXLHM0jQ3St3Sx0VdlQAa
vlbqQM/WsOAA8ipBcnW0naQAl02qjV4kTHjJJCMihSUByyC5gA+LNMHRYRbw
q6nyDYKmptVmVZcgb1eLbIrTWi+ZXxHKcNUSu1kuTV1Bq+CbDWgUZFwcNwdk
wHgKx0+BrfJy5aa7zYnRuEjFrO0NcUbMGCrgjN63T09gmXFlUmEQ6xkk8Qyi
e0dnB9BuwnIxniQstjWomnFxl+sC8QQLBn8vEhAGEwMakeQUQpWkIL9gYtLT
S0cJx4UFQbwGFQXTU2c1QJRUKbPuOcBblHk53+jey+Ozc6CzrJjm69QRwwks
KSzfi6QG0QFTfnqieycvhvB/nppqNYDJUAP4fz+Y5Uj/SHQGXQKzg5i8BPmE
pOgMp4HmXrXCXrkDniQijeQHro8jatAYICiWtPSr9SQHXCF5WhBngwDN/Ldi
Nq7N21qe4BiHp9+Dglqy5AMbkCgC4MuqiJim5RqERgUtaisUpJCElglMgKUy
4gqmgtJVhC1qn1ji4vfZFBU7MgXYBLkpUN1hlyASWRLoZAWogU5pfqRlUFu1
JDUysMMDymkLIwOPIRQrVFBIpFqhJGypAZA4HU/vAMB38EUIL7D3SVkZHGeg
PREmhPECkJiaIRJ6YYDbwMiZXtiBNvUUJDOt2bIExUkiB2Q7LZJqZJ0z/Syr
IZjilScDkDblUk9KkFM41YD9EUDAbCgQ4mVarsoCwIdFOtCXSQVKf4MDC2b9
AKDokxqZ3TKo0BLtymRalRaWFr0IfSWGNdniliVTls5Z6M6TFTBefYW8B3KU
2K+YskJuRilhUYB0qgS+IjFD3IkygrWqbwkrDRrd1rx8bD7YLS4EReVtC/Xb
b//2+tnhVw8f3Hv3DhbqR+AwohduFwE/wMcob+A/REq5tvpKrDFPbCE4CpgE
PCS24NR9RCYqxpz7DvQhmTiJQ28oNe+G6wIsPdJI4+rBKPocdRkQKwhr6CWt
ytUQ5lCZVZ5MWfVg/zgn6GEAf0xZQQMCeUj1+WiLlCfrWhdlHVEyM3taAhni
K8DrutLsjQHj5NZcEYKyQj0ceRxaJGmYO8LWHoRAgQWCYdIUWMMKW+J/i6S6
BJ9oWIBhc1d9MQLlQgKdfFacDhIfcEdqcnA4yitD/IX/stVgViUxP8Bo2ZqJ
OB0W+0+j0PoiBsrxe6QzRoxY9IzYpUkKWmycOxknAjSCq/5j1Cz8JMmJjB1p
C7918xhblGKSQndAv/ix+nKEY0VYaKHASwtcqyS3bP1ldQvcbIk6wqivRhGP
Me/gF2y2RPI3krfQ3ZXJ81HbWo/XDGZf4iTLFSgQtCJIPSEHAUhmiVbOLdCR
1TJjJYm9GVopdP0tOGzfn53vDfj/+uUr+v310+++P3799Ah/P3t+8OKF/0VJ
i7Pnr75/cdT81nx5+Ork5OnLI/4Ynurokdo7OfjrHlP03qvT8+NXLw9e7DXK
wk8SCBqFFpI16i4wpg0agt7yJgX65PD0//yv+w81i5MH9+9/9e6d/PHl/f94
CH8AaxQ8GpEO/wk42iiQHaASsBfQZGjkoX0Dqwpot2DVA5MCUwH27vwNMfP3
ff31ZLq6//CxPMAJRw8dzqKHhLPtJ1sfMxI7HnUM47EZPW9hOob34K/R3w7v
wcOv/xO0r9HD+1/+52PFNMLWCcnMHD20Af2+NBiN4t9FPr8wyUy/BIkw4DjO
YVmgoTJA6/IUWAUYGyyYxrWCxwP9HNbELpILI34zNDmtSOMGD9gs8n+Ttfaa
bfv0EM1ytLszI3qQ2AHMbuJB4CiLaxmoFa9+fvstVD63AHZ2CUARGXblaOqk
yOkf/Dr4iAABdn3OmiPgLtJsGFigKNEKIF3Bv/VQTIe6aQlD6ydgtV+RW0Tw
A1fXZHFUBgQiGouKASHxb2a4QIW5Ako2qNkOVqscA3TszhKK9kHXCRblCRB2
VZGtkQTN0biDmW+tAX1PSHefo8G1q0P2Pk9B8ZUW3bVKq0Ow8UESlpOfzbQm
XirB3bRsmXZAgP7HkaEB8OmzdUHOF3geR8/6CM3zxC7gazf4QROXxGaHQHS6
9/zk4LA/nCQ4DCj/FcxqiP8BDaIxScIubQaZ+UGe4ygIZCRUWH588eWfviLy
2HaRvPYiB4nAxCFgsMKib90QGgcpclhlENZX4K2RDW1IP5STOkHhA9KGTHeJ
GPA0ykL82KnJQDXetoGLADCFcdcm1nLGcQCAJ44LEBRkxaI+JhcFo8h1xZ7u
CExG0OgJ2JorVpOoY51eo0/Qk4k+AQnRCgfdZPCjbDbLzPA5aDVQhuA2Pu/L
fBUC1b0QX93/kvn09Lu750Sg4eTJAwxAEWOu55agj17+LfJQXAAfKZaX5+lb
MB2Y8bHBVsi/JwH+vjf4m6Wt1gWvaTBZkjawxOga5SDy7KaYLqqyyH4VKxgc
M5KZIkXtIltZdp+wJ98LKj8ZkXxhjipJcEfohOSS+FIO14gMMDukrbNITisz
PGMaQ1runZ592+f4EX4euSDSkTiJDALTPMx7ijZXhm4jeN91WW3IvmWOJwfp
IE2diF6C5YPfkGQgtICxgeZjiRH+gii/wQ4P4cw2tmoYFUCb3saE+WTW0ygb
7wUQLboHHoyeGc3JgiOuo0Y5wq2i0FJOOEUnAdVGgIAoQNQf6aO1EZ9aL7I5
DqS2o4wsoMt1Dc/JO7cu7oihBnKqnO7rB4ErmhGynZpgCMdmFYWZ0HS0dm10
42emUUCt7ydLM3PBrZxiosXWonJArxXD832M9FmGZilF6ly/mcTBTOxXeZpB
kqdYxRRk8zo3ZFGRnY+mVPgGJBiut0UhIiEnWMyC7DBw8CWg6MZFugdRkTJL
BCDpCu0CVI8gBEEhsOkbxblYJkJzoLol+MM+/A4EfwgcfJUVKSlbF8TR8eg8
BLp0NSx0jeCRSxQQB/Qj3bhJUNxR6FlMeI8uECbgaZuCkLKRIMm2HMGFnxfs
01sOGzRyAB6AM3kxnJRv2Q6egWsJ9mmJNgOtq0KyzBHiMCTK8U+EqMVkdsvS
BvnowtsSqXUUNUVFhUuSm1ntuCDQ4YH713joKox1eVykmU1StGiSOSu/rPAx
WVrmqaNGNMUmGGXPZmhgqNBmIFWyIJmGbihY6Tm6cHV2SUFFXhnk+NSwoYUI
uA0SDJuY2xi1v8wQf9imQhmV5Ey6bsYUbolYgUx94M85rg/5v4kAohoYeOhH
CDMJL7BAvDTzvVF35u3UmNR52/H3Ax/MxSikGxjVLvjuFalEngmJG4IfHno9
IMY4USYAEsn1kMGILh32QcIZkIOpxCVCtmgRw0bAC0L6AdpQjE2iQCfGmMFr
S0gwPtIolnlRI5ZS0lM55XhBLZGEpTP56QVCF4k5mOp8UaL7DYbkhtawIEvl
7rnvclquAbX0PUxtaqTnWTbjOCJY0XqxLlLErAwH9HdcIMYBRFsLuBEiY3CJ
A6nvDji2cARrjRApBgkNQz0DB5TWg3dEUk0M7HhtS4hvLwlSMpi8yXKVm9bA
wZxxqhiKukK5YS4ovghmFodZHYExj2FsmKgAZJ3EeoSxaCvL74FQDAT44aqJ
3E3Z7ZMghJ5nSIkhAz+KRHooZQQ1SO5Jnk0q8oKS6RSMBozcgfRkCw2coGSd
1xj/o32xGsxpgErMtEZdOoMo4z1b4t2tjTiO09OSuY6u3eMM9vfAQjz7tssE
AyYB+QR0f4lxyhwJucD+UKcd5CBACtqPRQGXbINLAUU0vBERBDRgYYZiR+2G
jQRijpy24d0UsEwLCctnZLCluP7CNNyvmJItfPhZkhMdGaoDaMRSItE/mhwg
N45paN1F/xHpwGocFzNcHfQWnAMeRwY85pfJBfcakkbkCCjyBFhBDGdg1LHT
fss1foZ23m+3wgZKOYEHq99YoScHf0XM3hEJdwd54g6OewcMKwoFxybBgBl8
l5UMTpkEO63wHEjjEs1OF/Nm19gMBVLLBG+YcBQYKMRy9x8gy4QxCYEmQAmS
i/QCo82yytasiv2eD+2ah45AUoSWMX7W+qBjSn4LGclbkc8cqpjA1eCG+JDc
d/PUxdzP2D1BCMbJ6pc3K3sx1nkyMSDse9YYmCgYiENnIL57B1b2OW41WDQO
WY5U4PfWBAMS8FJYzpufkQLxjMduA+6tyM4D7ZJLCgTiZIIKg6aBHRfsGbFj
hH6RoxOtXNi+e80Fn2CH8marIy+28LpHVJHcQNcqWaE7AIY9xxpvf3PbMcos
m8MbsPyMc2CyPF9j4gY7YusKacr2wW3YCJU1szg+cmxHPAR8mTtfOiCv1xJW
sN6tcwQkkwNE8+IDkjDi5IL6XQ4nsXEbXdKP6vFWLwk1vypuDRzq+sF4+G5r
xK4FBxnwj3/8gxJqPsUPiSfp7eBmnzzZ+eaQ9xWpu99vCsG1DX+Xvhivt3v9
T9AX/JyiBdqQzjd/pK9OOdC7LTLgdv9DJtiLaXp7tjfpa/gJfh7//k9YxI/u
K1j9j+lrF26lr68/BcI++0C4rhuU+3qWzfV9l0vUyCcwlcxyVQdyGyXyyAsE
iRhbtmpuk+tj0d90MiWSZM13LWnK26azjIOnILS8JA+0ov/Y251FS5A1dkHS
rCJpjF0Di+rLcS8w3zjhmWpvbGMn/mP3NE8AgGmg0C+zZEtJ+JD9iETopxSj
+PNJRSn+fHpxSg0+tL/vV+nt3pOdkvdj+us9ARduR48f2t+/UpJ9DHy7Xji0
fpr+GqR+Sqn2qSXbx/T33gYtEwHxeo2Z8CHr+4fNhFZ/f8xUCDsTlQZzHehr
bIab9vepaOX/QWaLyeIPmA+duP7/g9nIlJh0mRLfc8zM2xKk3A8p7UE/+Xij
AlXr1wmG1/QyqS5ScPW+2Zvk5fRi77F6/fTk4PW3+wIVJZ1YN+YBRr/Myic0
r2P4bAwg7/MBlMHE2B2d5clcj2fjbQOh1aMee8mJjVM6+WOxzye3aUOI41iS
MtdC4NWiXGKkUQdhF/zfytsZX98lLDymwM1BKpGk762plMJ/dY45JEWZypaD
RDjSNIpvOKMmjrL4sEocM3Lhlc9b0RWKwa9qiWBg0lWTyMyJdM9Pv30aPqXk
xpFWGJWRWOug2RfHmDdvGYfpLpjjH0bGKPjY7OEP9BJceq14nhPDryjVwVls
RzAozIb2p2EyFe0K9I7O2Gzk5QwS453HjS55K0KH5JrnFJ+n1CpoIX5/Y0+G
Tr2Lu1J++TVRqnMXKvQrkOHW04oDl9KxlWTtJuoq+I8XMaSo5tSJ75gXJmkb
yU3MBsNbqQsSYH4ydVW7vcSfS9p1o00V3l3dijjakjMOoUNLx1MUh17xU0GG
Sxc8PTzb3qKUfK2JkSgOLqwP/AHaJxsOjzIoGNH+Q4Y32fFMbTdp3hjlNzTJ
8Scwy48yjMnhpv8Nfj7KYN9q+gFffqg+w6YNtz65/c8eKxzsY8b6aL362T95
Xtf8eaOxnFUCKuF2L1yRfst0/SS0cRM79lON9V4b99MMJEYZ4C9EX7/DQvuj
Y332sTT4IT8fajh/EhyKurz9LxzrvQHOf+V6Pf7XCt7/ybFuLm8+1Vg3Yc1P
7Dxd9/OZEpPjGW0z6Qf78nfjeKSplYxvMADE+KbNYOcHtb0gsjU7NglHGGhE
MxPNJ2eT0rk12ZLc2t2RAZypKMc4mx2jruBr7G2Bf3HLj+Wyhn9I8iyVDG9O
d0vcDMkMR5MsysDk3cQtMxqzxHjrjFwcZfDokQOWenKeE6cI8bYrnluxa3/O
GT6k8SR5hDMzcI+QtmvJrqwMuFmSVbe1m04DOLOZzDpQZXR4tjmaBI6bZGFE
eaUup6gdTG7v6KMLAk4ZnhaS3ExFHma4h6+9aouyOy8Z1aYxmxdmK9EB0zoP
wCOR5AKGC/zHbLbZyo+l3VJMUbG1ONqtHDmXH0FIlQ1JirxzH9fa/FG6sUQH
mIRwdhXuN/4FurVK+b9xmCZTEa16NwvwggUImQSyB+4ATwwiAmjXBfMVO7Y9
xHNSoD/cThGgw7RuB98fruOR2PUwDiC1tm6WNLo/ebi9T9u1o01HxOTcgWoS
VwYBeSH5rSWHX3Jp8KVHicBOIIjL25UJAiOFDtXgxgulrlkpTbnG7GETtMD0
2JuEFSTLryF9yoVxWOo4IObpit1TXmEVwyPBosTuIiGBoYuw1YdSduLmwNPt
OPQB1NlKgKrc8WQbZaR2pE8E6T/Ik0HnXuglnJbBMomlVhTy6sgiUU12yBio
Gc/OweM3nLk+dsD5Y95RwrCTWx1b/nFkwgcmvmgHJjDh/4RCSfDilcuKVcpn
BBeUg3mJR/gnm6iICKdy2w0syXJoXV5sldkLGDKHnlB5YIzlLlXHwBMRmP4b
HA73efNhki/X9rBBZCPZztfpRCVnhM6xxEjr1K2kXNZrFKwqbadxAsMOp4k1
+67chOXswMPWWdBXpIYqxxCYQNluwqed4M1BeLyakpR2dsncrQIZRLzgTpTw
kVhOoJ7xoe74xGtLgCn/NcHpuhDEwR9HZwcsF5du4X06NEdpeS0RVUJ1Y2w5
5ggp0HJLz1LHmPuM3JlyMg5z4M4pxymK2HsMRnbdCmBzydijL5Xn4K5KKHkG
csi0KqIkc8y0r7dyNFHb4kl4TEucZpaSD7M6EhGd/eyB7qLMULs3EHvGYn7j
rmFIAaZ8TpfPpU+nbCj1gvMPcnwFeJ6NFDzCEer8ke6FZEbGpW3svRke6CJg
dksJNGAPnh4c6bv65OAQmG9upeQEriidrr7EAlJy2sJPk+3Zw9ffHY76WjVr
4U9eo3pE0eemni1hcW0pR2TkXDCJFNLbkSkzwh4Fh0n0ylXQwYEpBdSuEXGW
q480YxhvEKgIYUq9LJ3FySfSKXErzNDlpeAj8804E8MWeQwN8kcwMW92+KOU
y5JO6MKvG0IoGTNsRqynC2H8iKKCujWA7JxMwWSCR4RInXAev9V5iYJRSqr4
IisY2l3hrgU0TzkXnBvwyiOPoRERI3s3p34WSTHmWTpuifzUybQsit7blbCw
+p5SEBMSVqa4zKqycIVZko5CLP6spyMqPl8EXfRwofqSdh+eu2djLHPKIZA3
Vy6Nui4x1Tu5YDkGNhVrLs5IdBny0Rpl7tQIruVrg8AJSUWt+HAfGANU/KIk
uDA9drNiqdss9b6+3+cemm0I4/bL0Lp1BOfyxWkBvW3gxLSgA5Wyq4jDLane
kCACuX2gH8h4YSUiGlLJAXw2ORJ2UrqG58Tkz6WfxDtEV7g/4OFWTSUUTcZ3
j3Z7irIYVma1TjMinX5k52zVz6EqJM25A+WLy+yeKCpKkmvXmF7uvBXqjxos
JOcrC9s3bOXywZ1r3ZnMHkCrmLZQDNJGEp3lcroAIJvjQQPn8QS1rHCLDFP1
8ZDTwp83Vp4mCtxQrKKDRYHtiZTLjgdplBaK/fiwJvH0Ijfab3HdjIffZ7rg
jLKiEUAAnFgjkQeOq9U14d77lm5dcG2PtO9KP+CkMl93JS7Ks0uLb+2a3oY1
FB8BnRgHzwAtHlPM8VNaNC8scAK9+1wjidKz8XXvAe8/WvKiFNBGEdZCir/e
Mu6JyEQVB+tNxgCdHnMp57spfBS5QP5LJwkSFgZ8MEZ4QFCHk++mMvaOK4Oa
r4BfsrrBHVvbrXOozXkV4AekTxQX0NzTJ4/QlARCIg+GVgGFBx4kjN8D4SMx
I9ltFDdJjBGYflgwRLU5Apmia47MvSLhfUWhhr2zjvOOXgyQCRGdE+IT7FK7
LHKBXQEErBkpBRCk+IEfjRwrMLOXlpw1dSuIJb1uKrfRGLBocjg7ts8lzmCx
Dg4e8odFo0PWYf69iB2YCVfoc+WalDddWJBnK7ZzKHTjiy2FJ6FxRQxaUOQy
ogfiigiQDlfReWOW2u3TzayI8bi/d+BMwmceSm9YKswQwXKcxIliT1LVyeSt
zIBOQQDcIdQ/Y+iRQolN0E81sTZE35igepOl44Ees5x6Q4JqzDpvTHmq46B4
lY9DqN4YnPZrDkVwB6tfmkaN1Ok33AmzV5OyvLgwZoWAgxZes3/gg4bsfDvE
OZugOdgqc2HPjfb8AVbwy4Hrqbd9Pb7XQOFMo+u9Lj6yPr4fQn9DY28XZSIJ
WieBz5KZaQgcPJPTY00HYaJSIVjIs6lbRadiIiOs0KaJt+L5kRwPdtyx0Pkd
Ou4JUsn7KQAcRpywtEJc+ASPPZIHgU+b4UCQbbCIEKttFRRJEoKK54BTEMaQ
2haephMgi43N2AFfgwh2kanDrZhIhhMppaSGjOP7CT0GfqW2Z0MVysiLI4it
K8MYmaFMMs9P4UtapaY6mFswrshDYXF2MX1iCouS/TBTg7/5Lcjb8Gg5BxsY
ieFR8LJcJb+sTYPqN1j35OsfHodt3jVdUGy9qB+pnaNJh/Ub4a83jq9bnUq7
0+/e1xD5h6g5fHhIAuKMqpzVb0JxsavV6pedzdYgsv70EPohEdPxBr6NXr1z
LOV2dALSc3Y9Mu1lsK0D3qc/asnnna54U2MoKnDYtH73biDbPy5C6+SPVw+R
HhG6cHwe8A1QGsnKc1cRSLxQrMiL8VR2Hp+ffueoz6stfM5HA1wfUqnPBdIn
xh8qVC40LE2oeEJaBucmp5Lyd4jFweWY9KCjnZr6nTfqcBqecnehezShVqsj
INR2ViTZAeNyNUbtQjtZY4ZxLIJZ/gL9tMnLJBXDeZW6LQOasZeM6LYredTC
Qq/wIY0IU/jHuccyHYuQMq/oL9JRajqhT1H+mdteo+fnHGxwU26qjzbOoTOC
sH4U1tXsyyEzU4BfjlyYFUQqvXv9AVZsZrIFGxn/clQsf/YefPFFX3lSZlQq
JTIHO4veCJaQBazJ8fhjL3o/4vd9YhGM6zJO3O6tYyXho9awuJbMSx0Esmr2
aCNqwqKZwNIhm/BGRsMkvCxICuKsb43KrCA7uGCmrYGKerDu/WZJVbDuHLfB
1LYz5zL8dis6LsoqtzlZ6gsu+yJPnTmNfvunaaF4N4GcFX/yuUtZz9cZtyKt
/dTX4uGUHisHlK/T5MdFUDyVHAhfBc5XjlbjRkm4jRKqI9uCvNlaQVgZGjlz
q3xlK/IqZpnIQrdT8nD0sFUMiOuaXgN8Y//W/owuMMsVJ3TCqFOwfgNlLSd8
nR4fxk4DIkOpp5eUveqjD81iyuFY2jA3UiuXmlxl6Me7OCTCLNQ2DM+v0w58
wnslTAFkFGJ79jmxf3YFaE0U8PKcg3PXEsCqBH+KnTjoATxmNzD+RfuvqSwo
ssIYnpIp8I3+nJdw7A0qUL/w+KeffhozptzKqIejL7qW5lqyCs0SIHUpwKW7
f8IaWdJSPm1yQ3Z82pFForwS/9toNPo7/NUmxh5Msh+o+t+D33+g33HVHffu
aPjZcPhYEumk19FA7wGpAB73ot7xn2+0EBK8jUbr6mFvJ3A7sBDNVrsJQE+d
DTnJVxi5DejOn9//CS1/aOPza8SQ7ML0gKTv9R9rfP7t0bPRU66YF6/uDcG4
/ufmLbsXXay5aNneMyL+842WD7eX4lPB+8N7Wz6lkoRY4/gF1kGg+ZD624sL
Zr75W/H3Aa3Dy8UHzPN/ZE7wQ1P45+H1D1LM11Rz4vEH08vXPKHHN/yukQiY
+/H5PtnBTjKIwRrYIahLi585Lu/rWXTkP1CPuwt0kK+MmsrEmqoz6VgS49R5
Ew4jB+fnJjTqNgG6Kn5I3sp10DqTfKApI84Z6OJssL1Iu3iVbIMFZqak/XBG
2u6aHOx6oOiqWbcGUU4KaXWoWA7ssEKItMN4FJiRTgeNA1MrN03pHZ9PNQ46
4L5j64W2mgSDOMCro1f7+jWXA+eKUZjZRXodwGtMjkMHuj4+YoRmtqkUR9ks
P2Zsd4E1bZWSlBakg6vS+41UuOpnZwEGqZOA/ampyLXjov5uE05F9hX2kK4R
qZgMxqWl/GknHKi1ceCPlKEzotrL2hiOdMuASWzG1cO92deEWa6C2dE2eVwt
yPuGQpAumc2RWURAbEq7ncw32PUb6XochNByyai7BhA2rwJ/rUniBc8PuODN
iv96FL8Dcoheki/WvI9cQDAi43K79RtB76Out9C1f03dRq+3eo7r9m51Hb/e
7jt6H3Xu8kXrN6JdHwUPoSP/lDqSF1EPTWJh7QJT8Mej6A10FL6ivvzbqLdT
dK6SfHenWw26+m43YrH5I5082+og6/awxJ/6t/feLYWu1UnASVsIl5QndBEn
JGenHBukm9NQ6jTizwub44OXB619GpQeh9GFLK+oNrPlEloUstMUwrPq3Fdx
LEp/vwBI/TuL8uqObG5q2d30UX3cjeAAitMUqCCCIqmSvPM3yc/7e8/db3V1
dTWqZtOhASVXVnS7FfyJ/2G7W3hJ1pAHHfKg/XAXjkTPosy4pP4dcvDugMLA
zChK0A5TdLdyhSRcZ9cTv81B3uPEhHm6khYrHYThTi5wbVkvwfKNJfIxHumz
Mkpk6VLiXMwPayI353FVCLpIuKjeFu/xBq1QQFMaXVMATwV2BkWq2ndXSa+t
XtznDgXq9gqU1W3doxSkPnyxz9VoLdcR89XmKGi0xHOyVDZZonXNNR94r0OO
5UoTJ2Jle81fcuXoiWv9r7tPpCp37QOexQWEBjdDyaVReKUY5SSuK9zfWPr0
+XErMD3WCuOGPtYZrMA1VxwJYDO39YQKWiKg97D+dnu3aIi7S326IMIZFZzN
BU07e7nf1ctn4Y6T33YP8ebMhCB3lfMfaVTJ1QDWn+NmEQVCU06CdLnFW4SD
1QRRg6OpAtRzGIbJK4NEH3wVFQ6U2CgsViV2BFXhjFZZqjODMbF9RZl2TM4J
+NeUXVd0ErsFhG1yRj1Th4kb1910xXXcXY6jP7JMNI38ERUaju/jImsFRwAh
hCWlgbHo2q8B5QKEPQ2a69KQbW1A5yHbtu5xiGKAvAAskYjqM0wck62MkaQs
hnefccSOz+9XtI0qW2ScNxtknzdVnnGfje6CkPuEcA/S4ToFa7bc0Oa8LBPe
6gB8fd2SNFL6Og5zsfd4ATmt2bp4HofGuxL1RvpY9gkb5ro5b12Tb5xcC/VO
klE7aWZAaZKoHuSKMMwt89nJeIjg+PRMP7j38GOJq4FTBUUMtqXqTYlNdVGb
ryPNSSmC/C3c39Nqp3jcQjrW52SUR+hUNxLRTjxWYQKJRKyV30jamZY62yJe
zkrLubqD8t4alcJITXBRFis5qapAiVARZzUMRbUcuzix2T5nlmuxWVPK/DDO
wfnt1q5AO1l34ZmVZ65msFItAyWqyYs5LFlw+KXJZ0lSLKjty1CqZCpF7KOb
wCz7WEHZjh3XC/jkPBWV28a0ZKmPHFW2J8wFf3PaFLp4fFAKdyGo3rAHhYP2
4oaCDFznTLTJrvtHhc+kvj/ewQdWqb92prmnEvoq15UrI45TXKBdhNuPYFFg
NhDaWnQXGjsNfs+63E5qi+4F5Rk022tdR+GoBD6dFMAbvDDFwltbnWd+yNJF
rPprFxIpcF+F9exdImV0B6VP7FdyFRUtSmv355oOAD2+On9wSgA5Camrasw4
2ogMLzGUGsYoCpqr27yaJBQ1RjRnX1q5HBB+vYv3UXYYg6hqOya9fZKBs+Mb
deMvZWmXpCcSwlXDm+koFYVjKiCoBxqEy5xLl4P/Q5aPn05I9UiV70lRCg+j
uRrFvsaxBOsAJasyw12z4ooux+z5OxXlFgIcJfKCWkdLBtHqdSSJxw0AkwPn
SUX9tkiEyrvG5f6biyZYZ/OtTXSZz/uA3oK5qz57DHSrB4Kb4nfvgZs2CbtW
JjIewKGg1Hsk685ZMu2B0Yk8R9EyTsaU3CU3zzY0WxNtve+carsTP9frpypn
CyXhEOj6JdgXr5u0UiXp6cBALiUeFdncCf32ib4mhT3M0lecpp80w7SzV3t8
TQALWJdV3m8ntTbZs+jK2VqKG/nCPZSk30p3t3Tsm6/MiFRSlI/PeYqzWsKi
CG9wy0V4Y6tqcvNpx3lJF6TVEvMEsRId+F7iDayopjBYMOd8FEWJKmBemiLD
Av+zoZUiT4wgcZbwjLBklGI0gq6ejlNLmU49ZF3pv4P2tQuucBUbUXKUkPAt
CrU5Xxwjkm89JKZ1Aalec9Gnr7/tk6f6rLRwiZoTCTACJWkr3pZf+7sMt08+
OE23GyLUt4XL7SlSOrynZ0luzXBWJcsmk3YgVaQitcpp5+6cgWxnRFYiRbYd
1XPIozkKEh3q9QZBfEO0ZPPzDD3O+YbInM6TgFM+A8jIDUMEPsIUkThjO8E0
NLLwtg5ylGSMrSkTWQgNVtSCIJJE4rLyBzQaTGRcuF4yP8nesFMwTP0OhLMr
QDYczzxlk2k7hXUYBKEcVLdOZ4YhnM7jee4wSBedutuIaDQ5cGLmSPZL9Jlc
UQNntIH5QSqcVaDbGgtgZzG/g8E8yK6sl9udIPZEf4uAX1tc3wRNXXbcJO/d
ZaoEF7TIjZFoeot8PWP5qlSYzBtkatNFtnQwgWHYtq8yOlCoaE+KaU8sO4tb
GXTUTxKpvdzayAViIIQwq43liOL7fNER1XRFDpVb52xgPEVxt8B1ldu+t/b5
kI4BjzVNM6gJz6eA/TaRQOIcXHIJwWuofUYTBofG4cbxmGD1O24sWu7QfRx3
mPWCsY4l8QcRNnb7dr4jYb6OPKpwOzOMtRCtplTZjH0KLvF8Tap7cP4VW0TO
Jrq8dKpR7oGp+VZe7HVV1qzIYfgp6P0qw3L47iRMEXAzkSTfId8ihAlQEPoo
iAFrmpMvbs/2Dh+OvEOikpLr3BlmpFLBMMcUwvoizf5lO9PMY621YMpfTbK9
Wm7orisjOOld6s583t+dUcYsdO6vU3TuL3ERxSZTt7OAwTk+O4G8sUuVkmuA
F9GjbuF9P+ycCwTGlQ7k/I+bPlAaeeC0s3LY2lk5F1L0EYPwzr5YDsmhAOcU
U3cA0JxqPMLQcswc59O6axSGx9SsCUwDATmYXhTlVW7SORGd+m2/WKPuMek3
e6T09t7J5SgFV48sq+5G35YFkLf+tlxMqvJCnS5KQN5b/frfj9RT8BXzfX1B
LUYX3OLPuHdsF0BiZpQa9d/D2wkEK4kAAA==

-->

</rfc>
