<?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.25 (Ruby 3.2.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-cddl-csv-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="CDDL for CSVs">Using CDDL for CSVs</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-cddl-csv-02"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2023" month="February" day="27"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610,
is defined to provide data models for data shaped like JSON or CBOR.</t>
      <t>Another representation format that is quote popular is the CSV
(Comma-Separated Values) file as defined by RFC 4180.</t>
      <t>The present document shows a way how to use CDDL to provide a data model for
CSV files.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>The Concise Data Definition Language (CDDL), standardized in <xref target="RFC8610"/>,
is defined to provide data models for data shaped like JSON or CBOR.</t>
      <t>Another representation format that is quote popular is the CSV file as
defined by <xref target="RFC4180"/>.</t>
      <t>The present document shows how to use CDDL to provide a data model for
CSV files.</t>
      <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>
        <t>This specification uses terminology from <xref target="RFC8610"/>.</t>
      </section>
    </section>
    <section anchor="csv-generic-data-model">
      <name>CSV generic data model</name>
      <t>The CSV format is defined in <xref target="RFC4180"/>.
The generic data model for the data in a CSV file can be described in CDDL as:</t>
      <sourcecode type="cddl"><![CDATA[
csv = [?header, *record]
header = [+header-field]
record = [+field]
header-field = text
field = text
]]></sourcecode>
      <t>Note that the elements of this data model describe the interpretation
of the data after processing and removal of lexical structure such as newlines,
commas, escape characters, and quotation marks.</t>
      <t>For the purposes of a specific application, the data model level
structure of each field may be described in a more elaborate way,
e.g., as a number.  CDDL currently does not have a way to express the
transformation from the text string in the CSV field to the number
that this text string
represents at the application data model level; the usage of anything
but "text" for a field therefore <bcp14>MUST</bcp14> be
accompanied by an instruction how to perform the translation.
As a preferred choice, the JSON representation of the data model item, if it
exists, <bcp14>MAY</bcp14> be chosen by that instruction.</t>
      <t>Since the CSV media type text/csv defaults to using the US-ASCII
character set (i.e., <xref target="STD80"/>; see <xref section="3" sectionFormat="of" target="RFC4180"/>), many uses of CSV will need to specify the media type
parameter <tt>charset</tt>.
(Note that CDDL can describe text information that is in UTF-8 form,
which includes US-ASCII as that is a subset of UTF-8.
If a different form that is not a subset of UTF-8 is really still
needed, some rules for conversion will need to be defined by the
application.)</t>
      <t>The media type parameter <tt>header</tt> <bcp14>MAY</bcp14> be used to
indicate the presence or absence of a header line; if it is not given,
the grammar <bcp14>MUST NOT</bcp14> be ambiguous about the presence of a header
(i.e., it <bcp14>MUST</bcp14> be either mandatory or absent).</t>
      <t>Note that the ABNF <xref target="STD68"/> in <xref target="RFC4180"/> does not quite handle the case that
<tt>charset</tt> is not <tt>us-ascii</tt>.
For the purposes of the present specification, the ABNF is understood
to allow all characters from the <tt>charset</tt> except %x22 and %x2C in <tt>TEXTDATA</tt>.
For the purposes of the present specification, the ABNF rule <tt>CRLF</tt> is
read as:</t>
      <sourcecode type="abnf"><![CDATA[
CRLF = [CR] LF
]]></sourcecode>
      <t>as is hinted in <xref section="3" sectionFormat="of" target="RFC4180"/>.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>A simplified CSV form definition of a SID file <xref target="I-D.ietf-core-sid"/>
might look like this:</t>
      <sourcecode type="cddl"><![CDATA[
; header = absent

SID-File = [meta-record, 
            ?description-record,
            *dependency-record,
            *range-record,
            *item-record]

meta-record = ["ietf-sid-file",
               module-name: text,
               module-revision: empty / text,
               sid-file-revision: empty / text,
               sid-file-status: empty / "unpublished" / "published"]

description-record = ["description",
                      description: empty / text]

dependency-record = ["dependency",
                     module-name: text,
                     module-revision: text]

range-record = ["range",
                entry-point: uint,
                size: uint]

item-record = [; "item", -- useful to elide for bulk of file
               sid: uint
               (
                 namespace: "module" / "identity" / "feature"
                 identifier: yang-identifier
                //
                 namespace: "data"
                 identifier: schema-node-path
               )
               status: empty / "stable" / "unstable" / "obsolete"]

yang-identifier = text .abnf ("yang-identifier" .det id-abnf)
schema-node-path = text .abnf ("schema-node-path" .det id-abnf)
id-abnf = '
  schema-node-path = "/" QID *( "/" OQID)
  yang-identifier = ID
  QID = ID ":" ID
  OQID = ID [":" ID]
  ID = I *C
  I = "_" / %x41-5a / %x61-7a
  C = I / %x30-39 / "-" / "."
'

empty = ""
]]></sourcecode>
      <t>This CDDL data model assumes that the text strings representing the
numbers <tt>entry-point</tt>, <tt>size</tt>, and <tt>sid</tt> are converted to uint.
(Note that, due to the way YANG-JSON <xref target="RFC7951"/> defines the
representation of <tt>uint64</tt> data items, these actually are text strings
in JSON, which in CSV is indistinguishable from numbers.
However, the CDDL model for the CSV files will be more useful if it
takes into account typical CSV applications that automatically convert
integer-like text strings into numbers.)</t>
      <t>The result of representing in CSV the sid file ietf-system.sid (as
defined in <xref section="A" sectionFormat="of" target="I-D.ietf-core-sid"/>) is shown in <xref target="sid-example"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>The security considerations of <xref target="RFC8610"/> and <xref target="RFC4180"/> apply.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC4180">
          <front>
            <title>Common Format and MIME Type for Comma-Separated Values (CSV) Files</title>
            <author fullname="Y. Shafranovich" initials="Y." surname="Shafranovich">
              <organization/>
            </author>
            <date month="October" year="2005"/>
            <abstract>
              <t>This RFC documents the format used for Comma-Separated Values (CSV) files and registers the associated MIME type "text/csv".  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4180"/>
          <seriesInfo name="DOI" value="10.17487/RFC4180"/>
        </reference>
        <reference anchor="STD68">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </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">
              <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">
          <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>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-core-sid">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="26" month="July" year="2022"/>
            <abstract>
              <t>   YANG Schema Item iDentifiers (YANG SID) are globally unique 63-bit
   unsigned integers used to identify YANG items, as a more compact
   method to identify YANG items that can be used for efficiency and in
   constrained environments (RFC 7228).  This document defines the
   semantics, the registration, and assignment processes of YANG SIDs
   for IETF managed YANG modules.  To enable the implementation of these
   processes, this document also defines a file format used to persist
   and publish assigned YANG SIDs.


   // The present version (-19) adds in draft text about objectives,
   // parties, and roles.  This attempts to record discussions at side
   // meetings before, at, and after IETF 113.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-sid-19"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka">
              <organization/>
            </author>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="STD80">
          <front>
            <title>ASCII format for network interchange</title>
            <author fullname="V.G. Cerf" initials="V.G." surname="Cerf">
              <organization/>
            </author>
            <date month="October" year="1969"/>
          </front>
          <seriesInfo name="STD" value="80"/>
          <seriesInfo name="RFC" value="20"/>
          <seriesInfo name="DOI" value="10.17487/RFC0020"/>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen">
              <organization/>
            </author>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <author fullname="Q. Wu" initials="Q." surname="Wu">
              <organization/>
            </author>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content.  One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line.  The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy.  Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
      </references>
    </references>
    <section anchor="sid-example">
      <name>Example: ietf-system.sid represented in CSV</name>
      <t>This appendix shows the CSV file that is automatically generated from <xref section="A" sectionFormat="of" target="I-D.ietf-core-sid"/>.
(Note that plaintext-based RFCs are limited to 72 columns; therefore
five long lines in the CSV file have been folded as defined in
<xref target="RFC8792"/>.)</t>
      <sourcecode type="csv"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

ietf-sid-file,ietf-system,2014-08-06,,
description,Example sid file
dependency,ietf-yang-types,2013-07-15
dependency,ietf-inet-types,2013-07-15
dependency,ietf-netconf-acm,2018-02-14
dependency,iana-crypt-hash,2014-08-06
range,1700,100
1700,module,ietf-system,
1701,identity,authentication-method,
1702,identity,local-users,
1703,identity,radius,
1704,identity,radius-authentication-type,
1705,identity,radius-chap,
1706,identity,radius-pap,
1707,feature,authentication,
1708,feature,dns-udp-tcp-port,
1709,feature,local-users,
1710,feature,ntp,
1711,feature,ntp-udp-port,
1712,feature,radius,
1713,feature,radius-authentication,
1714,feature,timezone-name,
1715,data,/ietf-system:set-current-datetime,
1716,data,/ietf-system:set-current-datetime/current-datetime,
1717,data,/ietf-system:system,
1718,data,/ietf-system:system-restart,
1719,data,/ietf-system:system-shutdown,
1720,data,/ietf-system:system-state,
1721,data,/ietf-system:system-state/clock,
1722,data,/ietf-system:system-state/clock/boot-datetime,
1723,data,/ietf-system:system-state/clock/current-datetime,
1724,data,/ietf-system:system-state/platform,
1725,data,/ietf-system:system-state/platform/machine,
1726,data,/ietf-system:system-state/platform/os-name,
1727,data,/ietf-system:system-state/platform/os-release,
1728,data,/ietf-system:system-state/platform/os-version,
1729,data,/ietf-system:system/authentication,
1730,data,/ietf-system:system/authentication/user,
1731,data,/ietf-system:system/authentication/user-authentication-\
                                                               order,
1732,data,/ietf-system:system/authentication/user/authorized-key,
1733,data,/ietf-system:system/authentication/user/authorized-key/\
                                                           algorithm,
1734,data,/ietf-system:system/authentication/user/authorized-key/key\
                                                               -data,
1735,data,/ietf-system:system/authentication/user/authorized-key/\
                                                                name,
1736,data,/ietf-system:system/authentication/user/name,
1737,data,/ietf-system:system/authentication/user/password,
1738,data,/ietf-system:system/clock,
1739,data,/ietf-system:system/clock/timezone-name,
1740,data,/ietf-system:system/clock/timezone-utc-offset,
1741,data,/ietf-system:system/contact,
1742,data,/ietf-system:system/dns-resolver,
1743,data,/ietf-system:system/dns-resolver/options,
1744,data,/ietf-system:system/dns-resolver/options/attempts,
1745,data,/ietf-system:system/dns-resolver/options/timeout,
1746,data,/ietf-system:system/dns-resolver/search,
1747,data,/ietf-system:system/dns-resolver/server,
1748,data,/ietf-system:system/dns-resolver/server/name,
1749,data,/ietf-system:system/dns-resolver/server/udp-and-tcp,
1750,data,/ietf-system:system/dns-resolver/server/udp-and-tcp/\
                                                             address,
1751,data,/ietf-system:system/dns-resolver/server/udp-and-tcp/port,
1752,data,/ietf-system:system/hostname,
1753,data,/ietf-system:system/location,
1754,data,/ietf-system:system/ntp,
1755,data,/ietf-system:system/ntp/enabled,
1756,data,/ietf-system:system/ntp/server,
1757,data,/ietf-system:system/ntp/server/association-type,
1758,data,/ietf-system:system/ntp/server/iburst,
1759,data,/ietf-system:system/ntp/server/name,
1760,data,/ietf-system:system/ntp/server/prefer,
1761,data,/ietf-system:system/ntp/server/udp,
1762,data,/ietf-system:system/ntp/server/udp/address,
1763,data,/ietf-system:system/ntp/server/udp/port,
1764,data,/ietf-system:system/radius,
1765,data,/ietf-system:system/radius/options,
1766,data,/ietf-system:system/radius/options/attempts,
1767,data,/ietf-system:system/radius/options/timeout,
1768,data,/ietf-system:system/radius/server,
1769,data,/ietf-system:system/radius/server/authentication-type,
1770,data,/ietf-system:system/radius/server/name,
1771,data,/ietf-system:system/radius/server/udp,
1772,data,/ietf-system:system/radius/server/udp/address,
1773,data,/ietf-system:system/radius/server/udp/authentication-port,
1774,data,/ietf-system:system/radius/server/udp/shared-secret,
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Rob Wilton, unknowingly, made me write this specification.
I hope it will be useful.
Laurent Toutain inspired the SID CDDL format with an example.</t>
      <!--  LocalWords:  dedenting dedented
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
AfC1K92aWmvYKM/dShwslUVQTZs49hmcB7cjFdjGpszxVdKrZFBPnkoM/8PT
aGQrAB5OSaXbm7f/dnM2u5l9gVAEMX57+v7ynHRFopR+VY7tYY/mqLSevv+Z
X567wokogDZLKoR5V1AGNS+DGk55+yRXCTDMqu5ihsMgxiALWIs2w4E4KPKZ
5NcXZ65ngNtweHx+Zqvgbml4GMf3rvGnHF/vGl7zsj1woEA+uzgT57QIpAfo
pXB9QpczXvv82eWGhDYvKBoEr3yVKDgu8ta755G879TuKUrFouhfWE0Ikqlj
T8lQT5CqnSYrPsjm8I5wtw2UuPZRpOohoNwwxWk/MWve301d7PQ/psexzdC1
SUHdyaIkm4eBXiq/Q9+rb9By255W2drwtqr5p0bTlM0uu+GFfNVidN+in7bi
Hlvm+9a9a7e0Azt2U3QzI5IYUTHlGf5uk2gcfN0cFq5hg9Z9zTs0gmMXDuLI
xosstP1RSIdIqgHzLLyn6CCX7HCVW3dz4sW2smQJnUgPknSc0taH2CYygVnb
LwslqR/sbHM7MkRvOuVrWEJUA1vE/X777tSzfGIL7S3VSooIjY1IpFluUr/c
ssQmVjEwz1XMotqXeK7jEKWQILuhSH5I4D1KgPxFZ2O6w3s+ajiig+Zfsk0Z
N9k35zf58wewfQVtdqzW6Xf4X5ERX72wj1d4Jr23pb44wzBR0iPvTDtu5Koc
+smN/UzXdHaIvzqlZ9rkP8gsf3iaDMWBtE+HQ3EkMXtqCWlkPBDjEzKesCbs
ddhXjDlLY4GOKw72jGo7r1pPKrXOVkpXFbrWnuuqpc1bSua6ec1va0F12+W3
FEC37hyEZ//WXkG45si4joiCoN4DdrmfqeKQQGeO8vKRakv5hRoD20i5k8h2
j31LCx9ObvODLSJV2zKKlgGVO7MtnL0PqemFZsq27F1etJO24tlu00dfDpoM
aZMg6ep+rnaPfRs/4iSSukJtbdk8XZd3SK4dRHdkT2V52nCtv5H3inaiTsOz
F8fUA9rjJ7HXGsXcLTIzMXXFnlUmtyqjIn+Hs7SrunWv2aULkfNeE1bDAYEM
1vBprjmJDre50u6q31rDlD0afFG7eLM9xSyh3B488ZltKmwf8JKs565+LA3V
KOW6DNtxXMzezeg+EuMqdcrtuOjIQVpeZK2sqaIYQv+SKe3uAGgpOhUpnGGR
F8kg7avW7k/0biZatryZsSgu21Jyx7rnrmHn0rsvm6fplqFKy+ZXKDDsx9/X
DbFPtn3y0mGmsLW7z2xciJYHngY+7N2PvbnOL5x2uatxGktCSWB6MmIu6bTx
/vxU25gJg1WQh+/RCCYLs1WkX1cHa7bAoQK9H4Bk70ialwChclcKc6Ui+9rA
3kHWLq0YjEzjEOdl3jHqh00b0QHl7ZR/9fev7B78MYVJCLo4p7t3B0cnI75t
vUYP1625qjsaDCdicCwGh91uvSnq5o4tI6HW2rgFbGKn85qmRcZicCSGB1tU
Ab3j+iQViIDBhZCeleiY3pkNJw0yGUnhpevEiKXUy5rcrvfpDo8Gg+5wMGD2
wbUMDU1pYtgtGoguvUKjR5dcBLreZexbolFFFMaAkUDCSrWdGldTqfSDzI1O
NkfFxuKkv6U82KLE+SmxU4dbU0k+c9TNG50Nme3kcTnpR1pkfiKMl6AUpcZO
n5TTG6oMB+VMZOw+w2F9xC5VLDMclVOV2sPxxqDYFm84KWlMsFK/xpHrce3c
QZeqVLdfc9IUR0mR38YJeoVKXJb48DOJ+zu5j3Zxl7AYHu+dRuuLbiy3wsl+
Mr3MjI98T3SjQQsdarUVaTT8BFHfg8fuLenos0j78zhuqj0afx7jLpONJp/i
RaI07hoK1Dt9uYu6v5IejuRuj51O3ckV6xI3o/3O3MGVqlAhj1vGFjdvM+Y3
WZZxv+P725gf73f/BnWfotGy7AfDLpbN9PL3PQfVz/7gcJcLsh9quwTpu98h
0ItSca/WdoX9mPuMFfpfpIoM77CUWVpIjvcD+HMEwb8vNquwApAs+8Pj/9wo
9lPEznh/xO0UpOTbH3M7+RKcpB7tRRN494ddlePGLSHmktRW/Zi0xNkGS2Y8
ES8WqBeWsSXa0IUYnJQsWUssUK1FZYjDBxc3kxbU12n7sW2ubP2ctAB0F09f
GkOnWMfcgqidzGSLOHOKtYCgwauVTL2lZWnx/wZLWpikxe07WEqoTVqQsIuP
+hScUajtIfaDFlR8gv1L40z6Pr0ktFK0QOxTUhRN10EL/paxNoXBDlqwR01f
UZcOWvCWt4AHLagCSV9FdAtgo/qgBUREWgHhoAU7FWUfGSP2gma/fNCCoRpr
MM9S7WzWAp4aQ2G6wxaw1Mjda07L0OLXGgPcaalbPNik7tewc9jizw2uAiqH
La6tGvbDFu86qnp6OmxxcJO6kZgOW7y9wVZLSYctjs65KkAdtji5Qdzfcww7
anF7c4ECKEctfm9y5K4/anH9FkPd+0ct3t/B2FSwwMPRJ/FQX0QvZYpOQysv
pQJpr0dn3n0UPyLW79zPTbYua9jHaX6rpvyvO1HceWbsfTznfwtCQ+/usogW
CKK7cE2vzX16wcsf08C4l2LNV309dsGXcaLoRWpxVehuCXvsUmb2NfUNoCID
+yOFJKCfHNDdCr2BK36jSz8DekT3R79kyO+Yeoz96XdCcH5Jh9+/0a/UpvT+
xs8v/NyT8hkX4hv23x9H2MUYLAAA

-->

</rfc>
