<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-yang-provenance-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="yang-data-provenance">Applying COSE Signatures for YANG Data Provenance</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-yang-provenance-04"/>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>
    <author initials="A." surname="Pastor" fullname="Antonio Pastor">
      <organization>Telefonica</organization>
      <address>
        <email>antonio.pastorperales@telefonica.com</email>
      </address>
    </author>
    <author initials="A." surname="Huang Feng" fullname="Alex Huang Feng">
      <organization>INSA-Lyon</organization>
      <address>
        <email>alex.huang-feng@insa-lyon.fr</email>
      </address>
    </author>
    <author initials="A." surname="Mendez" fullname="Ana Mendez">
      <organization>Telefonica</organization>
      <address>
        <email>ana.mendezperez@telefonica.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2026" month="February" day="24"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>provenance</keyword>
    <keyword>signature</keyword>
    <keyword>COSE</keyword>
    <keyword>metadata</keyword>
    <abstract>
      <?line 76?>

<t>This document defines a mechanism based on COSE signatures to provide and verify the provenance of YANG data, so it is possible to verify the origin and integrity of a dataset, even when those data are going to be processed and/or applied in workflows where a crypto-enabled data transport directly from the original data source is not available. As the application of evidence-based OAM automation and the use of tools such as AI/ML grow, provenance validation becomes more relevant in all scenarios, in support of the assuring the origin and integrity of data. The use of compact signatures facilitates the inclusion of provenance strings in any YANG schema requiring them.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dr2lopez.github.io/yang-provenance/draft-ietf-opsawg-yang-provenance.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-opsawg-yang-provenance/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Operations and Management Area Working Group Working Group mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dr2lopez/yang-provenance"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAM automation, generally based on closed-loop principles, requires at least two datasets to be used. Using the common terms in Control Theory, we need those from the plant (the network device or segment under control) and those to be used as reference (the desired values of the relevant data). The usual automation behavior compares these values and takes a decision, by whatever the method (algorithmic, rule-based, an AI model tuned by ML...) to decide on a control action according to this comparison. Assurance of the origin and integrity of these datasets, what we refer in this document as "provenance", becomes essential to guarantee a proper behavior of closed-loop automation.</t>
      <t>When datasets are made available as an online data flow, provenance can be assessed by properties of the data transport protocol, as long as some kind of cryptographic protocol is used for source authentication, with TLS, SSH and IPsec as the main examples. But when these datasets are stored, go through some pre-processing or aggregation stages, or even cryptographic data transport is not available, provenance must be assessed by other means.</t>
      <t>The original use case for this provenance mechanism is associated with <xref target="YANGmanifest"/>, in order to provide a proof of the origin and integrity of the provided metadata, and therefore the examples in this document use the modules described there, but it soon became clear that it could be extended to any YANG datamodel to support provenance evidence. An analysis of other potential use cases suggested the interest of defining an independent, generally applicable mechanism.</t>
      <t>Provenance verification by signatures incorporated in YANG data can be applied to any data processing pipeline, whether they rely on an online flow or use some kind of data store, such as data lakes or time-series databases. The application of recorded data for ML training or validation constitute the most relevant examples of these scenarios.</t>
      <t>This document provides a mechanism for including digital signatures within YANG data. It applies COSE <xref target="RFC9052"/> to make the signature compact and reduce the resources required for calculating it. This mechanism is applicable to any serialization of the YANG data supporting a clear method for canonicalization, but this document considers three base ones: CBOR, JSON and XML.</t>
      <section anchor="target-deployment-scenarios">
        <name>Target Deployment Scenarios</name>
        <t>The provenance mechanisms described in this document are designed to be flexible and applicable in multiple deployment contexts within operational and management practices. The following non-exhaustive list provides examples of intended deployment scenarios:</t>
        <ul spacing="normal">
          <li>
            <t>Device Configuration Integrity: Digital signatures may be applied to device configuration elements to ensure that specific configuration fragments originate from an authorized source (e.g., controller, automation system) and have not been altered in transit. This is useful for zero-touch provisioning and secure configuration distribution in programmable networks.</t>
          </li>
          <li>
            <t>Telemetry and Monitoring Data: When applied to operational state or telemetry data (e.g., YANG-Push updates or Subscription Notifications), provenance signatures can help verify the integrity and authenticity of data collected from network elements, especially when the data may traverse untrusted collection pipelines.</t>
          </li>
          <li>
            <t>Network-Wide Service Orchestration: In multi-vendor or multi-domain environments, provenance can be used to track and validate contributions from different orchestrators or domain controllers in composite service models. This enables trustable service chaining and auditability.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The term "data provenance" refers to a documented trail accounting for the origin of a piece of data and where it has moved from to where it is presently. The signature mechanism provided here can be recursively applied to allow this accounting for YANG data.</t>
    </section>
    <section anchor="defining-provenance-elements">
      <name>Defining Provenance Elements</name>
      <t>The provenance for a given YANG element <bcp14>MUST</bcp14> be convened by a leaf element, containing the COSE signature bitstring built according to the procedure defined below in this section. The provenance leaf <bcp14>MUST</bcp14> be of type provenance-signature, defined as follows:</t>
      <artwork><![CDATA[
typedef provenance-signature {
     type binary;
     description
      "The provenance-signature type represents a digital signature
       corresponding to the associated YANG element. The signature is based
       on COSE and generated using a canonicalized version of the
       associated element.";
     reference
      "RFC 9052: CBOR Object Signing and Encryption (COSE): Structures and Process
       draft-ietf-opsawg-yang-provenance";
}
]]></artwork>
      <t>The use of this type is the proper method for identifying signature leaves, and therefore whenever this type is used for a leaf element, it <bcp14>MUST</bcp14> be considered a provenance signature element, to be generated or verified according to the procedures described in this section.</t>
      <section anchor="provenance-signature-strings">
        <name>Provenance Signature Strings</name>
        <t>Provenance signature strings are COSE single signature messages with [nil] payload, according to COSE conventions and registries, and with the following structure (as defined by <xref section="4.2" sectionFormat="comma" target="RFC9052"/>):</t>
        <artwork><![CDATA[
COSE_Sign1 = [
protected /algorithm-identifier, kid, serialization-method/
unprotected /algorithm-parameters/
signature /using as external data the content of the YANG
           (meta-)data without the signature leaf/
]
]]></artwork>
        <t>The COSE_Sign1 procedure yields a bitstring when building the signature and expects a bitstring for checking it, hence the proposed type for provenance signature leaves. The structure of the COSE_Sign1 consists of:</t>
        <ul spacing="normal">
          <li>
            <t>The algorithm-identifier, which <bcp14>MUST</bcp14> follow COSE conventions and registries.</t>
          </li>
          <li>
            <t>The kid (Key ID), to be locally agreed, used and interpreted by the signer and the signature validator. URIs <xref target="RFC3986"/> and RFC822-style <xref target="RFC5322"/> identifiers are typical values to be used as kid.</t>
          </li>
          <li>
            <t>The serialization-method, a string identifying the YANG serialization in use. It <bcp14>MUST</bcp14> be one of the three possible values "xml" (for XML serialization <xref target="RFC7950"/>), "json" (for JSON serialization <xref target="RFC7951"/>) or "cbor" (for CBOR serialization <xref target="RFC9254"/>).</t>
          </li>
          <li>
            <t>The value algorithm-parameters, which <bcp14>MUST</bcp14> follow the COSE conventions for providing relevant parameters to the signing algorithm.</t>
          </li>
          <li>
            <t>The signature for the YANG element provenance is being established for, to be produced and verified according to the procedure described below for each one of the enclosing methods for the provenance string described below.</t>
          </li>
        </ul>
      </section>
      <section anchor="signature-and-verification-procedures">
        <name>Signature and Verification Procedures</name>
        <t>To keep a concise signature and avoid the need for wrapping YANG constructs in COSE envelopes, the whole signature <bcp14>MUST</bcp14> be built and verified by means of externally supplied data, as defined in <xref section="4.3" sectionFormat="comma" target="RFC9052"/>, with a [nil] payload.</t>
        <t>The byte strings to be used as input to the signature and verification procedures <bcp14>MUST</bcp14> be built by:</t>
        <ul spacing="normal">
          <li>
            <t>Selecting the exact YANG content to be used, according to the corresponding enclosing methods.</t>
          </li>
          <li>
            <t>Applying the corresponding canonicalization method as described in the following section.</t>
          </li>
        </ul>
        <t>In order to guarantee proper verification, the signature procedure <bcp14>MUST</bcp14> be the last action to be taken before the YANG construct being signed is made available, whatever the means (sent as a reply to a poll or a notification, written to a file or record, etc.), and verification <bcp14>SHOULD</bcp14> take place in advance of any processing by the consuming application. The actions to be taken if the verification fails are specific to the consuming application, but it is <bcp14>RECOMMENDED</bcp14> to at least issue an error warning.</t>
      </section>
      <section anchor="canonicalization">
        <name>Canonicalization</name>
        <t>Signature generation and verification require a canonicalization method to be applied, that depends on the serialization used. According to the three types of serialization defined, the following canonicalization methods <bcp14>MUST</bcp14> be applied:</t>
        <ul spacing="normal">
          <li>
            <t>For CBOR, length-first core deterministic encoding, as defined by <xref target="RFC8949"/>.</t>
          </li>
          <li>
            <t>For JSON, JSON Canonicalization Scheme (JCS), as defined by <xref target="RFC8785"/>.</t>
          </li>
          <li>
            <t>For XML, Exclusive XML Canonicalization 1.0, as defined by <xref target="XMLSig"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="provenance-signature-yang-module">
        <name>Provenance-Signature YANG Module</name>
        <t>This module defines a provenance-signature type to be used in other YANG modules.</t>
        <sourcecode markers="true" name="ietf-yang-provenance@2025-05-09.yang"><![CDATA[
module ietf-yang-provenance {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yang-provenance";
  prefix iyangprov;

  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Alex Huang Feng
               <mailto:alex.huang-feng@insa-lyon.fr>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>
               Antonio Pastor
               <mailto:antonio.pastorperales@telefonica.com>
               Henk Birkholz
               <mailto:henk.birkholz@sit.fraunhofer.de>";

  description
    "Defines a binary provenance-signature type to be used in other YANG
    modules.

    Copyright (c) 2025 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, is permitted pursuant to, and subject to the license
    terms contained in, the Revised BSD License set forth in Section
    4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC
    itself for full legal notices.";

  revision 2025-05-09 {
    description
      "First revision";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }

  typedef provenance-signature {
    type binary;
    description
      "The provenance-signature type represents a digital signature
      corresponding to the associated YANG element. The signature is based
      on COSE and generated using a canonicalized version of the
      associated element.";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="enclosing-methods">
      <name>Enclosing Methods</name>
      <t>Once defined the procedures for generating and verifying the provenance signature string, let's consider how these signatures can be integrated with the associated YANG data by enclosing the signature in the data structure. This document considers four different enclosing methods, suitable for different stages of the YANG schema and usage patterns of the YANG data. The enclosing method defines not only how the provenance signature string is combined with the signed YANG data but also the specific procedure for selecting the specific YANG content to be processed when signing and verifying.</t>
      <t>Appendix A includes a set of examples of the different enclosing methods, applied to the same YANG fragment, to illustrate their use.</t>
      <section anchor="including-a-provenance-leaf-in-a-yang-element">
        <name>Including a Provenance Leaf in a YANG Element</name>
        <t>This enclosing method requires a specific element in the YANG schema defining the element to be signed (the enclosing element), and thus implies considering provenance signatures when defining a YANG module, or the use of augmentation to include the provenance signature element in a existing YANG module.</t>
        <t>When defining a provenance signature leaf element to appear in a YANG schema by means of this enclosing method, the provenance-signature leaf <bcp14>MAY</bcp14> be defined to be at any position in the enclosing element, but only one such leaf <bcp14>MUST</bcp14> be defined for this enclosing element. If the enclosing element contains other non-leaf elements, they <bcp14>MAY</bcp14> define their own provenance-signature leaf, according to the same rule. In this case, the provenance-signature leaves in the children elements are applicable to the specific child element where they are enclosed, while the provenance-signature leaf enclosed in the top-most element is applicable to the whole element contents, including the children provenance-signature leaf themselves. This allows for recursive provenance validation, data aggregation, and the application of provenance verification of relevant children elements at different stages of any data processing pipeline.</t>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by taking the whole enclosing element and eliminiating the leaf containing the provenance signature string.</t>
        <t>As example, let us consider the two modules proposed in <xref target="YANGmanifest"/>. For the platform-manifest module, the provenance for a platform would be provided by augmenting the current schema with the optional platform-provenance leaf shown below:</t>
        <artwork><![CDATA[
module: ietf-platform-manifest
  +--ro platforms
     +--ro platform* [id]
       +--ro id                      string
       +--ro name?                   string
       +--ro vendor?                 string
       +--ro vendor-pen?             uint32
       +--ro software-version?       string
       +--ro software-flavor?        string
       +--ro os-version?             string
       +--ro os-type?                string
       +--ro platform-provenance?    provenance-signature
       +--ro yang-push-streams
       |  +--ro stream* [name]
       |     +--ro name
       |     +--ro description?
       +--ro yang-library
       + . . .
       .
       .
       .
]]></artwork>
        <t>For data collections, the provenance of each one would be provided by augmenting the schema with an optional collector-provenance leaf, as shown below:</t>
        <artwork><![CDATA[
module: ietf-data-collection-manifest
  +--ro data-collections
     +--ro data-collection* [platform-id]
     +--ro platform-id
     |       -> /p-mf:platforms/platform/id
     +--ro collector-provenance?   provenance-signature
     +--ro yang-push-subscriptions
       +--ro subscription* [id]
         +--ro id
         |      sn:subscription-id
         +
         .
         .
         .
     + . . .
     |
     .
     .
     .
]]></artwork>
        <t>Note how, in the two examples, the element bearing the provenance signature appears at different positions in the enclosing element. And note that, for processing the element for signature generation and verification, the signature element <bcp14>MUST</bcp14> be eliminated from the enclosing element before applying the corresponding canonicalization method.</t>
        <t>Note that, in application of the recursion mechanism described above, a provenance element could be included at the top of any of the collections, supporting the verification of the provenance of the collection itself (as provided by a specific collector), without interfering with the verification of the provenance of each of the collection elements. As an example, in the case of the platform manifests it would look like:</t>
        <artwork><![CDATA[
module: ietf-platform-manifest
  +--ro platforms
     +--ro platform-collection-provenance? provenance-signature
     +--ro platform* [id]
       +--ro platform-provenance?          provenance-signature
       +--ro id                            string
       +--ro name?                         string
       +--ro vendor?                       string
       + . . .
       .
       .
       .
]]></artwork>
        <t>Note here that, to generate the YANG content to be processed in the case of the collection the provenance leafs of the indivual elements <bcp14>SHALL NOT</bcp14> be eliminated, as it <bcp14>SHALL</bcp14> be the case when generating the YANG content to be processed for each individual element in the collection.</t>
      </section>
      <section anchor="including-a-provenance-signature-in-yang-push-notifications">
        <name>Including a Provenance Signature in YANG-Push Notifications</name>
        <t>The signature mechanism proposed in this document <bcp14>MAY</bcp14> be used with YANG-Push <xref target="RFC8641"/> to sign notifications generated  directly by publisher nodes. The signature is carried inside the notification envelope header defined in <xref target="I-D.ietf-netconf-notif-envelope"/> as a new extension.</t>
        <t>The YANG content to be processed <bcp14>MUST</bcp14> consist of the content defined by the "contents" element in <xref target="I-D.ietf-netconf-notif-envelope"/>.</t>
        <t>The following sections define the YANG module that augments the "ietf-yp-notification" module. It extends the notification envelope header with a new leaf for the provenance signature and an augmentation to the "ietf-notification-capabilities" to enable clients discover the support of the provenance signature.</t>
        <section anchor="yang-tree-diagram">
          <name>YANG Tree Diagram</name>
          <t>The following is the YANG tree diagram <xref target="RFC8340"/> for the "ietf-yp-provenance" module.</t>
          <artwork><![CDATA[
module: ietf-yp-provenance

  augment /sysc:system-capabilities/notc:subscription-capabilities
            /inotenv:notification-metadata/inotenv:metadata:
    +--ro notification-provenance?   boolean

  augment-structure /inotenv:envelope:
    +-- provenance?   iyangprov:provenance-signature
]]></artwork>
          <t>And the following is the full YANG tree diagram for the notification structure.</t>
          <artwork><![CDATA[
module: ietf-notification

  structure envelope:
    +-- event-time         yang:date-and-time
    +-- hostname?          inet:host
    +-- sequence-number?   yang:counter32
    +-- provenance?        iyangprov:provenance-signature
    +-- contents?          <anydata>
]]></artwork>
          <t>Unlike the first enclosing method, in this second enclosing method the provenance leaf is added by augmenting a structure (/inotenv:envelope). The provenance leaf is inserted before the contents leaf.
This ordering is important because the provenance signature <bcp14>MUST</bcp14> cover the content of the notification but <bcp14>MUST NOT</bcp14> include itself in the signature computation. This ensures the signature remains valid and verifiable. YANG augmented structures typically respect the convention that the anydata node, when present, should appear as the last element in the structure. Therefore, any newly augmented elements are automatically placed before it.</t>
        </section>
        <section anchor="yang-module">
          <name>YANG Module</name>
          <t>The "ietf-yp-provenance" module augments "ietf-yp-notification" module <xref target="I-D.ietf-netconf-notif-envelope"/> adding the provenance leaf to the notification envelope structure.
It also adds the notification-provenance capability to allow clients to discover if provenance signatures are supported.</t>
          <sourcecode markers="true" name="ietf-yp-provenance@2025-05-09.yang"><![CDATA[
module ietf-yp-provenance {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yp-provenance";
  prefix inotifprov;

  import ietf-system-capabilities {
    prefix sysc;
    reference
      "RFC 9196: YANG Modules Describing Capabilities for
       Systems and Datastore Update Notifications";
  }
  import ietf-notification-capabilities {
    prefix notc;
    reference
      "RFC 9196: YANG Modules Describing Capabilities for
       Systems and Datastore Update Notifications";
  }
  import ietf-yang-provenance {
    prefix iyangprov;
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }
  import ietf-yp-notification {
    prefix inotenv;
    reference
      "RFC YYYY: Extensible YANG Model for YANG-Push Notifications";
  }

  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Alex Huang Feng
               <mailto:alex.huang-feng@insa-lyon.fr>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>
               Antonio Pastor
               <mailto:antonio.pastorperales@telefonica.com>";

  description
    "Defines a bynary provenance-signature type to be used in other YANG
    modules.

    Copyright (c) 2025 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, is permitted pursuant to, and subject to the license
    terms contained in, the Revised BSD License set forth in Section
    4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC
    itself for full legal notices.";

  revision 2025-05-09 {
    description
      "First revision";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }

  sx:augment-structure "/inotenv:envelope" {
    leaf provenance {
      type iyangprov:provenance-signature;
      description
        "COSE signature of the content of the Notification for
        provenance verification.";
    }
  }

  augment "/sysc:system-capabilities"
        + "/notc:subscription-capabilities"
        + "/inotenv:notification-metadata/inotenv:metadata" {
    description
      "Extensions to Notification Capabilities enabling clients to
      know whether the provenance signature is supported.";
    leaf notification-provenance {
      type boolean;
      default "false";
      description
        "Support of the provenance signature on YANG-Push
        Notifications.";
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="including-provenance-as-metadata-in-yang-instance-data">
        <name>Including Provenance as Metadata in YANG Instance Data</name>
        <t>Provenance signature strings can be included as part of the metadata in YANG instance data files, as defined in <xref target="RFC9195"/> for data at rest. The augmented YANG tree diagram including the provenance signature is as follows:</t>
        <artwork><![CDATA[
module: ietf-yang-instance-data-provenance
  augment-structure /id:instance-data-set:
    +-- provenance?   iyangprov:provenance-signature
]]></artwork>
        <ul empty="true">
          <li>
            <t><strong>Note:</strong> As in the second enclosing method, since this is a data structure, the <tt>provenance</tt> leaf appears before the <tt>content-data</tt> element.</t>
          </li>
        </ul>
        <t>The resulting YANG tree structure is:</t>
        <artwork><![CDATA[
  structure instance-data-set:
    + . . .
    +-- timestamp?           yang:date-and-time
    +-- provenance?          iyangprov:provenance-signature
    +-- content-data?        <anydata>
]]></artwork>
        <t>The provenance signature defined in this enclosing method applies to the whole content of the instance-data-set structure. This is independent of any other provenance signature strings that might be present within the content-data itself through other enclosing methods.</t>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by taking the contents of instance-data-set structure, excluding the provenance signature element itself and applying the corresponding canonicalization method.</t>
        <section anchor="yang-module-1">
          <name>YANG Module</name>
          <t>This module defines the provenance signature element to be included as metadata of a YANG data instance.</t>
          <sourcecode markers="true" name="ietf-yang-instance-data-provenance@2025-07-07.yang"><![CDATA[
module ietf-yang-instance-data-provenance {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance";
  prefix "yidprov";
  import ietf-yang-instance-data {
    prefix "id";
    reference
     “RFC 9195 A File Format for YANG Instance Data”
  }
  import ietf-yang-provenance {
    prefix iyangprov;
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }
  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Ana Mendez
               <mailto:ana.mendezperz@telefonica.com>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>";
  description
        "Defines a binary provenance-signature type to be used as metadata
         in a YANG data instance.

         Copyright (c) 2025 IETF Trust and the persons identified as
         authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms, with or without
         modification, is permitted pursuant to, and subject to the license
         terms contained in, the Revised BSD License set forth in Section
         4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
         (https://trustee.ietf.org/license-info).

         This version of this YANG module is part of RFC XXXX; see the RFC
         itself for full legal notices.";

  revision 2025-07-07 {
    description "First revision.";
    reference "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  sx:augment-structure "/id:instance-data-set" {
    leaf provenance {
      type iyangprov:provenance-signature;
      description
        "Provenance signature that applies to the full content-data block of an instance dataset.This signature can be used to verify the integrity and authenticity of the instance data.";
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="EMannotations">
        <name>Including Provenance in YANG Annotations</name>
        <t>The use of annotations as defined in <xref target="RFC7952"/> seems a natural enclosing method, dealing with the provenance signature string as metadata extension and not requiring modification of existing YANG schemas. The provenance-string annotation is defined as follows:</t>
        <artwork><![CDATA[
 md:annotation provenance {
       type provenance-signature;
       description
         "This annotation contains a digital signature corresponding
          to the YANG element in which it appears.";
     }
]]></artwork>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by eliminating the provenance annotation (encoded according to what is described in Section 5 of <xref target="RFC7952"/>) from the element it applies to, before invoking the corresponding canonicalization method. In application of the general recursion principle for provenance signature strings, any other provenance strings within the element to which the provenance-string applies <bcp14>SHALL</bcp14> be left as they appear, whatever the enclosing method used for them.</t>
        <section anchor="yang-module-2">
          <name>YANG Module</name>
          <t>This module defines a metadata annotation to include a provenance signature for a YANG element.</t>
          <sourcecode markers="true" name="ietf-yang-provenance-annotation@2024-06-30.yang"><![CDATA[
module ietf-yang-provenance-annotation {
     yang-version 1.1;
     namespace
       "urn:ietf:params:xml:ns:yang:ietf-yang-annotation";
     prefix "ypmd";
     import ietf-yang-metadata {
       prefix "md";
     }
     organization "IETF OPSAWG (Operations and Management Area Working Group)";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
        WG List:  <mailto:opsawg@ietf.org>

        Authors: Diego Lopez
                 <mailto:diego.r.lopez@telefonica.com>
                 Alex Huang Feng
                 <mailto:alex.huang-feng@insa-lyon.fr>
                 Antonio Pastor
                 <mailto:antonio.pastorperales@telefonica.com>
                 Henk Birkholz
                 <mailto:henk.birkholz@sit.fraunhofer.de>";
        description
        "Defines a binary provenance-signature type to be used in YANG
         metadata annotations

         Copyright (c) 2024 IETF Trust and the persons identified as
         authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms, with or without
         modification, is permitted pursuant to, and subject to the license
         terms contained in, the Revised BSD License set forth in Section
         4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
         (https://trustee.ietf.org/license-info).

         This version of this YANG module is part of RFC XXXX; see the RFC
         itself for full legal notices.";

     revision 2024-06-30 {
        description
        "First revision";
        reference
        "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
     }
     md:annotation provenance {
       type iyangprov:provenance-signature;
       description
         "This annotation contains the provenance signature for
          the YANG element associated with it";
     }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The provenance assessment mechanism described in this document relies on COSE <xref target="RFC9052"/> and the deterministic encoding or canonicalization procedures described by <xref target="RFC8949"/>, <xref target="RFC8785"/> and <xref target="XMLSig"/>. The security considerations made in these references are fully applicable here.</t>
      <t>The verification step depends on the association of the kid (Key ID) with the proper public key. This is a local matter for the verifier and its specification is out of the scope of this document. Similarly, key association with reliable data sources is a deployment decision, though a couple of deployment patterns can be considered, depending on the application scenario under consideration. On the one hand, identities may be associated to controller entities (a domain controller, a person in charge of operational aspects, an organizational unit managing an administrative domain, ec.) owning the private keys to be use in generating the provenance signatures for YANG data such as configurations or telemetry. Alternatively, individual devices may hold the identities and corresponding private keys to generate provenance signatures for locally originated data (e.g., telemetry updates). The use of certificates, PKI mechanisms, or any other secure out-of-band distribution of id-public key mappings is <bcp14>RECOMMENDED</bcp14>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="ietf-xml-registry">
        <name>IETF XML Registry</name>
        <t>This document registers the following URIs in the "IETF XML Registry" <xref target="RFC3688"/>:</t>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yp-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-annotation-pmd
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="yang-module-name">
        <name>YANG Module Name</name>
        <t>This document registers the following YANG modules in the "YANG Module Names" registry <xref target="RFC6020"/>:</t>
        <artwork><![CDATA[
  name: ietf-yang-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-provenance
  prefix: iyangprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-yp-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yp-provenance
  prefix: inotifprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-yang-instance-data-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance
  prefix: yidprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-yang-provenance-annotation
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-annotation-pmd
  prefix: ypmd
  reference: RFC XXXX
]]></artwork>
      </section>
      <section anchor="yang-sid-file">
        <name>YANG SID-file</name>
        <t>IANA is requested to register a new ".sid" file in the "IETF YANG SID Registry" <xref target="RFC9595"/>:</t>
        <artwork><![CDATA[
SID range entry point: TBD
SID range size: 20
YANG module name: ietf-yang-provenance
reference: RFC-to-be
]]></artwork>
        <t>A ".sid" file is proposed in Appendix B.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>An open-source reference implementation, written in Java, is available at <eref target="https://github.com/tefiros/cose-provenance">https://github.com/tefiros/cose-provenance</eref>. This implementation has been used to generate the examples in the appendix of this document, and was first demonstrated at the IETF 122 Hackathon. Work is ongoing to explore its integration with other open-source YANG modules. A Kafka message broker integration was presented at the IETF 123 Hackathon aiming at convergence with current efforts on YANG Push. The implementation is available at <eref target="https://github.com/tefiros/kafka-provenance">https://github.com/tefiros/kafka-provenance</eref>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <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="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9195">
          <front>
            <title>A File Format for YANG Instance Data</title>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel"/>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>There is a need to document data defined in YANG models at design time, implementation time, or when a live server is unavailable. This document specifies a standard file format for YANG instance data, which follows the syntax and semantics of existing YANG models and annotates it with metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9195"/>
          <seriesInfo name="DOI" value="10.17487/RFC9195"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for 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.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-notif-envelope">
          <front>
            <title>Extensible YANG Model for YANG-Push Notifications</title>
            <author fullname="Alex Huang Feng" initials="A. H." surname="Feng">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Pierre Francois" initials="P." surname="Francois">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Everything OPS</organization>
            </author>
            <date day="6" month="February" year="2026"/>
            <abstract>
              <t>   This document defines a new extensible Notification structure,
   defined in YANG, for use in YANG-Push Notification messages, both for
   NETCONF and RESTCONF, enabling any YANG-compatible encodings such as
   XML, JSON, or CBOR.  Additionally, it defines two essential
   extensions to this structure, the support of a hostname and a
   sequence number and the support of a timestamp characterizing the
   moment when the data was observed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-notif-envelope-04"/>
        </reference>
        <reference anchor="XMLSig" target="https://www.w3.org/TR/xmldsig-core2/">
          <front>
            <title>XML Signature Syntax and Processing Version 2.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7223">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes configuration data and state data (status information and counters for the collection of statistics).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7223"/>
          <seriesInfo name="DOI" value="10.17487/RFC7223"/>
        </reference>
        <reference anchor="YANGmanifest">
          <front>
            <title>A Data Manifest for Contextualized Telemetry Data</title>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Everything OPS</organization>
            </author>
            <author fullname="Jean Quilbeuf" initials="J." surname="Quilbeuf">
              <organization>Huawei</organization>
            </author>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Ignacio Dominguez Martinez-Casanueva" initials="I. D." surname="Martinez-Casanueva">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   Network platforms use Network Telemetry, such as YANG-Push, to
   continuously stream information, including both counters and state
   information.  This document describes the metadata that ensure that
   the collected data can be interpreted correctly.  This document
   specifies the Data Manifest, composed of two YANG data models (the
   Platform Manifest and the non-normative Data Collection Manifest).
   These YANG modules are specified at the network level (e.g., network
   controllers) to provide a model that encompasses several network
   platforms.  The Data Manifest must be streamed and stored along with
   the data, up to the collection and analytics systems to keep the
   collected data fully exploitable by the data scientists and relevant
   tools.  Additionally, this document specifies an augmentation of the
   YANG-Push model to include the actual collection period, in case it
   differs from the configured collection period.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-collected-data-manifest-10"/>
        </reference>
      </references>
    </references>
    <?line 739?>

<section numbered="false" anchor="appendix-a-examples-of-application-of-the-different-enclosing-methods">
      <name>Appendix A. Examples of Application of the Different Enclosing Methods</name>
      <t>In the examples that follow, the signature strings have been wrapped and, in some cases, indented to improve readability. If these examples are used for any kind of validation, all intermediate carriage returns and whitespace should be deleted to build the actual signature string to be considered.</t>
      <section numbered="false" anchor="xml">
        <name>XML</name>
        <t>Let us consider the following YANG instance, corresponding to a monitoring interface statement, as defined in <xref target="RFC7223"/>:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces>
]]></artwork>
        <t>Using the first enclosing method, we will demonstrate how to augment the previous ietf-interfaces YANG module by defining it in the new example module below:</t>
        <artwork><![CDATA[
module interfaces-provenance-augmented {
  yang-version 1.1;
  namespace "urn:example:interfaces-provenance-augmented";
  prefix ifprov;

  import ietf-interfaces {
    prefix if;
  }
  import ietf-yang-provenance {
    prefix iyangprov;
  }

  description
    "Augments ietf-interfaces with provenance information";

  revision "2025-10-08" {
    description
      "Initial revision of the augment module adding provenance information to ietf-interfaces.";
  }

  augment "/if:interfaces" {
    leaf interfaces-provenance {
      type iyangprov:provenance-signature;
      description
        "Signature proving provenance of the interface configuration";
    }
  }
}


]]></artwork>
        <t>The following tree diagram illustrates the augmentation of the ietf-interfaces module with a provenance-signature at the root container:</t>
        <artwork><![CDATA[
module: ietf-interfaces
  +--rw interfaces
     +--rw interface* [name]
     |  +--rw name          string
     |  +--rw type          identityref
     |  ...
     +--rw ifprov:interfaces-provenance?  iyangprov:provenance-signature
]]></artwork>
        <t>The following example illustrates how a provenance signature can be attached to the root interfaces container to protect the entire set of interface configuration and operational data.
This augmentation adds a provenance-signature leaf at the root interfaces container (named "interfaces-provenance" in this case) and produces the following output:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interfaces-provenance xmlns="urn:example:interfaces-provenance-augmented">
      0oRRowNjeG1sBGdlYzIua2V5ASag9lhAvzyFP5HP0nONaqTRxKmSqerrDS6C
      QXJSK+5NdprzQZLf0QsHtAi2pxzbuDJDy9kZoy1JTvNaJmMxGTLdm4ktug==
    </interfaces-provenance>
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces>
]]></artwork>
        <t>The second enclosing method shows a notification with the provenance signature included inside the notification envelope. The provenance element is placed immediately before the contents element:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<envelope xmlns="urn:ietf:params:xml:ns:yang:ietf-yp-notification">
    <event-time>2024-02-03T11:37:25.94Z</event-time>
    <provenance xmlns="urn:ietf:params:xml:ns:yang:ietf-yp-provenance">
    0oRRowNjeG1sBGdlYzIua2V5ASag9lhAzyJBpvnpzI/TirrjckAA29q6Qmf
    u56L8ZhUXXhu0KFcKh1qSRFx2wGR/y+xgKigVHYicC7fp/0AlHSXWiKB2sg==
    </provenance>
    <contents>
        <push-update xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push">
            <id>1011</id>
            <datastore-contents>
                <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
                    <interface>
                        <name>GigabitEthernet1</name>
                        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
                            ianaift:ethernetCsmacd</type>
                        <admin-status>up</admin-status>
                        <oper-status>up</oper-status>
                        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
                        <if-index>1</if-index>
                        <phys-address>0c:00:00:37:d6:00</phys-address>
                        <speed>1000000000</speed>
                        <statistics>
                            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
                            <in-octets>8157</in-octets>
                            <in-unicast-pkts>94</in-unicast-pkts>
                            <in-broadcast-pkts>0</in-broadcast-pkts>
                            <in-multicast-pkts>0</in-multicast-pkts>
                            <in-discards>0</in-discards>
                            <in-errors>0</in-errors>
                            <in-unknown-protos>0</in-unknown-protos>
                            <out-octets>89363</out-octets>
                            <out-unicast-pkts>209</out-unicast-pkts>
                            <out-broadcast-pkts>0</out-broadcast-pkts>
                            <out-multicast-pkts>0</out-multicast-pkts>
                            <out-discards>0</out-discards>
                            <out-errors>0</out-errors>
                        </statistics>
                    </interface>
                </interfaces-state>
            </datastore-contents>
        </push-update>
    </contents>
</envelope>
]]></artwork>
        <t>The third enclosing method, applicable if the instance is to be stored as YANG instance data at rest, by adding the corresponding metadata, would produce a results as shown below:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<instance-data-set xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data">
  <name>atRestYANG</name>
  <content-schema></content-schema>
  <revision>
    <date>2024-11-03</date>
    <description>For demos</description>
  </revision>
  <description>Sample for demonstrating provenance signatures</description>
  <contact>diego.r.lopez@telefonica.com</contact>
  <provenance xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance">
  0oRRowNjeG1sBGdlYzIua2V5ASag9lhAWff+fMbfNChKUYZ52UTOBmAlYPFe4
  vlZOLyZeW0CU7/2OutDeMCG28+m3rm58jqLjKbcueKLFq8qFJb4mvPY+Q==
  </provenance>
  <content-data>
   <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
   </interfaces-state>
 </content-data>
</instance-data-set>
]]></artwork>
        <t>Finally, using the fourth enclosing method, the YANG instance would incorporate the corresponding provenance metadata as an annotation, using the namespace prefix specified in the ietf-yang-provenance-annotation module, as introduced in <xref target="EMannotations"/>:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
                  xmlns:ypmd="urn:ietf:params:xml:ns:yang:ietf-yang-annotation-pmd"
                  ypmd:provenance=
                  "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAzen3Bm9AZoyXuetpoTB70SzZqKVxeu
                  OMW099sm+NXSqCfnqBKfXeuqDNEkuEr+E0XiAso986fbAHQCHbAJMOhw==">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces>
]]></artwork>
      </section>
      <section numbered="false" anchor="json">
        <name>JSON</name>
        <t>Let us consider the following YANG instance, corresponding to the same monitoring interface statement, with JSON serialization:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ]
  }
}
]]></artwork>
        <t>Applying the first enclosing method, a provenance-signature leaf at the top element (named "interfaces-provenance" in this case") would be included following the augmentation module previously defined for the XML example. This will produce the following output:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ],
    "interfaces-provenance-augmented:interfaces-provenance":
      "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAvzyFP5HP0nONaqTRxKmSqerrDS6C
       QXJSK+5NdprzQZLf0QsHtAi2pxzbuDJDy9kZoy1JTvNaJmMxGTLdm4ktug=="
  }
}

]]></artwork>
        <t>The second enclosing method would translate into a notification including the "provenance" element as follows:</t>
        <artwork><![CDATA[
{
  "ietf-yp-notification:envelope" : {
    "event-time" : "2013-12-21T00:01:00Z",
    "contents": {
      "ietf-yang-push:push-update": {
        "id": 1011,
        "datastore-contents": {
          "ietf-interfaces:interfaces-state": {
            "interface": [ {
                "name": "GigabitEthernet1",
                "type": "ianaift:ethernetCsmacd",
                "admin-status": "up",
                "oper-status": "up",
                "last-change": "2024-02-03T11:22:41.081+00:00",
                "if-index": 1,
                "phys-address": "0c:00:00:37:d6:00",
                "speed": 1000000000,
                "statistics": {
                  "discontinuity-time": "2024-02-03T11:20:38+00:00",
                  "in-octets": 8157,
                  "in-unicast-pkts": 94,
                  "in-broadcast-pkts": 0,
                  "in-multicast-pkts": 0,
                  "in-discards": 0,
                  "in-errors": 0,
                  "in-unknown-protos": 0,
                  "out-octets": 89363,
                  "out-unicast-pkts": 209,
                  "out-broadcast-pkts": 0,
                  "out-multicast-pkts": 0,
                  "out-discards": 0,
                  "out-errors": 0
                }
              }
            ]
          }
        }
      }
    },
    "ietf-yp-provenance:provenance":
    "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAiKEKLQKJT12LsNgxt8WllEI65lyi
    E/m12drCfl+wh7T61cTYhFGdEeX8A5F0vmUWROZebq/VVFewUZeVYGZBOQ=="
  }
}
]]></artwork>
        <t>The third enclosing method, applicable if the instance is to be stored as YANG instance data at rest, by adding the corresponding metadata, would produce a results as shown below:</t>
        <artwork><![CDATA[
{
  "ietf-yang-instance-data:instance-data-set" : {
    "name" : "interfaces-labTID-status",
    "contact" : "sofia.garciarincon.practicas@telefonica.com",
    "timestamp" : "Thu Jul 18 11:42:06 CEST 2024",
    "content-data" : {
      "ietf-interfaces:interfaces": {
        "interface": [
          {
            "name": "GigabitEthernet1",
            "iana-if-type:type": "ianaift:ethernetCsmacd",
            "admin-status": "up",
            "oper-status": "up",
            "last-change": "2024-02-03T11:22:41.081+00:00",
            "if-index": 1,
            "phys-address": "0c:00:00:37:d6:00",
            "speed": 1000000000,
            "statistics": {
              "discontinuity-time": "2024-02-03T11:20:38+00:00",
              "in-octets": 8157,
              "in-unicast-pkts": 94,
              "in-broadcast-pkts": 0,
              "in-multicast-pkts": 0,
              "in-discards": 0,
              "in-errors": 0,
              "in-unknown-protos": 0,
              "out-octets": 89363,
              "out-unicast-pkts": 209,
              "out-broadcast-pkts": 0,
              "out-multicast-pkts": 0,
              "out-discards": 0,
              "out-errors": 0
            }
          }
        ]
      }
    },
    "ietf-yang-instance-data-provenance:provenance" :
    "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAmop/c7wMcjRmiSPVy65F/N6O21dsG
    kjGQjIDRizhu3WMwi9Je+VUf5sqwlhSwQCdv5u7mRXa6Pd9dhCwdxdRCA=="
  }
}
]]></artwork>
        <t>Finally, using the fourth enclosing method, the YANG instance would incorporate the corresponding provenance metadata as an annotation, using the namespace prefix specified in the yang-provenance-metadata module, as introduced in <xref target="EMannotations"/>, and the recommendations in section 5.2.3 of <xref target="RFC7952"/>:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces" : {

    "interface" : [
      {
        "name" : "GigabitEthernet1",
        "iana-if-type:type" : "ianaift:ethernetCsmacd",
        "admin-status" : "up",
        "oper-status" : "up",
        "last-change" : "2024-02-03T11:22:41.081+00:00",
        "if-index" : 1,
        "phys-address" : "0c:00:00:37:d6:00",
        "speed" : 1000000000,
        "statistics" : {
          "discontinuity-time" : "2024-02-03T11:20:38+00:00",
          "in-octets" : 8157,
          "in-unicast-pkts" : 94,
          "in-broadcast-pkts" : 0,
          "in-multicast-pkts" : 0,
          "in-discards" : 0,
          "in-errors" : 0,
          "in-unknown-protos" : 0,
          "out-octets" : 89363,
          "out-unicast-pkts" : 209,
          "out-broadcast-pkts" : 0,
          "out-multicast-pkts" : 0,
          "out-discards" : 0,
          "out-errors" : 0
        }
      }
    ],
    "@": {
        "ypmd:provenance": "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAM/Dx3HVc4GL91jmuU5nWgcmOPPVpARLJkWo5wwQYvGFJpKMXTkjAtArPp8v6Sl1ZD1qHimKMhAoHLMHVxBtrcA=="
    }
  }
}
]]></artwork>
      </section>
      <section numbered="false" anchor="cbor">
        <name>CBOR</name>
        <t>According to <xref target="RFC9254"/>, provenance information <bcp14>MAY</bcp14> be represented in CBOR using either YANG names (CBOR diagnostic notation) or YANG SIDs as map keys. The CBOR diagnostic notation when using name keys would be essentially similar to the JSON encoding presented in the previous section. Both representations are included in the examples below to provide a full reference.</t>
        <t>NOTE TO THE RFC EDITOR: The SID values shown below are illustrative and must be replaced by IANA-assigned values before publication.</t>
        <t>The first enclosing method will produce the following output, in CBOR diagnostic notation:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ],
    "interfaces-provenance-augmented:interfaces-provenance": h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
    }
}
]]></artwork>
        <t>Note that the provenance leaf in JSON would be represented in BASE64 value and in CBOR diagnostic is a byte string represented with an hexadecimal value.</t>
        <t>And the corresponding representation of the first enclosing method using YANG SIDs will be:</t>
        <artwork><![CDATA[
{
  1500: {                      / ietf-interfaces:interfaces /
    1501: [                     / interface list /
      {
        1502: "GigabitEthernet1",     / name /
        1503: 1800,                   / type identityref /
        1504: 1,                      / admin-status: up /
        1505: 1,                      / oper-status: up /
        1506: "2024-02-03T11:22:41.081+00:00", / last-change /
        1507: 1,                      / if-index /
        1508: "0c:00:00:37:d6:00",        / phys-address /
        1509: 1000000000,             / speed /
        1510: {                       / statistics /
          1511: "2024-02-03T11:20:38+00:00",
          1512: 8157,
          1513: 94,
          1514: 0,
          1515: 0,
          1516: 0,
          1517: 0,
          1518: 0,
          1519: 89363,
          1520: 209,
          1521: 0,
          1522: 0,
          1523: 0,
          1524: 0
        }
      }
    ],
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'   / provenance-signature leaf /
  }
}

]]></artwork>
        <t>The following example illustrates the notification-based enclosing method (second method), represented in CBOR diagnostic notation.</t>
        <artwork><![CDATA[
{
    "ietf-yp-notification:envelope": {
        "event-time": "2013-12-21T00:01:00Z",
        "contents": {
            "ietf-yang-push:push-update": {
                "id": 1011,
                "datastore-contents": {
                    "ietf-interfaces:interfaces-state": {
                        "interface": [
                            {
                                "name": "GigabitEthernet1",
                                "type": "iana-if-type:ethernetCsmacd",
                                "admin-status": "up",
                                "oper-status": "up",
                                "last-change": "2024-02-03T11:22:41.081+00:00",
                                "if-index": 1,
                                "phys-address": "0c:00:00:37:d6:00",
                                "speed": 1000000000,
                                "statistics": {
                                    "discontinuity-time": "2024-02-03T11:20:38+00:00",
                                    "in-octets": 8157,
                                    "in-unicast-pkts": 94,
                                    "in-broadcast-pkts": 0,
                                    "in-multicast-pkts": 0,
                                    "in-discards": 0,
                                    "in-errors": 0,
                                    "in-unknown-protos": 0,
                                    "out-octets": 89363,
                                    "out-unicast-pkts": 209,
                                    "out-broadcast-pkts": 0,
                                    "out-multicast-pkts": 0,
                                    "out-discards": 0,
                                    "out-errors": 0
                                }
                            }
                        ]
                    }
                }
            }
        },
        "ietf-yp-provenance:provenance": h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
    }
}
]]></artwork>
        <t>And thhis would be the second enclosing method example in YANG SID notation:</t>
        <artwork><![CDATA[
{
  2957: {                           / ietf-yp-notification:envelope /
    2959: "2024-10-10T08:00:11.22Z", / event-time /
    2958: {                           / contents /
      4000: {                         / push-update /
        4001: 1011,                   / id /
        4002: {                       / datastore-contents /
          1500: {                     / ietf-interfaces:interfaces /
            1501: [                    / interface list /
              {
                1502: "GigabitEthernet1",    / name /
                1503: 1800,                  / type identityref /
                1504: 1,                     / admin-status: up /
                1505: 1,                     / oper-status: up /
                1506: "2024-02-03T11:22:41.081+00:00", / last-change /
                1507: 1,                     / if-index /
                1508: "0c:00:00:37:d6:00",       / phys-address /
                1509: 1000000000,            / speed /
                1510: {                     / statistics /
                  1511: "2024-02-03T11:20:38+00:00", / discontinuity-time /
                  1512: 8157,
                  1513: 94,
                  1514: 0,
                  1515: 0,
                  1516: 0,
                  1517: 0,
                  1518: 0,
                  1519: 89363,
                  1520: 209,
                  1521: 0,
                  1522: 0,
                  1523: 0,
                  1524: 0
                }
              }
            ]
          }
        }
      }
    },
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'  / provenance-signature/
  }
}
]]></artwork>
        <t>The following example illustrates the third enclosing method, represented in CBOR diagnostic notation.</t>
        <artwork><![CDATA[
{
  "ietf-yang-instance-data:instance-data-set": {
    "name": "interfaces-labTID-status",
    "contact": "sofia.garciarincon.practicas@telefonica.com",
    "timestamp": "Thu Jul 18 11:42:06 CEST 2024",
    "content-data": {
      "ietf-interfaces:interfaces": {
        "interface": [
          {
            "name": "GigabitEthernet1",
            "iana-if-type:type": "ianaift:ethernetCsmacd",
            "admin-status": "up",
            "oper-status": "up",
            "last-change": "2024-02-03T11:22:41.081+00:00",
            "if-index": 1,
            "phys-address": "0c:00:00:37:d6:00",
            "speed": 1000000000,
            "statistics": {
              "discontinuity-time": "2024-02-03T11:20:38+00:00",
              "in-octets": 8157,
              "in-unicast-pkts": 94,
              "in-broadcast-pkts": 0,
              "in-multicast-pkts": 0,
              "in-discards": 0,
              "in-errors": 0,
              "in-unknown-protos": 0,
              "out-octets": 89363,
              "out-unicast-pkts": 209,
              "out-broadcast-pkts": 0,
              "out-multicast-pkts": 0,
              "out-discards": 0,
              "out-errors": 0
            }
          }
        ]
      }
    },
    "ietf-yang-instance-data-provenance:provenance":
      h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
  }
}
]]></artwork>
        <t>And this would be the third enclosing method using YANG SID notation:</t>
        <artwork><![CDATA[
{
  3170: {                             / ietf-yang-instance-data:instance-data-set /
    3171: "interfaces-labTID-status", / name /
    3172: "sofia.garciarincon.practicas@telefonica.com", / contact /
    3173: "Thu Jul 18 11:42:06 CEST 2024", / timestamp /
    3174: {                             / content-data /
      1500: {                           / ietf-interfaces:interfaces /
        1501: [                          / interface list /
          {
            1502: "GigabitEthernet1",
            1503: 1800,
            1504: 1,
            1505: 1,
            1506: "2024-02-03T11:22:41.081+00:00",
            1507: 1,
            1508: "0c:00:00:37:d6:00",
            1509: 1000000000,
            1510: {
              1511: "2024-02-03T11:20:38+00:00",
              1512: 8157,
              1513: 94,
              1514: 0,
              1515: 0,
              1516: 0,
              1517: 0,
              1518: 0,
              1519: 89363,
              1520: 209,
              1521: 0,
              1522: 0,
              1523: 0,
              1524: 0
            }
          }
        ]
      }
    },
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'   / provenance-signature /
  }
}
]]></artwork>
        <t>Note that there is no IANA registered SID for ietf-yang-instance-data:instance-data-set, so a provisional one is used to complete the example.</t>
        <t>Finaly, the following example illustrates the fourth and last enclosing method using CBOR diagonstic notation:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {

    "interface": [
      {
        "name": "GigabitEthernet1",
        "iana-if-type:type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ],

    "@": {
      "ypmd:provenance":
        h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
    }
  }
}
]]></artwork>
        <t>While this last example uses YANG SID notation for the fourth enclosing method:</t>
        <artwork><![CDATA[
{
  1500: {                             / ietf-interfaces:interfaces /
    1501: [                              / interface list /
      {
        1502: "GigabitEthernet1",
        1503: 1800,
        1504: 1,
        1505: 1,
        1506: "2024-02-03T11:22:41.081+00:00",
        1507: 1,
        1508: "0c:00:00:37:d6:00",
        1509: 1000000000,
        1510: {
          1511: "2024-02-03T11:20:38+00:00",
          1512: 8157,
          1513: 94,
          1514: 0,
          1515: 0,
          1516: 0,
          1517: 0,
          1518: 0,
          1519: 89363,
          1520: 209,
          1521: 0,
          1522: 0,
          1523: 0,
          1524: 0
        }
      }
    ],
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'  / provenance-signature/
  }
}
]]></artwork>
        <t>In the example above, the provenance-signature leaf is represented using the proposed assigned SID (3162). The representation of this leaf is the same whether it is added via the first enclosing method (as a direct augmentation of the interfaces container) or via the fourth enclosing method (as an annotation using the yp-provenance-metadata module). The only difference between these two methods is the semantic context and location of the leaf within the YANG data: in the first method it is part of the root container structure, while in the fourth method it is included as metadata in the @ annotation object. From the perspective of CBOR representation, SIDs are identical in both methods.</t>
        <t>NOTE TO THE RFC EDITOR: Replace the illustrative SID values with the final values allocated by IANA according to <xref target="RFC9595"/>.</t>
      </section>
    </section>
    <section numbered="false" anchor="appendix-b-provisional-yang-sid-file-sid-for-ietf-yang-provenance">
      <name>Appendix B. Provisional YANG SID File (.sid) for <tt>ietf-yang-provenance</tt></name>
      <t>The following <tt>.sid</tt> file is provided as a provisional example for implementers. It maps schema nodes defined in the <tt>ietf-yang-provenance</tt> module to numeric SIDs for use in CBOR compact encoding. These SIDs are provisional and will be replaced by IANA-assigned values upon publication of the RFC.</t>
      <sourcecode markers="true" name="ietf-yang-provenance@2025-05-09.yang"><![CDATA[

{
    "ietf-sid-file:sid-file": {
        "module-name": "ietf-yang-provenance",
        "module-revision": "2025-05-09",
        "sid-file-status": "unpublished",
        "description": "Provisional SIDs for ietf-yang-provenance module",
        "reference": "RFC-to-be: Applying COSE Signatures for YANG Data Provenance",
        "dependency-revision": [],
        "assignment-range": [
            {
                "entry-point": "3161",
                "size": "20"
            }
        ],
        "item": [
            {
                "status": "unstable",
                "namespace": "module",
                "identifier": "ietf-yang-provenance",
                "sid": "3161"
            },
            {
                "status": "unstable",
                "namespace": "data",
                "identifier": "/ietf-yang-provenance:provenance-signature",
                "sid": "3162"
            }
        ]
    }
}
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Sofia Garcia (UC3M, sgarciarincon01@gmail.com) for being instrumental in demonstrating the feasibility of the proposed approach, providing a first proof of concept of YANG provenance signatures.</t>
      <t>This document is based on work partially funded by the EU Horizon Europe projects iTrust6G (grant 101139198), CYBERNEMO (grant 101168182), cPAID (grant 101168407), MARE (grant 101191436), and 6G-DALI (grant 101192750).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1923bbxrLgO7+ih3nYVsy77tyOE1mSbdmW5EiyHXufrAkI
gCIikKABUBKd7bPOh8ysNd8yn3K+ZKqq70CDpGxnzc45YrwiEuhrdXXdu7rZ
bNbyKI/DPqvvTafxPJpcsv3T80N2Hl1OvHyWhhkbJil7v3fyjB14ucdep8l1
OPEmfliveYNBGl5D3bk3uWwG8Lo5NV77Xh5eJum8z7I8qNWCxJ94Y+gqSL1h
3ozCfNhMppl3c9mk+rpqs7NRy2aDcZRlUTLJ51OodHR48ZSx75gXZwn0GE2C
cBrC/yZ5vcHqR3tP4A8MtH50dvG0XpvMxoMw7ddgTGG/5ieTLJxks6zP8nQW
1mDI6zUvDT1o6HQapl4O3WTMmwTs2Jt4l+EYm63dJOnVZZrMpouKsT1oh72D
ogi7Z1i8XrsK51A56NdYk+lp4a9MwhV/IKTx7zjMPYReDQrOYLyMfVm3jHFY
1UvPx14Uw3MO7p8Q9K0kvcQ3XuqP4M0oz6dZv93Ggvgoug5bslgbH7QHaXKT
hW3eRBurXkb5aDaAykHai5Np+KldWEcsFMMKZLnRgyzc4tVbUVKs1l6KIK1R
Po4B/2b5KEkJyhyzDiJAOPYKm4euAR8uvUn0iQDYZxdhHA6TSeR7+C4UIAmw
Sitt0Zh+ylWZlp+M67rlvUkOjxP22svyJF21cY/Xak2pFq5lHGauTqJJlEeA
2tBRCxvIZinv9/kMZs6ehpNLfDycxbEYTxzeFl7aAzo6Od9rvponE2s8UKs1
wlrNIdT6KZpkXjOGQq1hak3WY8e4uVaGIuBla0w1YJJuOEJfMJ0WexKlV6Mk
pqbFHMPJlfUYeuyzp6k3m4ySYZiy86MLfCzJTfmNGMYIGmoNREM/ZVEO05JF
W0FIgM3TMAR0PBuFMKA89bIsZNub+MpPAhjM37Y2erubf6MHUQ6068BLxxns
z5yXmU1ypGjPwnTsTea12iSBLzlsF0DDs6f761s7O+Lb7s4W/7a53uvxb1ud
Xod/297d1N+66psot7O+Id7ubG2ItzvbO5vi2+7GLv+225E1dru74u1ub3ND
fNukZ0fNA9rKzUmYAyWEv0keDZvh5DpEpO8vK1Bjvxy/An6AdEkwC3igOQQ7
n09y75YIFHAHPwSqDWj5NkyRerNeq4MVvfQS4S6pwM3NTetmnajLxVn7dhwH
QBmbfpKGvXatFk2GNli3e711+IZsCMAeDYmkqHELIuEncRz6eRhwViQL1mrN
ZhOQB1fbh18XoyhjwIxmREeDcBhNgMt5QIX9EVTJxmzgZWHAYOzECjPNCvOE
yHkUhDTb6zCNhnOWj0KDyrNkyNklDqLBsoRFOYMepwnAZRCH2IhRMUmjy2hC
zUUT4JcpIB024VH9LMwbLISW2Q0gN1RIAF3xBdDtkF0mCGhob0ADQMjDuKGp
NnBCD/h5FGKrDBnZMAbyja1APY/56XyaJ7DEHowo4C0CeCbZNEkBJlEKcIzn
bJgmY2OUXsxLZskshYnCpABTmHeNPAPaabG9jEpT1z4RDJxKiABDts7herp3
zIByJ2NeAGeOlWYZgS5PkjgD+uePmJexvaM2oBpww5uGCeJrL44CXn0QAoGB
pRkD6rAUyM41EF2ctBfHLPOhQholWQOfZLMpTQ97wVFmQGUJgAuWAefbYhd6
fNDbFNDIxIqh50dxlCOjo7aiiR/PMjF5Y9SAgNBdRoObzDmSZP4IiBcM/OMs
koMZtzjKjqMgiMNa7Tt2BEQnCWY+zrhWswHYYJfhBDkLrJdCXD8GRAmacZJM
YQQwoGgKnKch+kF0z1kcAldi+U0iMS0TqAQzDVrsTSZhA1MeQ5s5kDwa/H6C
w4kRKiDdNdhNyCZhGAjsVDgzjXElHuBXICyIg7DZriPcISnLwkvafjPgGSn0
QC2uCWTAZvRQEA/SEEg44hBvLwgzmEWAeDCDyYgFVauP81mTqzYDrDXQbRCO
vOsoSflCpnzJslA2RQPwroggBKEfZQThwRx2Dqwv7FvqCQS2URKwB14M8i2I
MePIB9jOYoHiDWgGUBdwMghjls8mMFRo4vhVq9Vaw5lhy0BDEPvl3Jnn8+3g
AxEMxL7OkVTxgUYZcGnYYICzksoswls+KbmwDRo+LhQBEhcxt6gggLhuyG0N
ta2QpExQNMHhXM486DwPkYJAaWD1Gpy4NQyk0xAHZH6HtEshGVKusYckVBIO
7B4glkxiIMWcxCC5sra87+Ha4ablVA7gyYeQRxoDCnQMCuQJcIUGdhAnAFP4
m8G8GEjHAQ2Z6OBl6k1Hka/KI2UjzEPVRxA7lDUREr7YdDew7Ozi1XmDnZ8/
J/gfvc5CH3sgDPEAxuGtN8Z9B0LPLJcU3FwXggWKhogzl7jeILBfjvgYp2nY
nGp+iiT98jINLzkeg0hyiTsaHhN/sGdSAESRUluQHc+ADBRAm8A4U0BzaKCF
HNPgAEgHfQ83epJyLDLbUjwUnkODiR/Btgk4tP74w+Tfnz8TUQZkx01lMFb8
BkuzHMFllUApUA3JTQDNkR9gIbkIZaTHmdBaAWnFAkBV/DQahKIF2ASwasC8
s4TzGRBWAcdDD6ft0RsQB+MAYRfe5ij9BjgRRdtxRIIEJIr5GMCSfBG2NU7Q
i+dZRKjMoT9NcrH1JMiRL17Cqud8iAQQoGDE0UiOQTyBfWIoxyZ3EGwZN5xa
J1jd1wZfRblEcm5AA4PJAQ8BDSZJaTkBlGqGamcKeUNAgF4Z6DuNpiFubyRF
Ic0P/jdHmj0nOqi2P+58xGqctLVXueiBm6Wh5AN6FhO9RmyMxmEzgzmE/A0S
44zzgYJIAvINIp6QfBCTQcyA/cJBCD8NCQOtByD3znKJLQBwxWoUdimaq2SO
VlHUFOhqy5rYNwkMRPMDQPYcVtwAPG4dE94tdpQLYGdcQP3jD6EKfP6M0B8D
OGikqhEltODuAFoz80PBMDlxy6RcwCme78X+DPR2HBDoUIxmYe9sjUliuRHq
ALJPCsLYvsYRgf2En2IPCR7KO5yQrijr851nb1ZcBQBeiuQVVDgSdQBlQlAq
95+cnjXYi/PTE5ogKCcA+u++Yxekc7CDcBonc2rkXK4Np2kuwmWSgTKbTLns
cTnhiD5AdA1vSazHrg24QN3xLM5R7oIqagTI7YFYqGVNpIEHpRRoYawtPFNU
V0BcEhg8BO0muUEIArCa4e3IA7oNChKLo8zALRMhkT4QVTIGoNCzX6t9D7Ah
gQwkumF0OeMjQWmT01k0qJTwcezNC9tdSHW+1QhsEOyPZEq0vRE1BqqZTUH2
ARpTKA6K+iUvLxhNLiRJIAzczBN9gt4EM34Qti5bDSk6xWHaMEW8bA4UcsyF
SZBOQuJ9gzBEnQAJJl9YZI4KuznDH85iwsdPYZo08wRpDMEVhUBOWmEEoc93
lDn6IELZHpAWf0DjUAs48XhMmCCEX6QH35P5BDA/nXN7HrQLBA3bRuNqn5Gk
ZIDWRI8MNQwic6oN2lsCGLjZmq9n2YjNpgHpIlD0fDZAZJ7SwE5QrRdEMFuz
ZABjfZGcj8J4aiqpmvMSlktRyNCRmFK++bJJiV+iAWixtPLEiKQkxGsiQsFq
QHewo9G8MiMGJxrEgUvewUF4wptuvkNp4TxMCflOU1CkUMMX1i+x+5owwQCl
01T8DhIumU2uozSZiKGVxUyS/lAAhz14xXV9zhBCjnRirTM+2SAaknoCjFgN
I0lpAUR/GlNJDkF6nAD2hUg3afwkJ2QCG7lanjECBeGQLAZEKlKo6AHPgNeo
e86R4uE2vsaFkebiA5IJ6DcneFfAcdEwDdL+8ZvzC7Sc4192ckrfzw5/fnN0
dniA38+f7716pb7URInz56dvXh3ob7rm/unx8eHJAa8MT5n1qFY/3ntf5+JZ
/fT1xdHpyd6rupvAcrpKsg2IwDkpgDWLKD/Zf/1//093Axjf/wDO1+t2d4Hz
8R873e0N+IEYxnsDqWIufqLAUYPNhdxHGAh8b4r0LSMNIRslN4j7aYh49g+E
zK999mjgT7sbj8UDnLD1UMLMekgwKz8pVeZAdDxydKOgaT0vQNoe795767eE
u/Hw0Y8kczW7Oz8+rnEcQTWf1aX4JjVCrjgSNffUcuEeAZkpJqUVdi4iJtcK
lNxOlqxpFHKNlVuuYFW4HQok6JGHpptrSTagefWKNIsQ1c94zlmgFmi0NKJ0
AKomtm+KRDoD5iilXiGXIgflGFcYsZaucB8dSFnaEI0PBSErSQ5Y3WOXESph
1IwgeYzQZUAEA95xvcpDq8tQFuEcTOxoBJptb2SDKOc2I5CHojgv2gaE0S+Y
kVSCZkzURXCKcl9lnIBy6BljpkHI8aGwNp+a75tqCA3VsJcJCQQFh3//93+v
YR146azG/kBjOXdHwSxA4Jj/nT/h+5j4EX/A6vbYjEaodhoKJCCLTFEcEW0A
HFMoNU0mJnQM/dNcmCIuAZzIaiPbknZfxFOuPGELs0wIr1pWDckCnGmBV7Zg
dCz7rIv5K0OWnD3QLEZmfBJj2engd1gzMq5LMn84Id0eu3mAA1vrs3PgDD5n
14bVXXa/1H0Gg/lMa1gzDJuEMATyKJPINQ0tOR3VVRAhyEus4QfIdI2WCFv1
RpIr7GVGu8qqUtwIkbVfSNJHpHPKKLoWZxV6kVBxIxUW61ZuFpeIL3cKKQ7G
tje8HNx6a+nLekjStosMTOziyWVsk6wsQ5MNt4X82z8mUfxvv7KpN48TDy2G
5nCpBb/AzdPwksRMCWtqJ7c0g0ziBXuAyrGkCXOtIjZAYuJC1UYL9MU1sZmx
w/+Jc+2yH9g/amgI48JcW5k4m2L1I5S2ryIYsqXzNTmetGuzibP21AOBGLh5
mrVrGihtsa0ysqCkysPAzc6ovuSmMikxHD8P0OjTXKPiCIqEVMbQRsxhu/ar
xnRjlppyzqMwDpC4aGpL8imS3EASZt0oQj68BVE2t+uQHjsK/SuuNTfQGSnU
bNxICQmUuAuwoBOr+T4S1EktpJi9MXTaHxlqSkPS4ci84Vylm1EEKgztK44j
yxCrJduD9WUPXoK0eHSwJrdZnPjcjHQJ+jcs/0w4myxRbTBX8IK9L307epJC
jE7SFntzdpRxxERXKQhtWBpFuF6vmeVz2Dz0Er2n8FLPi28ygCVSYWm3t90F
MHw1FReWwgYSO9aiacpmYVszgEZAw2R3UTxzolaGmyOUd0+Mp347juvsAS42
OkvtBmle6AGGDQjS8u9ZMhFlyYjhLtyFwhTh4g+SVBQnluEojj5gKK5gQINi
rs3oQhIliZiIItE2oj2h7F+6JUlmM8m6ZG96JRQWSCHRkpeMTYEsOcRGQtJ/
omzE2UZDOzvRiBVoL+xiim8QfC4g4QBCD+ZtLCTs1zghcsSRJFPDLPnwiu1x
tnFuEYm3pi31teI9QIkS0MPCKXf9+FFWpC7edRLxbUNeNRzETQpSLPZLACOD
JNIH7o3DlZK++oy0HFjTxOI9Em2FGGkCDTYsmfnJUStoMGxyNNiR2CzM6pqb
RBM3N1lHgz7xJK/I3YQLYTDPNaO0N2w0mSL5ThzE1rJJGzzcntNgTrTwPCSb
gdjL4S0aPSXMiJnobhtlfLGlyBI+ECKrMLlyhaIZU4pOXkngsHi2kjyODG+I
drUJMcwEQ6MAJo3nEij4Pkb3rvAq8mmjYxP1I+UbsdFJ7Dlh3kSbr+WlaxR9
oIg1DzLhPkQfNkCGK4hTmB05rNjEsDlBA0AQ8nDCCw2jmMxZ3BbfYGHut9Ya
5TUXGjEOHn3KPtlWveBaukHR/Gw4GgQHwlnNxkSItOlf+AJ8TtJMoEScBlgd
D2HiwkUnjZYKURyNK38RQM5QyWmy0tseZRkS4gkL0xT3tZcireTkY7+APrWa
JihCxJXxEtYwhe3e1k0sBOQTFYpwg9thuYcoQ20nL3JJEQGwV9wfnNWhFEPk
wq4j6EOjgN4VY9L7VwyLtu9TwdMaAK7JZT5qDqM0Q6M5kXC0TICunOWwELA5
ExyaRZqkoIsBUp8/t2SLyFSFf6AIY3aO8RcgLr/YP19zt7W9s2m0Bcy8wQ5v
KcDjOiTeXmqz2+qUm+IxVNSSpWE09SLTbjwmZ6RwHXHPpBGjVK0nG/QUzS7k
YaMGhXezxQX9R/unB4fsyeGzo5Pzx3wL1klTLKiIP/U6vc1mB/7ttvBVvSbG
4ipM6j49k/pwt9VFhRfj+7KpJ7Td+iyd9LF+n6SGrA8yUn+S9bFm39UuKc0g
WA6jWxbhO3z191rNjklkdYoNPn19vvfuGXtwl5DZNeqBjDB+zscITbwLB334
+khFrAILJENwmOqY2JtLGQr7mGslUPFVhGFp7BFGI+ZJvxBt+7jGC+6ROyOD
go4gTvMj21kUtfm4WKkQAutqb1HIa6m9cuCrc4grBLqWmi7FfbpaXhLT+bhO
+FA0K9UP1Jbh5qcv2DnUkN49+Gs/mc7T6HKUswf+GsMtwuPSL9BQr7QdmH6G
6KdUFrJgY33uyVLhKhhx2kI0iBm1in5YtPSHgejvLLQ8S9gBWmswlk1EpcAT
MUGMmMyEBIashavEchIGE0a7KlLSHPW16SzNZh4JRpz1ZjNugRIkH5hbOMn4
/uUBYMJkSdDixP4svI4Qek/OD2ALUHngDTmOCMYCgxVCIjWy0fLl9DXo/pax
V+ElaHOvpbsNWGgoXNAwEip5IKzOHJQP5O7k/iIjWl0MuYlBpGsCkERNLWMd
/DbIIwHF47GBaJH7BT5/h0lwMQmeUCug7IfxkCRyjMQGJoVjRhEHvbQcE9OQ
T4BpAiqsoQ7T51Nib7KKsBE6TYQ4oD67+xkNbPJzTZwMWGKuLVlr/xxj7Te0
1X61qbbaUvsnrMJnwX1BLDx/zK1S36F1V2gZx1wwqtVOkaVK4aFgucQupDAo
7MPcTytVEqdpiStdKFXhVpMGVjbiyn5W8v8OpMtXB2+5FolsbyDdaE3J1ksi
w8urLFrCx+kI7BgCTTN8qSX9C8N+Iu4PRTDokjwWzoo6EXG1nGLCW9jdOSq3
WSk2haNYsTMlc2HsAPkQBbAWAZjxaM0BLZyCmtCnDIiBmoDHmPhbqVpoJY6i
Di1FVhVy6LI68JvMlsr8YmIGUEFAWpD3QZDaE+FGxByRTJPib0UxLV4Ew6FG
Y8OwOBqXjOEgK00Ug4iMjnAioRHFc3HZ90hFO5l7BBiANyTNjjcm/G1CEC4t
jw5k1sCRhiSBdiYeqOg4MguIchx+Ynke2CYgUWZNujVmwM7HPOZKIixFtTlD
KGghdECeyWgoYDPXXhdvRiDzpJYu1qYa04xJerBuqA1JuxDvQcXb6v6rzM1D
ExSGY9wCnWkgyl1r0SgMtlno43jvPcJZETSujOZcb8coCGFjdS4AV6ppA6Kp
juL+LO+lbFZFo5aaaLGjooFPTlvIMpmQ+jCwygQLt6bNaQa8H4HLGCdQOWGH
YYn2CMaHtzAyhUd1AxtbDLlrGbOKYR9RHMB+1FFVaJWwo/AsOkEV1DS5S52m
gvU4HFBVvxmhArh4+WRpOZY8mTYpBlJhYjEeUFsgTThzeOpQR2te1d1DsTEQ
Q+EZwb7ICU3rrdz87rMhDRFvoKOmlZOyGA9q1jdtKxQqKkzdjkXInUxoUfir
MIWuRtB50Ijl4UTrlncl4SegXMJrclLFEVpLPMVECJyFgIMFzAx5hgonJNEB
aJaWHQgVbhIVPK2cXGQftgO9W2Q6yfmZkBwVFXU4S5HFwmi4j1gWZzcy0FqF
e2AwBaedCplmKV8ITrcU/02mIoBOdV6MhOCBP2TJF/5QPqo+t3aUBg3S3MNm
M01Ui8L1bj/8nv0jCn6Vei1/FwXM+eEgt8ui8eTHFcvyMLdy6eqyTRAH7PIz
EPnWe3bZLBnmN0AzpGHnxwXtqrLD2Ls2BuMqm2TFFheWReWiNDlXWccSUz0X
fbFrctPTLBs18YioN1bRFP9U86PnsKq4ML8ar5m5Yq7nhh71o6PXOBqkoHOp
N6yF/8mfri+kO+CeMkMvUWsu7SMU7qSfa5VNZG4ejMmXe0f0gXhjbx4jcq5y
A9FxTD3K8j4qFLC2U+EdwF8tstpehcWPhH74TwGw5mPWBqY17Kv92pbf2rIs
b8I1zR8X4k8Je4yI26ywQYxXNnHQ5EE/EYPPJn2zXtMs8lB/bS36amHUP2vm
K/WHUOokAXF9hCevJLMHCi+Vg4YlPA9AWFzIRbg8WWCSUt7LKgU+PAwToNbF
48Ub0vEsGak5BlKUVvGRFB1mxRA9zis9Fb3slhaF48y7swewJSDLJxRNitJH
PlIhi1RHxjZqr6E3AAg3bFFeC1diWwvdIUCQC0lNiiPK4GhQCuNMRsn1ZRyw
0oTEbkFawzDSyCIoZoi/2E1rDRWiQ8EiQ649KRa9vG9OxEpjkKIYHT32Jlpc
kYKzl6mhK2FCkp8MnXWcKMZJcsXi6Cr8hvzfpHgmNVlGSxbJD1X8jX+Wc7kq
+UPQmjtIIdU1qmQRZ40VeR0nTGEq9xB6yIVMbDmynWK0AxcMFCrgGvI0ZQeJ
YFtf4wFiJfKrOG6bbBAXBGxSErvqkGwBhsVu6WhVaAp1HgVG92omavQLLSrn
piFOHw+xjoEIdcQdWD3Vep9psRMKPXlMaAvrtrnLdGujy4+iYbtWCEBmqDI6
zQCe5Z3xMB9UwgMVBWfafX0vTXk+A1RAeHyM0bIKgQE08VBBseJVlqS4wOAz
NCVNwht+lDPjsL1YtljEQERAnsYtXtZw/+LjulSC6+ZyrjA0MY5SxEhm2CQs
Xwb594Vcx0N5hYt32jQhVpcGIwxs4wdYs+VgFRE+CCnSnVwxUnY406Rk5NJD
Mrtq+t6Un2aJQgASnRsjk4IfRzSTIMr8RIafFJI5uLqnzfEdB80FRi4cRB4e
yyrCU8Q7UzlMDwMdUTmBzesbHcAPOU8FSvNwhLK8lXiHVRD9MAIWrJ3NM7/P
j6pZM28DTHxb5jNfW37SdoSC0uS6b8FRnoZWb+WDfs2g62YNm5sMkgSWdmKM
tqnjUVWjKn+MbJTZrSiHfd/Jlois7wlrTGktyL1WXhC5CBaGas+CA/5mSZyQ
nkh5/HiOPm/iIWIFYApNwGNfTUBleqVKj5IsLzBH2Ix5H5+rQln4cUapT3hC
sh9lk3T4JEyFul0GHm9uMQRlTUlXjIE8ApkPF1x4md5MULThgCWPY9mEa8TB
J2g8KtrbHVySDH9BWY30zDD0ErqsuQ+j4BnMSRamZOPSAWpyblSoxX0BFCMn
cCUaIxHwSDj3PXmg30mLBKmW9KMQXW5hFJqc5WEvZZEX4q5gwfbZ6lmuwsvI
Ap3NRGIRo1yKSaqAaJN90tBQeOYcwnUBRDznqg94iEDnGM/Ko2Sdy+GL0FxO
7smmyRedOGiDCx7CHdtADR3lXGHkF0kqKEKwIFtYfjpxmKNBOgSQ/HhujNG2
RYvjt3ykFKanFjLKTUqsA5wWElPNwBYyr9V4exA4VFVuXk4WsDyDshwJlx00
VWaSpk1E0eq5PnEmGRielZY8LBo60VTEG3LmRnEgi6O2pqvHbE3/lIitaVW8
FgFIBWzxjcpH4mB6IgJB1EXWuMALv9vd3eqbyJSxA64pk1PebHaoQ5bOqVdx
MBbzr2AmCfaGzkrbMrFw19uDrpRU7KEj8/5XG7orWs8VV1c56q8Le3AMRm2s
JsidhbW/XTCQne3dbt/oS52DY4dSaq8AgU09CiDgLGpBv+/h05d9oEgqVzCM
1ewdypWOvrmPV/wLxisuDy2c34cW3ocW/rcPLcxu+2U9sV6S/OtisCR3ldiR
CD9crPOIQ9SO+cJcCofnC9YY8dOkzyaLrYoAkOGAn+Vkpf5er1Tg66rNh1Bq
sTZvl72bNl+vXnzNDRHFrTlbMgYZWMhxoSRU0cTVBORWI1OXW6dChVGJqgJS
tLxV0rG11sLOoBd16M1igOwQJO2wvnCtz5dbfzA4VPFlVdPiz/biusIzTduq
YVkF/elYrILKhXY0yXJ6iftkySlxFWMpHTaaROB0xsW2I9k2T1cWkTfOdSav
u7spbFU89AUpQCaiaLXmVjas2GE5VWtdygFhm7qQ4cuRFrPBV9iSgr5dAWj7
19iTHrPvv0dXQf/779EhJFVat02jgWf06Yg2TwDlFQJVOQf6Tff2G8dt6dg0
zBS/CSpDk/hNuTK5kgsrgKmHZJQewV3DIJKwNG1TVUAxvCUIILRHQcHx1HS2
LDBZOZ1Gd7My0YhU7YKd6aIKdww8dYYQqnx2VvRYgXSXgFKKKSYjkkp9qHyf
RMMWRDpl3IQyJumLzPtkNJEp2gwu0uS7kvNqmayTt+86LfoNI72UIYzSulUC
osHC26U7WVl8+Dxk4ro7+7RdNp3yobWlw5D5njQtVPSPsgfpwGk58ZXOslVR
ImEl2YZ/VSfbqqout5qsesatqgfTglKfRwG+oWclFdpqwdZn61Hglvf+8z/+
lzBCbLI99hQB9pTyrGshz+Ji//kf//venCB7/S+iwltXO5gfrRobVzksVbe/
Vn0naDhFvC87wWdQDz0eHdNeJCOqyNeq3/S5qw5On2+kiNPnG2nj9PkmKjl9
vpVeTp+7Kef0+TYaOseku6vpyGjKmlpRQS8dO/s2pLJKNXfI3X+2eu5UiHio
gi38EWAtgWsQJ/4VF+dsVQiG3aLVNdxxdgLPlZOYmhImPxf2pcqhVNr2JoAX
gi388d0hcAX1+7OVec144VLq8FoYUOoAH8cUo4LzxJigkjoThF5shdUtOqpm
ilkq5IUggyfe9H0UJknhR8XMI0c8XDgr+nSbshM1M9xjlakE2TjoG0UdyFed
oVDinBPp8Lwqana6bXXix3E+1RZ8DXYmENPKVoTXqlDmpCiXGqFK8mck1/sa
8V+GlzmEeWNGDygVRjH9Ed33EBUSz8hkPZu4kAZurRlRr0o3MLZlQ3lyJ9fJ
1d3UBDzw5Ah3FVnpjbBXdU1JdYY0oa41KtQ6ocwZapuhYvDFyt1oKmaqlgFE
lFw4yedidQvZb0oarMpsmPMLXFbSjTy9B40VNY4BVpzd46djrIPSd0vv0dTd
oT600exsNdc7yzN9GPXk3nTpQ6zoSGYrZ//QHcjdpNSh6VjqNWUVQMFRUQxZ
TVf6zP98U0Ge2bI8+xpxnt1BomeGUL9ABv9CJ9pSV98XOvuWuee+MqHIkpQi
d0oqIqt8Q91ECAaGuF7e/NkinWTjXie510m+SCdhtloi6L0mlm40d/oQeVu2
NeUbGHaYos8rCoOrqSJ3FQsrxeahRa1K4mDxrqMo17Ny5v04R8EHdY99caLW
jMc3JT26lYn6cB0MKgXnpyGJMjIzink3jKQY7kxqzHERiztnsp1mrWHmSaM+
jGRnIgOrmKpvTZWnF4zknVgKp3gIHKKydWWRyMt/UTwuBBtuWsxmJ1fDEDjN
jLaWhoTJFen0gY/XI2hPgscT3sIoMXGICj0WiTN5blvYekrCV2oOnnISnWY+
hhHK7S3XqAWbYozX7MbzBl3JYA6XhoaLSJM2rluUPip9lYu+nw5J7uWIMorO
UIKm+6BUOZX6ROjGOsF2QwCOll+AzpDV5V0x+pY+vXwtdsor4MlSQEuMISYO
RI5leUmM3hV5YlyCwVTBB175igw650Zcje7KGOE1PnQtlnlXDoXCkipgCXR4
W9YElBe6R4eroMwLOLJj5etQ9Ndgod9aw0wOWr2KrjGgDlbESE+KQygc33HH
bVrXCKgLqqx7YjLr9pYWcGHKt5rTRQUN88APv1KHwxFkFHHdl4YvIp+tfxVH
r45HVY9WJnRWN+4E1oUy+poZcaGMulKRX4SJV+8R3qMz+vXLI+MOJcpyopU0
cWcObIxmMmwOcPCWfIE+raCpNyFMm9LdZoVUmnQ5w9HeyV6JaKItBpkz5mM8
4+ms58Xrt3iaa36DlHnkgPJQC4WxXmqlLlJUb+3sfP6sXLVQp8/ums6wxmSr
KPPsc7WhTzA9Ojx/hn5d6LnPTtp7f6fRoBWG3/YG/dH2n9DYlG4lTsfdaUzT
f7kRLYkb+BcZoZYWmqCI/mnjss0G7ARTCqyIyGa6T4XQxcayusz3Lrg43klt
YDa/krsCfdVgvwj5uUbe15JbzZAk+0rMNdfHHM30K8YyrRiJClK/21CWYOyd
wbSgLTlU4Qy++zidxpsvGWRpA6ih8Z+V45IofX500ESTVK1GNDzKjE0BHEui
tThdWG8Bha9zG5ZFnWVbRRKN150rRMb3sDUv0VKHqD5NognuzycHxqss+gSD
7XVqpuK1YAPYM2zmSXMgD7LZw7XT4ajUa08waAJZGJ5R1yciz+HvLMPTcCji
TJpCx9auoMgqr9NoQ9svvGuPtGrjMt1cG54uQZqcDdBY0s5hsdIka/swLGNS
j6XEa48J72WiK/OkI8U6bm3fqcpzPdAMi6KuuKkELf6kSwbhmLKNk7Ahji3R
onZ7Pfbc8688EGVBtkRLG8nSE3XHeXgLAi2dJspUckIlMHM5w4SelfuY7bGX
3vDKk5ewsEGaXNE9yEY7nrpvqjS2dT025kU88XfOz2CBbIpLRKOQGYjCIRoe
MhmByDACkctOBSjfZd2ucALWwtX4NeEDGBpilc7w12KHRkK/vbL1/UAl5Cin
n/yjz88qhsEPIhLzM6Wmt9ad/Hac8xRza0gzPN28SChEtxfwyxr4Pex4qyvd
Z0syLwc4Gr3HNDtAfC+Q19qJ3G2Z0Tdqh/oeIRAy5QWxZuYvvNyNUk2MwyCi
a/vw+DgufRrCMIWB92YU5SJwRxyQo4xycShGRHfAcAz385nlKxKuA64naI2K
H8gHxu6G4ytHFq0CA5e8oFFOlAr4qy+M5Ik0aOh4MaTYbQ73Ya+3rsjiox+B
tku70w/1bqtTVwaAH+pvLp42d+o/Pq49Uo1nDCpMsh+WW+91lTo3zOpGtKH2
EVLXx8+iS1jf/BA37STMu4/a9FiXIgMPddyPQJGLhvmSAUChZjSkPFF12yws
6vdD0dl+Nvb84FEbixo9ko7YzIgSP55NH7WtB7oc6qBmMfO3LoUHK5uoDF2G
j7m5rdfsrF90u/1er78BUN/pPux0+p3Oo7ZZVDcQITyD8PYxwEZ916+no3nW
9IIA0CN73PH71FZ/fbsfbFGj1ntdDXTmMHjc7cjPozZ/YpRAwoRmocyG4iM6
t4jne2ewKymqtDgx6H9HTspR2m4OQJv4eZhnj3e6m9swR/W7VG6GBimA0fQK
3u5uUFnrWakGEHcv0O87VKXwsFSJrgctVio8LFXCeXppIIurn6WCdN2DLCZ+
OGaKUfcUL58nsnDhoV2JNGoBx931rXXAR/2kXNQCW6+zy4svACa+LkPT8bRc
rQxPx9NyNROi1u9yUQ1T45dG5XYRlxGciiAZPzJhk629UQmmqk7J3yCjj2NT
jOF5gRN1LoQbiMLrKMGUsTZhtAz8g7lO0Rqp49c8AwlxOlXQSKumfLOqTUu+
VxH+Kwaqip76S5qzzvW6z/Qak7TjQYdfdyL1s/MI3p48G17sm8Qwo2H0u6Rj
6U42g7PqFJ3V7TQ7OwsO0hzh9bkUpiCqCQFKrrY8qx4EhWzARsck2tjjbOnD
U/o8UTQ01sGKxnIuzzcLzNJpgrBqYR4qMkoKG5ZBsxAiVdNxL1qosc+ZqKzQ
mQlHSzgtrqmAsUg84/S0Cmk9TRKV0zdMXWdUdLM1ngjlhlmPWOmpne/xn/I9
PtP0yExqpYrQuqiPMN7OAcdVuVarZfVJW8u9GX9c7QBMAfaSkphgR3pVEVYi
/ANennv+SGf4JrAaC6IgjAWm/LJHERST40VEIql4Bc7wW5kNUz6/dpd75Ex0
oFQLFQvOD+LkS4b3AFcpYHUnRPXt06iK8Nvip/xeuaJhDfjLdJb/fxWhrZ1v
tLcqBZeMsZOcnSU3J7+Hz7rZk2dB/P7T0czrvd3cO/cud+PR3vWn+dPXm89f
dyanJ97Hi7Pbl+Pzj8BbD863pMv5519enL98uHkSTNNPP394Nez8nD3P96Le
9PbTYHbw4mC+e/UhmXdfXFyfeC/Gx7fPLl4F442rfHb5ww9FRmyO9l5ruNca
7rUGs+C91vCvrzVcVB8wpbTIWeESxCXR2eoY3LI0h6U0WkY6fpF+KRoL4xem
WHTk1BI1+rW7MTaVHmlVtlZM3SQAq9OtFYgCUKTeZmt348OjtlGGV3JzwTuk
KOLtLGODn+YvnkyvJ9NPR+2LKE1/96/29nq7H7d+HnPpbba59Wrnw+jNL7+M
Zp2XT/2Xo+7H87Ont72bZ2ft+cPby5fR5dvn7yN/f3s4bXf24ufnv7yLXj7p
ZZoJljifXBiTZGNKae5+X32+Mhd1vUgskIp3kTcERTotkwo1y2MwaI1i2mRx
/HKxprpp93sqs5IMUKr1DWWC4mc1GaE0ohVlhlK9lWSIUq2vlSlKDS6WMUrF
v0zmKDWzVAYp16iQSUoFv62MUobXajKLq97dZBhXC3eWaVyN3FnGcTWykszj
qrhUBnJVurNMVGpkdRnJWfWuMpOzkbvLUM5m7i5TOZtZTcZyVl0sc5WqlGSw
cokFDMPSLolRFZhdexG3A4qkWa6UAHUxkEiE9GOIf/koSl3pRYzg1ahwwDCS
EYY0DjoS50j0ItK3NCjBqs5hafsF5SGChkhlL2wYdCE3Jh7J3Bd0rG7GKCab
uJMcYlUnhsoZuZefwcxwzpqFSwGoyU8VPlaAlw+wjLTEirWhZSJ63e0CvabF
letmWDsf02Up4TjJoITxGFtsm01alc659Wwo6nKLf+W1b+WWxcmgx4vO3vBJ
YqnaF4q3C/NJYKvLhN13w+HD4fFgeLI/evnm/YfN3puL0yfjvfj966fhBtS/
jj+cvpp/CN919t9st3uns/wgPN5/1tt5OF5Px5s7v3989fvLgT8LX756+nHn
49MXg43x9ev3D38mUbco6KpV5olj2DeVLO+tR/fWo3vr0b316F/SemT/1sKJ
5nOcJGKhAtMV0sbTaIIR+w1xxTH3UszwjJv7Uk5bpuDyQQRMPp0mKpaveIxA
MSB9OpGClXX4p9m9dijLhDv8OIy+dmXZMWJ5AaBHYX1ceBHRS3bOhC+PYfpy
ruIQPzmLwJjXVZmzHTjrahNbM7x6PziK1JearMLJ+pPx7t6HZP7LLMynycWT
7c75pw8fX769DWeOFk+P33V2d7Pxw5Nfzj/uDycfn7wc/hLOPh6cHF7NDtOH
h51for0s2d3ZGg72nv+8/3yw9+L4dHTzww/3zPae2d4zW6vgPbP9F2O2rgCv
775jL85PT/6M0FyKgcaYkGURuuT+wVGwLEwjddJW8DaM6akXmJAZFdQXUT86
pAEe/UPARJ/mriO5hTf1IiGuN3QZoqVQxk1AzZImqcQas6n51qCQ5ZcG9cOX
C2mlWU/SRKjUNR6bdA/bK5FGsw2ifdiAoofmS4U8CqjiTZm2OUauiaHRI62L
2J1QBylf8aW5F6HI7kaxgL3voEinWMLeYq4Sck+53vFt5HpjE6JSCU14cGpI
jEqvC5MDAlQqsmR6ZRLiLFI5QU0o8JV6IzILiL8Yy4Xhavzkjpn5tCruc4Uo
JLxsU7pg7xB3VF/T1/Iq368RPFeMkRPBcDLCNJ6reH95QB0PFYqoIHG0h0JW
pVlwQWTTPfGRm+Ge+NwTnz+L+DQKe8gdsOcO6Kv3RVtLtcEV4vi+KpCvLmjo
8iAYTt7wnHQWoxYOE0uKMTF2+vm6SSx1gpVC0kBNrQrxJcaFE4pi6TgSfAj7
qbve7Paave4FbqMu7KQPYivpazr1zqzbcRV9w0Vk7V9MvIw7vmtSjbK3qbjn
q0kuN1wUyhcJcOElFViBBKuyK5NiVWMhSdbbYQFpVoW+kERrSDhJtXp9F5Kt
Ki0i3bpQFQlXJb6GlOv5LSDpZqGFpN0suJgGmiUXk0KzZBVFNMu4Sb89hUUs
QJVczAqsYotZglV0RbAsZxFW0aWAqWAZ8vO5tuj3rzXXG5vdfJbsphQJ1y+x
laVMJXp5+PLVzy9fXHR7r7KTy9t8510cHx5tbYIETS0ctsfdXpDuD+OHN6Pt
i62uf/F+9PRZcBj+srO3+bRzPX7z7uz0Qzj42H779ml48+ZD+Pb9sw9PTn/W
HOWv7VY3uFLJL+vKuaw4FFFs5E0G9Y+9wcXRgaShBn/yfKpaz5Jh5LUuvdSP
PEyfmkxa0xReInoW/MyyurozhBq4GM3Yi1nMujsMqNFGr9/ZYvuH5xeUJK7A
EbkLnxXZ4mJdgZdz6Av4KXC1FZlW3TQG9+/EvZZzrqVc62s41gJudWdOtZRL
LeZQX82dlnKmlbjSahxpNW60jBMt5kKrcaAVuM+KnGdFrrMix1nKbRZxGpOr
6O+Su7j4yKKQE5OvsBUZyziZtv3tm2P/97NxdP767Xxr82n7ZOu01w0yni/1
6vdnP/9+dHAWfRrN1t8d30S7L8KHb98MN7OPN/Ho/Obn/eB6c7Y9PvvF23od
7Aaj/ZvgNjjb3yswlr+iB7XoPFXNru46bajkjymoaWO830NkpMN8HDIteKvX
Wi+kBl/RNERcoWgcYtXWIbbEPFQm8ezuxiK20FpUfmtSdvZF9iK2wGDEVrMY
seUmI7bcZuQY/nKjEVvBasRWMBux5XYjVxFFvlwvBelyvSpQ7VIRg2SzlYxH
bCXrkbOfZdO0yLTzrTHRJRakn2whqxBDQDLEErJ73D64XX/+1t949mq3+/t4
9mZz8u7SH5++fv12unf26sXVu2Tz5ubn99fPnr6Yvjz+5eLq9718L3093bne
Oo+7Hw66H59H45fHo73k+avj529vn+SpLyiuPhUuc4DtPzk9c7ve9sybC3gu
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
tjc7a63a/wNKmGrxpAoBAA==

-->

</rfc>
