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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC1035 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
<!ENTITY RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC3597 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3597.xml">
<!ENTITY RFC7493 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7493.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7208 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7208.xml">
<!ENTITY RFC8552 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
<!ENTITY I-D.kowalik-domainconnect SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.kowalik-domainconnect.xml">
]>


<rfc ipr="trust200902" docName="draft-hoffman-duj-03" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="DNS Update with JSON">DNS Update with JSON</title>

    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>

    <date year="2025" month="February" day="24"/>

    
    
    

    <abstract>


<?line 35?>

<t>It is common for service providers such as certificate authorities and social media providers to want users to update the users' zones to prove that they control those zones, or to add other features.
Currently, service providers tell users to do this using human language describing the resource record type and data values to enter into the zone.
This document describes a text format, called "DNS update with JSON" or "DUJ", for such a service provider to give to a user, with the expectation that the user would copy and paste the text to their DNS operator to update the user's zone.
DNS operators who know how to handle DUJ strings will make the update process easier and more predictable for their users.</t>



    </abstract>



  </front>

  <middle>


<?line 42?>

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

<t>There are many scenarios where someone gives instructions to a human to update their DNS zone in order to prove that they control those zones, or to add other features.
For example, someone suggesting that you add an SPF <xref target="RFC7208"/> record to a zone might say "add a TXT record with the value "v=spf1 a:mail.yourname.example ip4:192.0.2.49" to your zone".
The expectation is that you are either able to edit your zone file directly and understand the format of the records, or you use a DNS operator who has an interface for you to be able to add and modify records in your zone.</t>

<t>This document proposes a method for giving a human a string that can be copy-and-pasted to give a precise update for a zone.
The protocol, called "DNS update with JSON" or "DUJ", specifies a string format in I-JSON <xref target="RFC7493"/> that represents the addition and deletion of records in a DNS zone.
It is designed for DNS operators who accept strings in their interface for zone updates.
The format self-identifies a string as DUJ, and the protocol lists what is and is not acceptable for DUJ strings.
Using DUJ makes the update process more reliable for DNS operators and their users.</t>

<section anchor="use-case"><name>DUJ Use Case</name>

<t>DUJ is specifically targeted at improving the current common scenario of a user being told by an application service or a helpful friend to modify their DNS zone.
DUJ is not intended for any automatic zone updates.</t>

<t>DUJ is intended only for users who copy-and-paste.
There are two types of DUJ strings: DUJS and DUJ64.
DUJS strings can be typed by users, but doing so can easily introduce errors that might negatively affect their DNS zone.
DUJ64 strings cannot be safely typed by users.</t>

<t>There is no intention in the design for the user to change the text in a DUJ string.
Because DUJ strings contain quoted text, and some typing systems might automatically unhelpfully convert quotation marks into "smart quotes", for some users typing DUJ strings might be impossible.</t>

<t>Different, more elaborate protocols for automatic updates, may be proposed separately.
For example, DomainConnect (<xref target="DomainConnect"/>, <xref target="I-D.kowalik-domainconnect"/>) defines an automated protocol that includes user affirmation before updates.
DUJ is purposely more limited and less ambitious than those protocols, with the assumption that it will be much easier to deploy.
Service providers might allow manual updates as they do today, manual updates by DUJ, and automated updates with a protocol like DomainConnect.</t>

</section>
<section anchor="design"><name>DUJ Design</name>

<t>This format is explicitly only meant for the use cases in <xref target="use-case"/>.
If the designer of an automated protocol is thinking of re-using DUJ in that protocol, they should not.
DUJ is specifically designed for copy-and-paste by end users.
It would be trivial to design a better format for describing automated DNS updates.</t>

<t>The design choice to use JSON arrays instead of objects is to increase security and reliability.
This is to prevent key-value pairs to be added that might cause users or operators to possibly process the DUJ strings incorrectly or to misinterpret them.
For example, it is not possible to include comments in a DUJ string such as "For DKIM".
The reason for this is that such comments could be used by an attacker to convince a user to make a change that they otherwise might not by adding a comment such as "Urgent security update".</t>

<t>DUJS strings are meant to be somewhat readable by the user.
They might not understand what it says, but if they understand something about the DNS, they might.
For example, you might see that a particular RRtype and Rdata are proposed to be added to your zone by looking at the DUJ string you are presented.</t>

<t>DUJ64 strings are purposely not readable by the user.
However, the user can still see if records are being added or deleted.</t>

<t>DUJ strings should not be difficult for a service to create.
There are cases described later where the quoting on the Rdata field can be tricky, but forcing an application to understand backslash quoting and apply it correctly is considered out of scope for a format this is only meant to replace human-readable instructions like "enter this record into your zone".</t>

<t>This document assumes that the application service will have looked in the user's zone before suggesting a zone update.
That would likely be true in the current use case where the application service suggests an update to the user's zone.</t>

<t>Another explicit design for DUJ is that it is not extensible.
If there is a reason to create a later version, the first string ("DJUS" or "DUJ64") can be changed to one that includes a new version identifier.</t>

</section>
<section anchor="bcp-14-language"><name>BCP 14 Language</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?>

</section>
</section>
<section anchor="specification"><name>Specification</name>

<t>An example of a DUJS string is:</t>

<figure><artwork><![CDATA[
[ "DUJS", [ ["add", "mail.yourname.example TXT \"v=spf1 a:mail.yourname.example ip4:192.0.2.49\""] ] ]
]]></artwork></figure>

<t>An example of a DUJS string is:</t>

<figure><artwork><![CDATA[
[ "DUJ64", [ ["add", "bWFpbC55b3VybmFtZS5leGFtcGxlIFRYVCAidj1zcGYxIGE6bWFpbC55b3VybmFtZS5leGFtcGxlIGlwNDoxOTIuMC4yLjQ5Ig=="] ] ]
]]></artwork></figure>

<t>A DUJ string <bcp14>MUST</bcp14> be a JSON array with two values. The first value is the string "DUJS" or "DUJ64".
The second value is an array, called the "update array", which lists all the updates.
The update array <bcp14>MUST</bcp14> have a length of at least 1.</t>

<t>The arrays in the update array are called "action templates".
Every action template is exactly two values: "action" and "record-data".</t>

<t>The action is a string specifying the action to be taken.
The action string <bcp14>MUST</bcp14> be either "add" or "delete"; no other values are allowed.</t>

<t>The record-data is a string that is in the zone file format defined in <xref target="RFC1035"/>.
The record-data <bcp14>MAY</bcp14> contain class names, as described in <xref target="RFC1035"/>.
The record-data <bcp14>MAY</bcp14> contain time-to-live (TTL) values, as described in <xref target="RFC1035"/>.</t>

<section anchor="dujs"><name>DUJS</name>

<t>The record-data in DUJS strings <bcp14>MUST NOT</bcp14> include zone file comments, directives, or embedded newlines from <xref target="RFC1035"/>.
The record-data in DUJS stings <bcp14>MAY</bcp14> contain \DDD and \X escapes, and parentheses, from <xref target="RFC1035"/>.</t>

</section>
<section anchor="duj64"><name>DUJ64</name>

<t>A DUJ64 string is identical to a DUJS string except that the record-data in a DUJ64 string is the Base64 <xref target="RFC4648"/> encoding of he record-data that would have gone into a DUJS string.</t>

</section>
<section anchor="notes-on-owner-names"><name>Notes on Owner Names</name>

<t>The owner name of a zone in a record-data string might be a name that does not yet exist because it is being created by an "add" action.
A common example of this is adding an "underscore name" <xref target="RFC8552"/> such as "_smimecert" and "_xmpp".
A DNS operator would have to determine whether the full owner name given in the record-data could be created, which might not be possible due to zone cuts.</t>

<t>The owner-name <bcp14>MUST NOT</bcp14> contain a wildcard.</t>

</section>
<section anchor="notes-on-rrtypes"><name>Notes on RRtypes</name>

<t>The RRtype in the record-data with the name of the resource record type for the action.
The RRtype's name is given in the "TYPE" column of the "Resource Record (RR) TYPEs" IANA registry <xref target="Types-registry"/>.</t>

<t>To specify an RRtype that is not yet in the registry, use the format specified in <xref target="RFC3597"/>.
For example:</t>

<figure><artwork><![CDATA[
["DUJS", [ ["add", "yourname.example TYPE4321 \# 4 0A000001"] ] ]
]]></artwork></figure>

</section>
</section>
<section anchor="processing"><name>Processing</name>

<t>This section defines rules for DNS operators who allow updates with DUJ to process DUJ strings they receive.</t>

<t>The update array is an ordered list of action templates.
The DNS operator <bcp14>MUST</bcp14> process each action template in the order it appears in the update array.
However, the DNS operator does so only after after verifying that the entire DUJ string can be atomically applied to the target zone.
The DNS operator <bcp14>MUST NOT</bcp14> process any action within the DUJ if any action would prevent the atomic application of the entire DUJ string.</t>

<t>The DNS operator <bcp14>MAY</bcp14> choose to skip an "add" action if it would create a record that is already in the zone.
The DNS operator <bcp14>MAY</bcp14> choose to skip a "delete" action if it would delete a record that did not exist in the zone.</t>

<t>The DNS operator <bcp14>SHOULD</bcp14> be able to handle <xref target="RFC3597"/> RRtypes.
However, they may have a local policy to not allow users to add or delete unknown RRtypes.</t>

<t>A DNS operator <bcp14>MAY</bcp14> reject any DUJ string for any reason.
If the DUJ was received from a user interface, the DNS operator <bcp14>SHOULD</bcp14> clearly describe why a DUJ was rejected.</t>

<section anchor="string-verification"><name>String Verification</name>

<t>The DNS operator <bcp14>MUST</bcp14> not process any DUJ string where any of the following rules are not met:</t>

<t><list style="symbols">
  <t>The DUJ string <bcp14>MUST</bcp14> be valid I-JSON.</t>
  <t>The first element of the DUJ string <bcp14>MUST</bcp14> be "DUJS" or "DUJ64.</t>
  <t>The update array <bcp14>MUST</bcp14> have at least one action template.</t>
  <t>Every action template <bcp14>MUST</bcp14> meet the following rules:
  <list style="symbols">
      <t>There <bcp14>MUST</bcp14> be four or more elements</t>
      <t>The action element <bcp14>MUST</bcp14> be either the exact string "add" or "delete"</t>
      <t>The FQDN <bcp14>MUST</bcp14> be a valid fully-qualified domain name</t>
      <t>The FQDN <bcp14>MUST NOT</bcp14> contain a wildcard</t>
      <t>The RRtype <bcp14>MUST</bcp14> be recognized, or be in the format specified in <xref target="RFC3597"/></t>
      <t>The Rdata <bcp14>MUST</bcp14> be appropriate for the given RRtype</t>
    </list></t>
</list></t>

</section>
<section anchor="action-processing"><name>Action Processing</name>

<t>After verifying the DUJ string, the DNS operator processes each action template in order.
When processing an action template, the DNS operator <bcp14>MUST</bcp14> verify:</t>

<t><list style="symbols">
  <t>that the  user is authorized to change the zone named in the FQDN</t>
  <t>that, for "delete" actions, that the exact record described in the action template exists</t>
  <t>that, for "add" actions, that the exact record described in the action template does not already exist</t>
</list></t>

<t>A DNS operator <bcp14>SHOULD</bcp14> tell a user about every change made from a DUJ.</t>

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

<t>This document contains no actions for IANA.</t>

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

<t>A DUJ has no cryptographic protection.
It is, by design, only as secure and the current common scenario where a service tells a user to manually copy and paste some data (the RRtype and Rdata values) into an interface run by the DNS operator.</t>

<t>When a service gives the user a DUJ string, the authenticity of the source of the DUJ string and the integrity of the DUJ string is only as strong as the user's connection to the service.
When a user pastes a DUJ string to a DNS operator, the authenticity of the source of the DUJ string and the integrity of the DUUS is only as strong as the user's connection to the DNS operator.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC1035;
&RFC4648;
&RFC3597;
&RFC7493;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC7208;
&RFC8552;
&I-D.kowalik-domainconnect;
<reference anchor="DomainConnect" target="https://www.domainconnect.org/">
  <front>
    <title>DomainConnect</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="Types-registry" target="https://www.iana.org/assignments/dns-parameters/">
  <front>
    <title>Domain Name System (DNS) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>


    </references>

</references>


<?line 237?>

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

<t>Andy Newton,
Bob Harold,
Gavin Brown,
John Levine,
Libor Peltan,
Pawel Kowalik,
Peter Tomassen,
and
Robert Edmonds
contributed substantial comments to early versions of this draft.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA61afXfbttX/n58CU/5osiOpduKkjbduc+04cec4rmV3y5qd
HYiEJNQkwRGkFcXH/Sz7LPtkuy8ACFLKnm7P2pNEJPFy3+/vXmAymSSNbnJ1
KE4uZuKmymSjxFo3K/Hd7N1FIufzWt195mNm0lIWMDWr5aKZrMxiUchykrU/
TfaeJbqqD0VTt7Z5urf3cu9pYtt5oa3Vpmw2Fcw6e3V9mqSyORS2yZJEts3K
1IeJEBP4I4Qu7aG4nIo3vCy94+0uZZv3Xpt6KUv9STawNqx7fHRxQe9VIXV+
KCoYP3XU/UGnsiynMCNJSlMXMOdO4aZXp8f7e8+eu58HLw6+dj+fPX/5lfv5
1cHLZ4dJosvFYOZXT/f88K+fP3+KP88mJ9Nbs5a5vp1kBggpU1OWKm3w4wm9
OO5eCOG1EH/hD7JeKhDSqmkqe/jll+v1etpbEJn5koaifg7FQuZWwfM1SNlO
arXUtqk3O3YRFyBOMdvYRhXiMaj4CYi2hneNqu1n99aylLSlBF0uy0KVjf0y
K+2kCnO3qUkmk4mQcyBEAlvJWSO0FakpClMKEKawqr7TqRJVbe50BksI26Yr
IWGQqhu9AK2B6bGJ6EYrK2SZCWtSLXNRqEzLaGpjxFqWjWite2rZcpuV4ndf
iE+mVPQJZ+EX2eDnDdBUNrXJ4cFYxcPGYF84VGaZMDCoFgslm7ZWdpoct3UN
Asg34x0sNCrPOyIyA4sC163V5VKsWjBGkcty2cqlEpmyaa3n+AWphLVNW6f4
IzV1JtBhiGPgQ4o7mbdMPWwN5OiyMTQNyZ0m17gL+GaLqvEro8SAoI+NYNsd
i1TmucrECF27Hbj2CFkendx8NxqzekgZWywiCUuN8gPpEKdjXgOJUR8rME7y
ySBfGiPWps0zkHS1IZ4qaZ1yiD7mRdcUc0ylatmw/Ada/MI6fuNxVqxXRtyW
Zi1W8AdmrWCLXAngBcJMDQKGIRr0UshbtxYvCzylylqhpNVAIxJWmBrfg3UB
H3NYBEXBtJFWp2zWhc5ghyR5JM7QdrI2RZ4T0IOC+RL+gKo3wqaqlLU2SCJ+
sKZQQD8J0GK0g1hJMy2Lky2kx7cTCrINE0BHTgf/TyM+hU/qoyyqXI0DWbZd
LpVt2CJh4Y1paTLQNLs8Fff3Luw9PAQjRaqJtkIvV42wciNGNEVc//najwr2
QVYsRnff2GqxL+Qhxuop7FJjkJ86eoSuDg73Xz6d7k2fTg9ejnATHEP7jNDW
+4YGlt9RC0JWmngl7aG/ZLrp5ouFhteZBsrAg0nlbYme2+BPpJF9RZiF80rk
gEWJG4ARAG89M0XrW0mMTuiVql7IlM0GxwMBcxVoYWGilWV6sfGLo14DgdNk
4Myg6ApUir4MkXZlMlobLAjV5E1GOkNnSUC6w13R2yaw3YS8LQuei3FTpdoG
P8AFZYgk5BeNSU3+ywOGBXVAxCYqHSVOjsDb2QSHO/OBdArmQ2TWCuiwmEtI
1CAcTQqloKdyRQ+gh0hMMjjD1CUUiHWQkRRLZTssyDRVVRPCgC6dT/U1RZbB
/FkWgaPeqnwxgbBXNgPuQN/A+Vh4q/EiEzlkXtxaEnX4Gf4pTeMoCTElCk7T
5IbyA77CEGV3xSgKTLXKdbdCj1lHSBSnHj2iFW9Az8cS/rp/BF8mKfx8SBL8
AoQ5vaGaNy7zgyiR9oICvstNKac8n719WEPlcA4Ac6OxBoL8HN1KyKrKMYOj
Dn0OITNbqbxaAJhb1FqVZJTOG/rBbupJRNmhtsBLWckYWAEVGERj6UB1flKY
YEpgDGdxTkaT6LvFNIrZzdpQ2rXIWKSgQ3yYkYjhx4sDom0WjMq5G84k7mmr
sZi3kIkNisUaGoNpBqjRLmNApKprVB05A8fPUi0JY2JoWiwgRu2SyouDeGuU
D+xu5QJn9YmY+oxEcmSpcMwkP3DO43McaxIUkkICXUbpmR0vyGOafKtSiZEw
zrCYgBBg/r01FGxg4tghtoKEQ5Ig4Gkdt0GLZH5t6Uwjp2x2ByCQFmMbKmR9
axn2jCw88DdlPVrBTRzu4q1i2ng7kBKYtQEICy6EtqJBxGjXY/Yulcu5qZ3T
kTdbNrhgbM7OYDzkubnysRl4VIiEAfxtBqm1h+3F4/v73ouHhzGExc+WDQ8P
T0BFC10S9vV0wHYh2pDpwPi8BVWy/sBuNFUqBq1ygYwF93DeUbU1kg1yJr5z
XWhye1BWjrFGFnOMxC2ZZukgRZBJhPegHGiLqoN7kGkJaIFoCoSPDlghElZV
bkA4sy3E7EwhzwG7QSprAdw7ejHIErZBGG0yuRkPB4CdhyjcScd/JTJlHJoB
/vXk30XJE/aE+0fsEg8uC/skZhFxQDzTCBoophQKy43IcwRGVsow9/ch0D5A
mlpErgbCwJi5U5eEY3R5i8ZLWW/ShrSgnYC7zEyCsSuC1RACpjsjei859uMe
yg7jr4sTkEwZomMgqwFcgJRJbSQWCa8bLDucPHC5qHzpmOlwgos9foV0ZVDt
CG1BVIQHZF3LDaNgJTNk2cx/AqVYkgRGq7RWmLisgvyjG0ZrnAJ1Ds+u7NGu
qFN3mKJu1WbCMLOSmquwOWELjEldoOX4xQEDmOnyKC7FIWITci/qLw4n6KC1
Q5AMsQttCVEAFRSyi0EY0I1PZT7+OA7RcSmtEgwaBNpQEI9wsZM/nr118Bfl
YnzcdiJA3mh8WC31Cm2tCmm5aWR668I8BFkgQfkcjnxghSS7BOCrCyof1ggZ
XZ7CpLMhyEYo1O3ZEXwDUAKfverYKEacobvUSZUSeRLrCcP4mrGhzAjpzDch
NRHvm4iCCLmvXfiBAsSlXr1g0qNBuDq6GFA8Ny1Xp2Cxzplo3YHeEMK7ykY5
eUBAgeyj0zaXtbi6CmX6FdXpso6yQs/2oiIGmcqNIU93RXKkdF/HOHCsMhZa
lPXpa4jhKInd4npj1uAU9bhL7ghDoMCDEI386A5b45KM4ZhccvBchd3D3l3I
Qd4AuC1QFI2rITzSQ+sCmvrwigOkb05ArpEYUrgyRgoxoVPwY3DCAgXYjY0D
B7Fqnd5uWL+wYUr09rEmRphO43MwdptLuwqLU6qA8Ru0ls6NqTVVWkxJyH1L
BaCFkOmrIxf5vLtFOQB2hEomx1qCirFJUEavwKfsM+LuDa3iimOCNHF9O6j/
KMcq2/VTdiFryrorCcUd2pXKPMCLmiYeDERFvozRM2pK+iyAxOYbFnmr/Gq+
DPDZLtLdLqLcToRdfEPDbPdykqOSuxM+xcaw1GU1jy5cEAVsqUoH4zi/MsaV
PjIG+4NXbGbgB9iGZl8AhGR9USgej06+u5mFavbFwehJqKApDpLzoqD6aEsC
Wl/7dUUoEmsGFd8eX4r9A3Huun2cDCE5gYDR30Zvb2bXgF3pX3Hxjn5fvfr+
5uzq1Qn+nr05Oj8PPxI3Yvbm3c35Sferm3n87u3bVxcnPBneit6rZPT26P2I
gdLo3eX12buLo/MR67VnbLVyUSukMwSGNum8FuYAb//8BzB3f/8rKOmf7u+/
hJKeH77e/+oAHsAwSt6NHIUfMcomYChK1pTpwGRTWelGIqaUFFrWpUBdggh/
/SNK5q+H4rfztNo/+J17gQz3XnqZ9V6SzLbfbE1mIe54tWObIM3e+4Gk+/Qe
ve89e7lHL3/7+xzQvZjsf/373yXYTpx5+Mb9xKPS5yKutaPkCfZ+mCQ///xz
8iPZ7QzU+6P4EbtvaAK7W2vYlPvwn/XfPoxGfxXwP231nxAEjtSjaP6n02p+
/Pz5/NkPm3lx2vxl9jxXr0+b9PXH/Oz06v0Px0c6+2n/U/r6/cez169e/Nvx
r/P1xYn5+O76rH17fLA5/+n752fLb77pkRonVbIdTMYR9nR1DBT93F2fiusQ
GxhCasZ+bg2WchQnGIwBxjFg6GEGJiRcPnTPcImRC4D0BaSxXmlAStwsQkfo
Oj6uARWPZ+opvEM4U+USyEbpN/AAWF7sO6wdEHXcQOIVOP9yM0+mnCkVqBE3
BD5eQRiDQf0PXPZIyo+dlA79AiOOJpzGJpisR56O1DdmQ7+My5KNbyj5nSjU
NAA6y2k8c6A019ElQyLxMzQZ/QabGpw73PkIskmlJOGW69DAJfJ6BDWuQ+eE
1fWGXaLnujvjes4dFGI5N1wTnDy0PlJAGpYOLDmg9YLmL16l0YWaNGaSY6/2
8fX1+RPH3f+xpitlZzv4LkUPdftAGgqQjntfPIxdjxwPKqj5rQrYE5EhJL2c
OhKL2hT/nqtuX942YvLDyckJ2c+HPwvgSFbEHp0MIcRYAfSFF9tbOCZfHDj/
DqiYdEk5OOXStR+b1EfqAwcQNSBTbq2Fg74FjPPigAnA02FIbApKv8xV6INl
mg4+kasu+chmSArzcIG9K0S679bYFMBTWcuKM/QCjYgjrD/5kb3NHKGhsSV5
BtGQGcUwaaMQKkGMgRFc8DKEYqDPAMkXhuxc7H9TkK1r9UbB3kNfX/TBHEba
KcJK3H7EosLjcBBVqAX/ZgswaTzUdSHjbx+LqhrhLv2DlE521HoAAFJgdgT0
QD5OyK2FYBmJCA80QjszFlAofh2bPuRG9avqivGspT1J1mnb+OYFbTShjYLP
eAuWCLqzVNbZQKNcEzptugJxB4GhieZV/dlDYN9k8srp1v2Cow1qpSeI0fX7
y1cjIDVvi9KvPbryi1/x4o+vrp4IHGlH4uzo4kj4ewOgxv5FAvK8a+OjOOre
MebDqDe3wChPHFOtEB2r+YOiLnzhXQtcP6q7PYzYAWu2EQ3Qf/Ds6b748Egc
iL2jPfxvP8YBj8Ql93HQau8fVeHBN/ms4qzjW611myv7ufMk6lP2OoyIMvhA
lppFcbFMfQVQpQLlOJPqZWVGC3Smi/Uweir6/CA/s8Z7rkLW2B1fo6MNczcr
gs+Lwe0Zd+8EB4NGQW8jiiXWMIyXi4YazK6eCvncxVQMvnWvleHKKFipcB1J
qhO5oqLjBTpyio4et7lEn/Oc0tEPM4qid7xQjbjofSTn9y1B8h0ioVemOrfY
otopqk8Jpq6VwT44UG5vdTWMmUiB9vE/1J7ejf1xYI69gU0MOnaxvWOzgHl2
bcefBttlOnO1MppVb8ftLV3VEx1VuzsUkYv6wNY3lw2dhXhsajD5VgZkvMFF
6NyTPcZfiaHLCL65JNoS722U3dLDnICyqBW2hUm/kW35o0Cu+EOfHUespfVe
lzGGcB3OcOq7w9KdCFKA1DW3zglngddvXFOWl0ValIv5MyblB/SFULPtNmPq
/UZmHHHCXRR86UxyYVBm+IlDEaJanF+oBkLjhMqUHbUNoETQOZ+2T90wrmZA
2FTem05Gg7nD2sbP/1wZ4ksPTJiD0INTd9cTNL9Q3CIfckm3AAV3Cz1VC2yL
AU3ueI6YsH6cX94zN6gWyLexegnl27B8CAudfn9yEVWILEc6iJz8vYUHyld8
Mkf5dsfE3cggDHTZ0u+Bfros9SeEJabmdssvyZLdelw1eJIrbDnX2t/lwJUY
D/C+ZKtHLK0uF4KvbUXy2DZ2+IgzYPX5nEP5Zpr8aQWbd5mWauL+4B2rEztM
DZl5SCzOea2/DPiJE0h0TE3ADVUTOp+oGrcGnxAPAqgdR4mLzMQFz16BFdeq
nksKqLa/dpQI/vuFA273aYJ22gqJLlDRTUMX1/g4Q5HTOakUEuo6F/tAp1O6
q4Yg79i1uSla2WG32dkwXRdw/BCHOJXWmPkTneE63G7Bi1AlNl83VWOWtawA
dNOppXLglW7tjLHo4C7v2EELy2dFKtyo+dydExctu6MGkIPtHWHhETHdIehd
NqQbAuQ2j5vOI7uTG66xn7iKLb7LVbelP1eJFQHiIDPvSOFrfeGwRW45E9ov
lagoQBeMHSbfDs1eEEjIso5mRGP8SQSKr6kNX0yKOuzuIoHrtdB2TOvU006U
koRs/+yR69aI3/8tCzez/4L4gfjxJiae8KBdHqWIJHKVLV2WSI5KcKELtW5M
OU6+NXPxRtYmz8bJa3mHTewagMc4+c6sSnGu4I0aJ+d6DrZ+qfJGwqdLuVa5
+CPfzIBHLEjFNaQBiIDwGZhLrswcr6m8ysBEM5vQJUw9b7Gstu0cz6AaPEkP
R7J4H5HghTs2sKGwpvv00+RfjbM13Z0vAAA=

-->

</rfc>

