<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.12 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-report-04" category="info">

  <front>
    <title abbrev="Secure Reporting of Update Status">Secure Reporting of Update Status</title>

    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>brendan.moran.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>

    <date year="2022" month="October" day="24"/>

    <area>Security</area>
    <workgroup>SUIT</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The Software Update for the Internet of Things (SUIT) manifest provides
a way for many different update and boot
workflows to be described by a common format. However, this does not
provide a feedback mechanism for developers in the event that an update
or boot fails.</t>

<t>This specification describes a lightweight feedback mechanism that
allows a developer in possession of a manifest to reconstruct the
decisions made and actions performed by a manifest processor.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>A SUIT manifest processor can fail to install or boot an update for many
reasons. Frequently, the error codes generated by such systems fail to
provide developers with enough information to find root causes and
produce corrective actions, resulting in extra effort to reproduce
failures. Logging the results of each SUIT command can simplify this
process.</t>

<t>While it is possible to report the results of SUIT commands through
existing logging or attestation mechanisms, this comes with several
drawbacks:</t>

<t><list style="symbols">
  <t>data inflation, particularly when designed for text-based logging</t>
  <t>missing information elements</t>
  <t>missing support for multiple components</t>
</list></t>

<t>The CBOR objects defined in this document allow devices to:</t>

<t><list style="symbols">
  <t>report a trace of how an update was performed</t>
  <t>report expected vs. actual values for critical checks</t>
  <t>describe the installation of complex multi-component architectures</t>
  <t>describe the measured properties of a system</t>
  <t>report the exact reason for a parsing failure</t>
</list></t>

<t>This document provides a definition of a SUIT-specific logging container
that may be used in a variety of scenarios.</t>

</section>
<section anchor="terminology"><name>Conventions and Terminology</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL</bcp14>
NOT", "<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>

<t>Terms used in this specification include:</t>

<t><list style="symbols">
  <t>Boot: initialization of an executable image. Although this
specification refers to boot, any boot-specific operations described
are equally applicable to starting an executable in an OS context.</t>
</list></t>

</section>
<section anchor="the-suit-record"><name>The SUIT Record</name>

<t>If the developer can be assumed to have a copy of the
manifest, then they need little information to reconstruct what the
manifest processor has done. They simply need any data that influences
the control flow of the manifest. The manifest only supports the
following control flow primitives:</t>

<t><list style="symbols">
  <t>Set Component</t>
  <t>Set/Override Parameters</t>
  <t>Try-Each</t>
  <t>Run Sequence</t>
  <t>Conditions</t>
</list></t>

<t>Of these, only conditions change the behavior of the processor from the
default, and then only when the condition fails.</t>

<t>Then, to reconstruct the flow of a manifest, all a developer needs is
a list of metadata about failed conditions:</t>

<t><list style="symbols">
  <t>the current manifest</t>
  <t>the current section</t>
  <t>the offset into the current section</t>
  <t>the current component index</t>
  <t>the "reason" for failure</t>
</list></t>

<t>Most conditions compare a parameter to an actual value, so the "reason"
is typically simply the actual value.</t>

<t>Since it is possible that a non-condition command (directive) may fail in an
exceptional circumstance, this must be included as well. However, 
a failed directive will terminate processing of the manifest. To accommodate
for a failed command and for explicit "completion," an additional "result"
element is added as well. In the case of a command failure,
the failure reason is typically a numeric error code. However, these error
codes need to be standardised in order to be useful.</t>

<t>Reconstructing what a device has done in this way is compact,
however it requires some reconstruction effort. This is an issue that
can be solved by tooling.</t>

<figure><artwork><![CDATA[
SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : SUIT_Parameters,
    $$SUIT_Record_Extensions
]
]]></artwork></figure>

<t>suit-record-manifest-id is used to identify which manifest contains the
command that caused the record to be generated. The manifest id is a
list of integers that form a walk of the manifest tree, starting at the
root. An empty list indicates that the command was contained in the
root manifest. If the list is not empty, the command was contained in
one of the root manifest's dependencies, or nested even further below
that.</t>

<t>For example, suppose that the root manifest has 3 dependencies
and each of those dependencies has 2 dependencies of its own:</t>

<t><list style="symbols">
  <t>Root  <list style="symbols">
      <t>Dependency A      <list style="symbols">
          <t>Dependency A0</t>
          <t>Dependency A1</t>
        </list></t>
      <t>Dependency B      <list style="symbols">
          <t>Dependency B0</t>
          <t>Dependency B1</t>
        </list></t>
      <t>Dependency C      <list style="symbols">
          <t>Dependency C0</t>
          <t>Dependency C1</t>
        </list></t>
    </list></t>
</list></t>

<t>A manifest-id of [1,0] would indicate that the current command was
contained within Dependency B0. Similarly, a manifest-id of [2,1]
would indicate Dependency C1</t>

<t>suit-record-manifest-section indicates which section of the manifest was
active. This is used in addition to an offset so that the developer can
index into severable sections in a predictable way. The value of this
element is the value of the key that identified the section in the
manifest.</t>

<t>suit-record-section-offset is the number of bytes into the current
section at which the current command is located.</t>

<t>suit-record-component-index is the index of the component that was
specified at the time that the report was generated. This field is
necessary due to the availability of set-current-component values of
True and a list of components. Both of these values cause the manifest
processor to loop over commands using a series of component-ids, so the
developer needs to know which was selected when the command executed.</t>

<t>suit-record-properties contains any measured properties that led to the
command failure.
For example, this could be the actual value of a SUIT_Digest or
class identifier. This is encoded in a SUIT_Parameters block as defined
in <xref target="I-D.ietf-suit-manifest"/>.</t>

</section>
<section anchor="the-suit-report"><name>The SUIT Report</name>

<t>Some metadata is common to all records, such as the root manifest:
the manifest that is the entry-point for the manifest processor. This
metadata is aggregated with a list of SUIT_Records. The SUIT_Report
may also contain a list of any system properties that were measured
and reported, and a reason for a failure if one occured.</t>

<figure><artwork><![CDATA[
SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => [ * SUIT_Record / system-property-claims ],
  suit-report-result          => true / {
    suit-report-result-code   => int, ; could condense to enum later
    suit-report-result-record => SUIT_Record,
  }
  $$SUIT_Report_Extensions
}
system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + SUIT_Parameters,
}
]]></artwork></figure>

<t>The suit-reference provides a reference URI and digest for a suit
manifest. The uri <bcp14>SHOULD</bcp14> be the canonical URI that is provided in the
manifest. The digest is the digest of the manifest.</t>

<t>NOTE: The digest is used
in preference to other identifiers in the manifest because it allows
a manifest to be uniquely identified (collision resistance) whereas
other identifiers, such as the sequence number, can collide,
particularly in scenarios with multiple trusted signers.</t>

<t>The following CDDL describes a SUIT_Reference.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Reference = {
    suit-report-manifest-uri  => tstr,
    suit-report-manifest-digest => SUIT_Digest,
}
]]></sourcecode></figure>

<t>suit-report-manifest-digest provides a SUIT_Digest (as defined in
<xref target="I-D.ietf-suit-manifest"/>) that is the characteristic digest of the
Root manifest.</t>

<t>suit-report-manifest-uri provides the reference URI that was provided in
the root manifest.</t>

<t>suit-report-nonce provides a container for freshness or replay
protection information. This field <bcp14>MAY</bcp14> be omitted where the suit-report
is authenticated within a container that provides freshness already.
For example, attestation evidence typically contains a proof of
freshness.</t>

<t>suit-report-records is a list of 0 or more SUIT Records or 
system-property-claims. Because SUIT Records are only generated on failure,
in simple cases this can be an empty list. SUIT_Records and 
suit-system-property-claims are merged into a single list because this
reduces the overhead for a constrained node that generates this report.
The use of a single append-only log allows report generators to use simple
memory management. Because the system-property-claims are encoded as maps
and SUIT_Records are encoded as lists, a recipient need only filter the
CBOR Type-5 entries from suit-report-records to obtain all 
system-property-claims.</t>

<t>System properties can be extracted from suit-report-records by filtering
suit-report-records for maps. System Properties are a list of measured 
or asserted properties
of the system that creates the suit report. These properties are scoped by
component identifier. Because this list is expected to be constructed on
the fly by a constrained node, component identifiers may appear more than
once. A recipient may convert the result to a more conventional structure:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Record_System_Properties = {
  * component-id => {
    + SUIT_Parameters,
  }
}
]]></sourcecode></figure>

<t>suit-report-result provides a mechanism to show that the SUIT procedure
completed successfully (value is true) or why it failed (value is a map
of an error code and a SUIT_Record).</t>

<t>The suit-report-result-code indicates the reason for the failure. Values
are expected to be CBOR parsing failures, Schema validation failures,
COSE validation failures or SUIT processing failures.</t>

<t>The suit-report-result-record indicates the exact point in the manifest
or manifest dependency tree where the error occured.</t>

</section>
<section anchor="attestation"><name>Attestation</name>

<t>This document describes how a well-informed verifier can infer the trustworthiness of a remote device. Remote attestation is done by using the SUIT_Manifest_Envelope along with the SUIT_Report to reconstruct the state of the device at boot time. By embedding data used for remote attestation in the SUIT_Report, a remote device can use an append-only log to collect both measurements and debug/failure information into the same document. This document can then be conveyed to a verifier as a part of the attestation evidence. A remote attestation format to convey attestation evidence, such as an Entity Attestation Token (EAT, see <xref target="I-D.ietf-rats-eat"/>), that contains a SUIT_Report <bcp14>MUST</bcp14> also include an integrity measurement of the Manifest Processor &amp; Report Generator.</t>

<t>When a Concise Reference Integrity Manifest (CoRIM, see <xref target="I-D.birkholz-rats-corim"/> is delivered in a SUIT_Manifest_Envelope, this codifies the delivery of verification information to the verifier:</t>

<t><list style="symbols">
  <t>The Firmware Distributor:
  <list style="symbols">
      <t>sends the SUIT_Manifest_Envelope to the Verifier without payload or text, but with CoRIM</t>
      <t>sends the SUIT_Manifest_Envelope to the recipient without CoRIM, or text, but with payload</t>
    </list></t>
  <t>The Recipient:
  <list style="symbols">
      <t>Installs the firmware as described in the SUIT_Manifest and generates a SUIT_report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
      <t>Boots the firmware as described in the SUIT_Manifest and creates a SUIT_report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
    </list></t>
  <t>The Firmware Distributor sends both reports to the verifier (separately or together)</t>
  <t>The Verifier:
  <list style="symbols">
      <t>Reconstructs the state of the device using the manifest</t>
      <t>Compares this state to the CoRIM</t>
      <t>Returns an Attestation Report to the Firmware Distributor</t>
    </list></t>
</list></t>

<t>This approach simplifies the design of the bootloader since it is able to use an append-only log. It allows a verifier to validate this report against a signed CoRIM that is provided by the firmware author, which simplifies the delivery chain of verification information to the verifier.</t>

<t>This information is not intended as Attestation Evidence and while an Attestation Report <bcp14>MAY</bcp14> provide this information for conveying error codes and/or failure reports, it <bcp14>SHOULD</bcp14> be translated into general-purpose claims for use by the Relying Party.</t>

</section>
<section anchor="capability-reporting"><name>Capability Reporting</name>

<t>Because SUIT is extensible, a manifest author must know what capabilities a device has available. To enable this, a capability report is a set of lists that define which commands, parameters, algorithms, and component IDs are supported by a manifest processor.</t>

<t>The CDDL for a SUIT_Capability_Report follows:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Capability_Report = {
  suit-component-capabilities        => [+ SUIT_Component_Capability ]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]
]]></sourcecode></figure>

<t>A SUIT_Component_Capability is similar to a SUIT_Component_ID, with one difference: it may optionally be terminated by a CBOR 'true' which acts as a wild-card match for any component with a prefix matching the SUIT_Component_Capability leading up to the 'true.' This feature is for use with filesystem storage, key value stores, or any other arbitrary-component-id storage systems.</t>

<t>When reporting capabilities, it is <bcp14>OPTIONAL</bcp14> to report capabilities that are declared mandatory by the SUIT Manifest <xref target="I-D.ietf-suit-manifest"/>. Capabilities defined by extensions <bcp14>MUST</bcp14> be reported.</t>

<t>Additional capability reporting can be added as follows: if a manifest element does not exist in this map, it can be added by specifying the CBOR path to the manifest element in an array and using this as the key. For example SUIT_Dependencies, as described in <xref target="I-D.ietf-suit-trust-domains"/> could have an extension added, which was key 3 in the SUIT_Dependencies map. This capability would be reported as: [3, 3, 1] =&gt; [3], where the key consists of the key for SUIT_Manifest (3), the key for SUIT_Common (3), and the key for SUIT_Dependencies (1). Then the value indicates that this manifest processor supports the extension (3).</t>

</section>
<section anchor="iana"><name>IANA Considerations</name>

<t>IANA is requested to allocate a CBOR tag for the SUIT Report.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The SUIT Report should either be carried over a secure transport, or
signed, or both. Ideally, attestation should be used to prove that the
report was generated by legitimate hardware.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Dave Thaler for his feedback.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>




<reference anchor='I-D.ietf-suit-manifest'>
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Hannes Tschofenig' initials='H.' surname='Tschofenig'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'>
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Koen Zandberg' initials='K.' surname='Zandberg'>
         <organization>Inria</organization>
      </author>
      <author fullname='Øyvind Rønningstad' initials='O.' surname='Rønningstad'>
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day='7' month='October' year='2022'/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an IoT device), where to find the that code/data,
   the devices to which it applies, and cryptographic information
   protecting the manifest.  Software updates and Trusted Invocation
   both tend to use sequences of common operations, so the manifest
   encodes those sequences of operations, rather than declaring the
   metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-manifest-20'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-suit-manifest-20.txt' type='TXT'/>
</reference>



<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<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>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.ietf-rats-eat'>
   <front>
      <title>The Entity Attestation Token (EAT)</title>
      <author fullname='Laurence Lundblade' initials='L.' surname='Lundblade'>
         <organization>Security Theory LLC</organization>
      </author>
      <author fullname='Giridhar Mandyam' initials='G.' surname='Mandyam'>
         <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Jeremy O&#39;Donoghue' initials='J.' surname='O&#39;Donoghue'>
         <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Carl Wallace' initials='C.' surname='Wallace'>
         <organization>Red Hound Software, Inc.</organization>
      </author>
      <date day='22' month='October' year='2022'/>
      <abstract>
	 <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine how much
   it wishes to trust the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-rats-eat-17'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-rats-eat-17.txt' type='TXT'/>
</reference>


<reference anchor='I-D.birkholz-rats-corim'>
   <front>
      <title>Concise Reference Integrity Manifest</title>
      <author fullname='Henk Birkholz' initials='H.' surname='Birkholz'>
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Thomas Fossati' initials='T.' surname='Fossati'>
         <organization>arm</organization>
      </author>
      <author fullname='Yogesh Deshpande' initials='Y.' surname='Deshpande'>
         <organization>arm</organization>
      </author>
      <author fullname='Ned Smith' initials='N.' surname='Smith'>
         <organization>Intel</organization>
      </author>
      <author fullname='Wei Pan' initials='W.' surname='Pan'>
         <organization>Huawei Technologies</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether to engage in secure interactions with it.  Evidence about
   trustworthiness can be rather complex and it is deemed unrealistic
   that every Relying Party is capable of the appraisal of Evidence.
   Therefore that burden is typically offloaded to a Verifier.  In order
   to conduct Evidence appraisal, a Verifier requires not only fresh
   Evidence from an Attester, but also trusted Endorsements and
   Reference Values from Endorsers and Reference Value Providers, such
   as manufacturers, distributors, or device owners.  This document
   specifies Concise Reference Integrity Manifests (CoRIM) that
   represent Endorsements and Reference Values in CBOR format.
   Composite devices or systems are represented by a collection of
   Concise Module Identifiers (CoMID) and Concise Software Identifiers
   (CoSWID) bundled in a CoRIM document.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-birkholz-rats-corim-03'/>
   <format target='https://www.ietf.org/archive/id/draft-birkholz-rats-corim-03.txt' type='TXT'/>
</reference>


<reference anchor='I-D.ietf-suit-trust-domains'>
   <front>
      <title>SUIT Manifest Extensions for Multiple Trust Domains</title>
      <author fullname='Brendan Moran' initials='B.' surname='Moran'>
         <organization>Arm Limited</organization>
      </author>
      <author fullname='Ken Takayama' initials='K.' surname='Takayama'>
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day='24' month='October' year='2022'/>
      <abstract>
	 <t>   This specification describes extensions to the SUIT manifest format
   (as defined in [I-D.ietf-suit-manifest]) for use in deployments with
   multiple trust domains.  A device has more than one trust domain when
   it enables delegation of different rights to mutually distrustful
   entities for use with different purposes or components in the context
   of firmware update.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-trust-domains-01'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-suit-trust-domains-01.txt' type='TXT'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIAAbkVmMAA71b65LcNnb+z6dAxluxJHe3NLZTyU7i3R3NjOOpkixnNHLK
JalUaBLdzR022SZIjXpV8rPkWfJk+c4FINgXxZsfUe1lSAIHB+f6nQP0dDrN
urKr3Jl56fK+debGbZq2K+ulaRbm1aawnTMvO9v1PrPzeeve/56RRZPXdg2i
RWsX3bR03WLq+7Kbtjxn+uTbLMfwZdNuz0xZL5osKzftmena3ndfP3nyxydf
Z7Z1Vtcqu21237R3y7bpN3j36vo2u3NbvCrOzHXdubZ23fSS1soy39m6eGer
psb6W+ezTXmWGdMuclf4blvpW2O6Jk/+LOvC1V144cFl6xY+Pm/Xo8euLfM4
OG/Wa8yNX8u6KuthGfehm1al76YgMm8qDJs2j77CF0hpbTcbSFDG2r5bNS2Y
neIj/ytrjH46M8+b1tbhpUj2aevqwtbjT027tHX5N9uVTX1mztu1eVauy84V
YYBb27I6M3OZPFvT5Bmp5y9L+jLDVrC8Ga3/w8w8Ldu7VVP9bczCD66+2/s0
ZuH71vb1qlm41ryE0sZcrDB/Ntf5f/FlN1vE4bPCwSZgGe0apN47UuH19JJ5
nba281NnoYCr81v9EOjIx7xpy/WZuWhurp+nM9kI2cqmRQMusL8sqw8uwkPX
2MvC+Q6jptOpsXNo3uawstsVjL1ZdPcw02D8YNZ0eB8skvzidgX1evOAbPah
CeTMpm3elwXp3NzbLc/Et60pygU2D2MyvdCELZt503Rs/4uqufcwVjN3BpPz
tpw7fN4ayzbY1EbkNTM/NPfuvWsn4Kf0MDTnTQ0iuizGL5wr5ja/M2uXr8CV
XzMTBWZVzca1HrrnzeAFuOlWtgMvylWGkcSUWUCPfkbSwCp+4/JyUeas+sif
x2JVuVx1947+99DCRDyzFW/ODiwQB5vGe+c9EYQw7SBACKF1eVNDH31O/Lms
wPI00mNUIZKDqvgFqJFkgrBSNeQg37Qz0e+6LIoKhvcF6bBtip7nZ9k5x5wD
80wOoZAUiCFYU4dtmCCdKK+o3wwxzYOhGRzD/dpDstV2ImJuW6LWQGxm6WoH
KxZufZ+vEH5859Y+rBT1mKjrvuxWxtVNv1yZ6DcQG/haILaZljjKbe9JI3VB
JLA9hyVbCJKsP0hrAsn6vuLIDhUgfLXWuAVIqth1akbcIBFgN8+a5ZKG005k
sid9OQveWXJknqQQEpcv15uqXGzZNjMVJRTwn6uycqbsDGyJ9F7O8SgL8tJj
2ilZ+MSqpZ1n7gMCLXFSKUcQqu066EykEY3Oq2uAglPhefIYW2XIWfdkoRQa
Hhnoz5JAKyYwMRuLnJf3lW2rrblHCCNLL5c1tMX+T9F+bj0elQXQWJfYDUtz
0IurHCeN5LPvN7xTthZSwKYi/aw3SGU0koPOxdMXN6aZ/xU6g2M76BZLsa+y
o+c9UTXsTWQeJYQLIfJWVJDWUAxzJMQVBg1Wem8TTxnGuw9wbLLG99A0bKS3
lXlvqx6EiVN4OQSCd/nKQWgkMnV9Vpk6hWwaS9J+KvdBNjiNuzO2zVfIVCAP
Je8SWcNt8L4gxwOHXem8xANxjIFXdqUPYNKIpzGHlpTGElaL1YAVpRWiMUcf
SLTsYsAhM5uGyBatCoGnQ/JwbcaBcY0QDk57L6qwEE+LHLIlEj53NZ4asvAv
DDJSTQGVoxI5xK1r12XdgPDWfPyiG54+iboBcwzhHG9Onr96eXsykf83P77g
v2+u/uPV9c3VJf398ofzZ8/iH5mOePnDi1fPLoe/hpkXL54/v/rxUibjrRm9
yk6en/+CL8TkyYufbq9f/Hj+7OSApbVOM1JJaW/TOjIVCwwYExTmPL346b//
6/Rb8/HjP9x8f/H16ekfP33Sh385/edv8UCuJKs1tXoWR8ZtBojkLGcDCq65
3ZQwKPgvrNXDgGvgiNZBuo9ek2Tenpl/m+eb02//pC9ow6OXQWajlyyz/Td7
k0WIB14dWCZKc/R+R9Jjfs9/GT0HuScvYRYwEh+NrdtPvWWdV33h2OefIuwT
xIZJ20phGVs2BXZg685SlC3Xdulm5rwCAKUEwpHZ7JAFAKZEQ8oGUdLVlv8a
3IN804ptR+2DDJkIsh20h+S7QezPrYZ2hAapIHbYqenFi5fsZwio7DqMuCjo
3yDvt0WWXS/Y3Qe8QMkFdmi97ynVg/7KUloDmQ37IqGEkMPZuBjibE3tKFyX
Xcdrj3JnCjLuyddTGgkOWFnyiRpCvCWKnOOUMOM6yiIcKyiVIPFjWkbc0w7b
pjIE7ZTFCDOY1gA62C80R3jmY9FQmA8BKZLZtAT6kdEpg01RQnUIOxpn5fnx
C6S6lhDET7YFlofjeny5bbfTK+Rs/HnT1xj4K3OKR4StgqMistAL5tK7iXCU
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
XJLx3q5spQdiEjXlN5Kz7H8AzwIRa6A9AAA=

-->

</rfc>

