<?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.6.33 (Ruby 3.1.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dthaler-rats-endorsements-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="RATS Endorsements">RATS Endorsements</title>
    <seriesInfo name="Internet-Draft" value="draft-dthaler-rats-endorsements-01"/>
    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>USA</country>
        </postal>
        <email>dthaler@microsoft.com</email>
      </address>
    </author>
    <date year="2023" month="May" day="17"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 36?>

<t>In the IETF Remote Attestation Procedures (RATS) architecture, a Verifier
accepts Evidence and, using Appraisal Policy typically with additional
input from Endorsements and Reference Values, generates Attestation Results
in a format needed by a Relying Party.  This document explains the purpose and
role of Endorsements and discusses some considerations in the choice of
message format for Endorsements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Remote ATtestation ProcedureS Working Group mailing list (rats@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/dthaler/rats-endorsements"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Section 3 in the RATS Architecture <xref target="RFC9334"/> gives an overview of the roles
and conceptual messages in the IETF Remote Attestation Architecture.
As discussed in that document, a Verifier accepts Evidence and Endorsements,
and appraises them using Appraisal Policy for Evidence, typically against
a set of Reference Values.</t>
      <t>Various formats exist, including standard and vendor-specific formats, for
the conceptual messages shown.  Indeed, one of the purposes of a Verifer as depicted
in Figure 9 of <xref target="RFC9334"/> is to be able to accept Evidence in a variety of
formats and generate Attestation Results in the format needed by a Relying Party.</t>
    </section>
    <section anchor="statetypes">
      <name>Current State vs Reference States</name>
      <t>Appraisal policies (Appraisal Policy for Evidence, and Appraisal Policy for
Attestation Results) involve comparing the current state of an attester against
desired or undesired states, in order to determine how trustworthy the attester
is for its purposes.  Thus, a Verifier needs to receive messages with information
about current state, and information about desired/undesired states, and an appraisal
policy that controls how the two are compared.</t>
      <t>Current state is a group of claims about the actual state of the attester at a
given point in time.  Generally speaking, each claim has a name (or other ID)
and a singleton value, being the value of that specific attester at a given point
in time. Some claims may inherently have multiple values, such as a list of
files in a given location on the device, but for our purposes we will treat such
a list as a single unit, meaning one attester at one point in time.</t>
      <t>Each attester in general has multiple components (e.g., hardware, firmware,
Operating System, etc.), each with their own set of claims (sometimes called
a "claimset"), where the current state of the attester is a group of such claimsets,
for all the key components of the attester that are essential to determining
trustworthiness.</t>
      <t>Reference state is a group of claims about the desired or undesired state of
the attester.  Typically, each claim has a name (or other ID) and
a set of potential values, being the current values that are allowed/disallowed
when determining whether to trust the attester.  In general there may be more
gradation than simply "allowed or disallowed" so each value might include some
more complex level of gradation in some implementations.</t>
      <t>That is, where current state has a single value per claim per component
applying to one device at one point in time, reference state has a set of values
per claim per component.  The appraisal policy then specifies how to match
the current value against the set of reference values.</t>
      <t>Some examples of such matching include:</t>
      <ul spacing="normal">
        <li>The current value must be in the set of allowed reference values.</li>
        <li>The current value must not be in the set of disallowed reference values.</li>
        <li>The current value must be in a range where two reference values are the min and max.</li>
      </ul>
      <section anchor="rats-conceptual-messages">
        <name>RATS Conceptual Messages</name>
        <t>RATS conceptual messages in <xref target="RFC9334"/> fall into the above categories as follows:</t>
        <ul spacing="normal">
          <li>Current state: Evidence, Endorsements, Attestation Results</li>
          <li>Reference state: Reference Values</li>
          <li>Appraisal policy: Appraisal Policy for Evidence, Appraisal Policy for Attestation Results</li>
        </ul>
        <t>The figure below shows an example of verifier input for a layered attester
as discussed in <xref target="RFC9334"/>.</t>
        <figure anchor="input">
          <name>Example Verifier Input</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="568" viewBox="0 0 568 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 104,48 L 104,224" fill="none" stroke="black"/>
                <path d="M 104,288 L 104,304" fill="none" stroke="black"/>
                <path d="M 128,32 L 128,80" fill="none" stroke="black"/>
                <path d="M 128,112 L 128,160" fill="none" stroke="black"/>
                <path d="M 128,192 L 128,240" fill="none" stroke="black"/>
                <path d="M 128,272 L 128,320" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
                <path d="M 240,112 L 240,160" fill="none" stroke="black"/>
                <path d="M 240,192 L 240,240" fill="none" stroke="black"/>
                <path d="M 240,272 L 240,320" fill="none" stroke="black"/>
                <path d="M 304,80 L 304,176" fill="none" stroke="black"/>
                <path d="M 376,32 L 376,80" fill="none" stroke="black"/>
                <path d="M 376,112 L 376,160" fill="none" stroke="black"/>
                <path d="M 376,192 L 376,240" fill="none" stroke="black"/>
                <path d="M 376,272 L 376,320" fill="none" stroke="black"/>
                <path d="M 520,32 L 520,80" fill="none" stroke="black"/>
                <path d="M 520,112 L 520,160" fill="none" stroke="black"/>
                <path d="M 520,192 L 520,240" fill="none" stroke="black"/>
                <path d="M 520,272 L 520,320" fill="none" stroke="black"/>
                <path d="M 544,48 L 544,304" fill="none" stroke="black"/>
                <path d="M 128,32 L 240,32" fill="none" stroke="black"/>
                <path d="M 376,32 L 520,32" fill="none" stroke="black"/>
                <path d="M 128,80 L 240,80" fill="none" stroke="black"/>
                <path d="M 376,80 L 520,80" fill="none" stroke="black"/>
                <path d="M 128,112 L 240,112" fill="none" stroke="black"/>
                <path d="M 376,112 L 520,112" fill="none" stroke="black"/>
                <path d="M 128,160 L 240,160" fill="none" stroke="black"/>
                <path d="M 376,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 128,192 L 240,192" fill="none" stroke="black"/>
                <path d="M 264,190 L 352,190" fill="none" stroke="black"/>
                <path d="M 264,194 L 352,194" fill="none" stroke="black"/>
                <path d="M 376,192 L 520,192" fill="none" stroke="black"/>
                <path d="M 128,240 L 240,240" fill="none" stroke="black"/>
                <path d="M 376,240 L 520,240" fill="none" stroke="black"/>
                <path d="M 128,272 L 240,272" fill="none" stroke="black"/>
                <path d="M 376,272 L 520,272" fill="none" stroke="black"/>
                <path d="M 128,320 L 240,320" fill="none" stroke="black"/>
                <path d="M 376,320 L 520,320" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="360,192 348,186.4 348,197.6" fill="black" transform="rotate(0,352,192)"/>
                <polygon class="arrowhead" points="312,176 300,170.4 300,181.6" fill="black" transform="rotate(90,304,176)"/>
                <polygon class="arrowhead" points="272,192 260,186.4 260,197.6" fill="black" transform="rotate(180,264,192)"/>
                <g class="text">
                  <text x="112" y="36">/</text>
                  <text x="304" y="36">Appraisal</text>
                  <text x="544" y="36">\</text>
                  <text x="160" y="52">Current</text>
                  <text x="216" y="52">state</text>
                  <text x="300" y="52">Policy</text>
                  <text x="424" y="52">Reference</text>
                  <text x="488" y="52">state</text>
                  <text x="172" y="68">(layer</text>
                  <text x="212" y="68">N)</text>
                  <text x="436" y="68">(layer</text>
                  <text x="476" y="68">N)</text>
                  <text x="560" y="68">R</text>
                  <text x="560" y="84">e</text>
                  <text x="560" y="100">f</text>
                  <text x="560" y="116">e</text>
                  <text x="60" y="132">Evidence</text>
                  <text x="160" y="132">Current</text>
                  <text x="216" y="132">state</text>
                  <text x="424" y="132">Reference</text>
                  <text x="488" y="132">state</text>
                  <text x="560" y="132">r</text>
                  <text x="172" y="148">(layer</text>
                  <text x="212" y="148">2)</text>
                  <text x="436" y="148">(layer</text>
                  <text x="476" y="148">2)</text>
                  <text x="560" y="148">e</text>
                  <text x="560" y="164">n</text>
                  <text x="560" y="180">c</text>
                  <text x="560" y="196">e</text>
                  <text x="160" y="212">Current</text>
                  <text x="216" y="212">state</text>
                  <text x="308" y="212">Comparison</text>
                  <text x="424" y="212">Reference</text>
                  <text x="488" y="212">state</text>
                  <text x="172" y="228">(layer</text>
                  <text x="212" y="228">1)</text>
                  <text x="304" y="228">Rules</text>
                  <text x="436" y="228">(layer</text>
                  <text x="476" y="228">1)</text>
                  <text x="560" y="228">V</text>
                  <text x="104" y="244">\</text>
                  <text x="560" y="244">a</text>
                  <text x="560" y="260">l</text>
                  <text x="104" y="276">/</text>
                  <text x="560" y="276">u</text>
                  <text x="48" y="292">Endorsement</text>
                  <text x="160" y="292">Current</text>
                  <text x="216" y="292">state</text>
                  <text x="424" y="292">Reference</text>
                  <text x="488" y="292">state</text>
                  <text x="560" y="292">e</text>
                  <text x="172" y="308">(layer</text>
                  <text x="212" y="308">0)</text>
                  <text x="436" y="308">(layer</text>
                  <text x="476" y="308">0)</text>
                  <text x="560" y="308">s</text>
                  <text x="104" y="324">\</text>
                  <text x="544" y="324">/</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
             / .-------------.   Appraisal    .-----------------.  \
            |  |Current state|    Policy      | Reference state |  |
            |  |  (layer N)  |                |    (layer N)    |  | R
            |  '-------------'       |        '-----------------'  | e
            |                        |                             | f
            |  .-------------.       |        .-----------------.  | e
   Evidence |  |Current state|       |        | Reference state |  | r
            |  |  (layer 2)  |       |        |    (layer 2)    |  | e
            |  '-------------'       |        '-----------------'  | n
            |                        v                             | c
            |  .-------------.  <==========>  .-----------------.  | e
            |  |Current state|   Comparison   | Reference state |  |
            |  |  (layer 1)  |     Rules      |    (layer 1)    |  | V
            \  '-------------'                '-----------------'  | a
                                                                   | l
            /  .-------------.                .-----------------.  | u
Endorsement |  |Current state|                | Reference state |  | e
            |  |  (layer 0)  |                |    (layer 0)    |  | s
            \  '-------------'                '-----------------'  /
]]></artwork>
          </artset>
        </figure>
        <t>While the above example only shows one layer within Endorsements as
the typical case, there could be multiple layers within it, such as
a chip added to a hardware board potentially from a different vendor.</t>
        <t>A Trust Anchor Store is a special case of
state above, where the Reference State would be the set of trust anchors
accepted (or rejected) by the Verifier, and the Current State would be
a trust anchor used to sign Evidence or Endorsements.</t>
        <t>In layered attestation using DICE <xref target="TCG-DICE"/> for example, the current state of each layer
is signed by a key held by the next lower layer.  Thus in the example diagram
above, the layer 2 current state (e.g., OS state) is signed by a layer 1 key
(e.g., a signing key used by the firmware), the layer 1 current state (e.g.,
firmware state) is signed by a layer 0 key (e.g., a hardware key stored in ROM),
and the layer 0 current state (hardware specs and key ID) is signed by a layer 0
key (e.g., a vendor key) which is matched against the Verifier's trust anchor
store, which is part of the layer 0 reference state depicted above.</t>
      </section>
    </section>
    <section anchor="endorsement-format-considerations">
      <name>Endorsement Format Considerations</name>
      <t>This section discusses considerations around formats for Endorsements.</t>
      <section anchor="security-considerations">
        <name>Security Considerations</name>
        <t>In many scenarios, a Verifiers can also support a variety of different formats,
and while code size may not be a huge concern, simplicity and correctness of code
is essential to security.  "Complexity is the enemy of security" is a popular
security mantra and hence to increase security, any decrease in complexity
helps.  As such, using the same format for both Evidence and Endorsements
can reduce complexity and hence increase security.</t>
      </section>
      <section anchor="scalability">
        <name>Scalability Considerations</name>
        <t>We currently assume that Reference Value Providers and Endorsers typically
provide the same information to a potentially large number of clients
(Verifiers, or potentially to other entities for later relay to a Verifier),
and are generally on devices that are not constrained nodes, and hence additional
scalability, including code size, is not a significant concern.</t>
        <t>The scenario where scalability in terms of code size is strongest, however, is
when a Verifier is embedded into a constrained node.  For example, when a constrained
node is a Relying Party for most purposes, but still needs a way to establish
trust in the Verifier it will use.  In such a case, the Relying Party may have
a constrained Verifier embedded in it that is only capable of appraising Evidence
provided by its desired Verifier.  Thus, the Relying Party uses its embedded Verifier
for purposes of appraising its desired Verifier which it treats as only an Attester,
and once verified, then uses it for verification of all other attesters.
In this scenario, the embedded Verifier may have code and data size constraints,
and a very simple (by comparison) appraisal policy and desired state (e.g.,
a required trust anchor that Evidence must be signed with and little else).</t>
        <t>Using the same message format for Evidence, Endorsements, and (later) Attestation Results received
from the later Verifier, can provide a code size savings due to having only a single parser
in this limited case.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require any actions by IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="D. Thaler" initials="D." surname="Thaler">
              <organization/>
            </author>
            <author fullname="M. Richardson" initials="M." surname="Richardson">
              <organization/>
            </author>
            <author fullname="N. Smith" initials="N." surname="Smith">
              <organization/>
            </author>
            <author fullname="W. Pan" initials="W." surname="Pan">
              <organization/>
            </author>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims.  It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="TCG-DICE" target="https://trustedcomputinggroup.org/wp-content/uploads/DICE-Certificate-Profiles-r01_3june2020-1.pdf">
          <front>
            <title>DICE Certificate Profiles</title>
            <author>
              <organization>Trusted Computing Group</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61ZW28bNxZ+56/gKg+2C8l2kn2psV2s4SSFH3qBnaYvBQpq
hpbYzAxnSY4Urdv97fudQ3IuujRtsYIBSzPkuXznysPFYiGCCZW+kWcPt+8f
5dumtM7rWjfBnwm1XDq9uZEHr0Rpi0bV2FY69RQWZVirSruFU8Ev9Gjh4vql
8N2yNt4b24Rdiy33b9+/E4VtvG58529kcJ0W21Vi86N1H02zkl8727XCB9WU
P6vKNjotNK3jbz68ur7+8vqVUE6rGzl71EXnTNjNxMcteDRBu0aHxRuSTxQq
3EjTPFnRmhshZbDFjdxpj6/euuD0k+9/7+rhp1BdWFt3IxbYjWdvLuV71hQL
o/5v1EYPz6yDGt+YwllvwVZKXStTAaWIz7/q/OqysDUxA2sN0WYz/ChsqfNX
KJK+Or0Ccv2SrgkOr354vBWCFHK1CmajSan3d18v3tzfvaXvUmbJJX9YsNl7
gk2X8s7WbRd6lGe8KPnBjEjIO+2CeTLATcvvnX0ylfZpmXIrEnkdQutvrq5C
pFlkkiuieAl+V9t2ASsHuMFV11ZWlf6KaC9GtBeZ9sJdv/z59S9do19dv7pe
vLxsyychFouFVEuApIoghLhvZFhr9h/5oGsL2W5D0PCRAIhIzkKXndNenpMr
XUjlirUJugh4OJdKftAOjGEpVRS6DV6+3ZhSN4WW8LK57DxBctu2ThmvKvm9
rUyxk/BaCFtVO7k1YS1VWRripyoYADrLJ2frSXQQNQj4pB3T/qCqTvu5XOlG
I0Ag3ljqB+27ChFlGggY7SkbrUuYabnDowdd7Uis75ULu0tYeW28RPh1xErq
T22l4JoMTNu51npWRjhbaWmfDuUqjS867yGFt7WWFIfAwLEwHl7OlIq1NQXt
F7X2Xq10lgz/JiQvo5FqU5aVFuIFBZ6zZVcQOSEQlKzk60yYQ/x2ZBb5/Py3
h3d3X75+/ffffpMruDKJKe1Gu43RW1KB9pE6XpD8EJhs18E+SbZe6lOOMeZ3
KW59j0EZd0KvDOjYS+QxL5loP2eJVHQYzUaoT3kRI5cIzUc+pVZkvyCU9DqQ
uvuOA4g/KGds55MRPKxuPEQ1TVF1JXHjNKlcyRJuOAEvfKsLCrO8a05fBFv3
CIR+bbcN3Ou+KeF8c4mEm7FPbuXpd0KHwAGMGkog9sl335kVWfNLWvT8PFgU
zhqsXAK7JRwSXyOoA6bs9xsoqMOOHC7rSJrkiDkWMNnonw0Z8sq7zjkKl8dA
1DZ+BDI/8vL5BdHXVKH8b0IM5mvJfIZyymdMSgIfWyKOCH8B6Te22pAt6hbK
Q1q2TJKTZWG8gQ5vJ8STp5TaGwddwb1r8g/e4ckn8BzxTFCXGttqA0vCuLFm
blHt1jvmlekKw44lDTDNpuY80/lJNBDCbEynC404HXyH02JfjBD3ammRFyfK
RHxGi2RclOS/OtSEQ6vJ0YVs26Z0TPFKhQU5wUfNoA00Q7rPeOoSZr+bgAkt
leTiRLgWyJq1TzIwGgXHQw/8GCF8kUpQbmrgDgYkyfdMrQHT1+yiFMiIN0Wd
y1xqVawjB7lWxJZaBXkOjC3IOnn/5iImDkmpotIBaGwo1ucIlOwK/CBKAvZ9
ME9kkiOZRC/TI+f1qGCtdhB2Tb4eIOOaupUaHmjaKrEA0r6DvCxohbzCQUg1
OYZmZFHZIlrNxqgr9caQ0y+7WBNs54Y8sdVwiaqCx2kSHdRFIs1MotLwXYMc
VmvVkMqUb8a60e8p1kK8JVz7RXge80PFKPdakQdgN9W7c325upzjtSu3ilqA
J+Nq/ia+a7nmgfPjDuRqWC0UlxfJeOzR0NNAs22TM3PC9JwKJ4nkJaVw5D8l
Z/GdDjOQ2BLex+N54lZTl2QrZDIoLQSrIhSx5aPejfXaJ8QuQt6PiMQCA0hG
4Q8lxRD8SAeeasqQAf9QfJxOOuQvY2kod+Tq9odigfuVvvy1NiQVsnsOMZHh
jG8GtcHKbpFESsoT/FXABs0YATIKMwQwDIbck/l+cKfA9qPQQd2qrdNi5VQZ
/R884Q+mbhFNs8SMQBlYz9BYRbVjCNdmtQ6pVmtuugTRZHtW+pOs9EZXpPnA
BK7NzRmx4U4jdmew2ntS2fjsY1P/Wo/DKzKHlyf0+Vt2IYGsGmsk4KBQi/F8
NPDmSPhTV0l8or2iLcQJRlxI9JDEZZ/EYZ6U1HTK4haQB+SKA0vnyscmS2wH
mTa5S+K8pz8pAs33EcU0SdNkgRshvmCZpixqcomlzl1F4pINfMjtJI3GHqEz
eMefIbVM3ZFTDTrwlFW29oAExwBxq2k5CkutPlHb8yK223dDu/dNKtkIf3pz
opce929PlILgDTbGy9JSzwInWFlHhlPUO5BmnnGdlNybUXM06ZqPnn++kHsZ
6eagE8aavb4MJ+HPdGVHXx/jL8gIT7GLXWpoxC0xH0aST7G3524oHf0oR8tK
7TSlw76jUntHjBGgsMt/8ZFK+c0qHc7T50peLsYfxM5IfHymr9OSnyZEfsXf
xAi/0tOkelqxn/lpzwERKc9ZLfntBf+afvjBaEHa87BP5mwi7dl4N33ODhQ6
o7d6n8zxz8kX6e3TPplDeCdkjsKbpOmPK8cBHpM5DrB0pyF+NYJ4REZOFqQ9
B9j8NYibPwbx5tSLtK34LMT/+Kr//PP3IZ5gcwDxXTwneUTsn/fhlz3ADx3V
hgOAXw4Af5iQ+ekUwP3nBMBK7C/8C59fZTUhc3XKh/vPCYA7MUrAp314xPio
Dx/aqUfw+nNp4nqA2P8/IL7iPCqeb+SLmItx2EeD+3GhKrNqvpoVmkbAszjW
/Gr2NuXw/jh7T5tmOOr/uDaVHlW3Pts3dKjjGkA9UdSCDgZI6NOpmueWJY10
UB09DXhif2a7quQuMp9OmIzPdOgElE5f6IDRp7Q0XkTRoEFJf26RS0uznb4z
hlw8c1SoMk9sppCGPqgut5KnvPK2KdaoTo+Bek1u7rndSgJS0x4Ny0qPzyx7
oxG5zTqM+pnYQStm4dM0FVJTW+/0L5qGQhc0i6EtGfF4oqcn02lMpg8AxmRl
5yMOHuYc8u/h/BGN+7QAx7oex3A8zH5+zqNxamhAIZl4fvyMxr07k6TRCLHP
gyU6hq11VWbVGv0pSGrrXFyfxia5+cueVBqF3r4WCWp6lfL6HvN0Xv3uMf6+
kHv8U7IiOURaq3gBqUrCMWZJuHzWvRhzfHmUo8hrf5fvNbPo+fbeSU89uRn3
Og/ffXMR56ID1+t9rv1e8sk46yMqdBg8zlpMWEdnpy0XcFwDcxkfG31ygtFh
IfvemZ/4lmBx58NelJaQT9VZ5P1TT552xojhseI4qb6Lc8i7yTydukpSKI3B
h9n73thd4dwNDPLs88iUHc18vuE64IEIqFUDIyDn0aR4MrejIQVOBRUOpb5r
W+vCZN46SiF5TszG23JWpCspmOM/8TScjjYwfbdKU2TXzONp2NCVlYwDepi6
CDRm4EkCSFAcTUYTPqmCgJndxXMwbTfxHgPH8Jply8tmMYG1tu0qBetlIKB1
cIq5rtlSII1jntOU4fIqyjs7WC89hosWPUeBaG5p2nnrOQ/nOyBOdTSoGF17
LG1Yn74KEIQyQqAr9Ij+SLQDuZJRUTLU0lSHdqWR9PCSClWfq+jawPuu1nEE
sndOooswEtP5sZT41V86iDauGPQcD2a59oyLTUVXfrLp6iUCg4dDhlU+731s
Tnl5vIXGCjxuoSeBTooEYaVoWuU0QixyyQRSxqCMsOoHqhQwPJYYTXrIBSl2
YHZDOaKBd6VZcYR5dDs3Qm98V9L79Jy8igimHEpXkk3Ifn0ZT4Q5plKBHNHk
LK9d3Xt5DBQK9+AsTux0RYP2QW+o9hkfR1KjgToFBSDles8nbHWgGjzz3bhe
JRKjZYKWxfCYXHsw3rVFystj2Tis9YEms3GWr+Q2GoKK5rIyfh3nhLl+DZKG
ONBFeYmTstizDK3OHm9KFjRqFlONenojtYl2iEOt2HEVquWrIpq+xMMv0c1x
lz2XqwPdWORRZKbd31wcStVR4qU9Pfv+PpjAmlxzDZyPMcmFI8QRN49BWHjk
gNs0BIgebXlKE7eV8zj2SnKwheKrPFvngVMKnDxMQPLne2/yq+SLUbkDLXrY
ozfyZa8KKrplb4f+1pJ472LyRkVe7vJVFI5YF4cDO6Y2Gfum1kEhnv/d8fNJ
+8ZG7dNlnmel0h4v0kESgYT2XOrK6wtE3A/T7Hvs8vnESImInXN+uTh6W5gu
rUrBnXOs85SMhu6UEnjOi2oU0F5tIBScoOP6suafydx52ArcPLWLyVCVqQ11
ChQf3Cjc3357e7w16G/yS6tjNkpwctVSRSwFsA6RSLftS1V8FP8DQ/cAKbsj
AAA=

-->

</rfc>
