<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-olden-ippm-qoo-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.3 -->
  <front>
    <title abbrev="QoO">Quality of Outcome</title>
    <seriesInfo name="Internet-Draft" value="draft-olden-ippm-qoo-00"/>
    <author fullname="Magnus Olden">
      <organization>Domos</organization>
      <address>
        <postal>
          <street>Gaustadalléen 21</street>
          <code>0349</code>
          <country>NORWAY</country>
        </postal>
        <email>magnus@domos.no</email>
      </address>
    </author>
    <author fullname="Bjør Ivar Teigen">
      <organization>Domos</organization>
      <address>
        <postal>
          <street>Gaustadalléen 21</street>
          <code>0349</code>
          <country>NORWAY</country>
        </postal>
        <email>bjorn@domos.no</email>
      </address>
    </author>
    <date year="2023" month="February" day="03"/>
    <area>Transport</area>
    <workgroup>IP Performance Measurement</workgroup>
    <keyword>Quality Attenuation</keyword>
    <keyword>Application Outcomes</keyword>
    <keyword>Quality of Outcome</keyword>
    <keyword>Performance monitoring</keyword>
    <keyword>Network quality</keyword>
    <abstract>
      <t>This document describes a new network quality framework named Quality of Outcome (QoO). The QoO framework is unique among network quality frameworks in satisfying all the requirements layed out in "Requirements for a Network Quality Framework Useful for Applications, Users and Operators".</t>
      <t>The framework proposes a way of sampling network quality, setting network quality requirements and a formula for calculating the probability for the sampled network to satisfy network requirements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://domoslabs.github.io/QoOID/draft-olden-ippm-qoo.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-olden-ippm-qoo/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        IP Performance Measurement Working Group mailing list (<eref target="mailto:ippm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ippm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ippm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/domoslabs/QoOID"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>"Requirements for a Network Quality Framework Useful for Applications, Users and Operators" <xref target="draft-teigen-ippm-app-quality-metric-reqs"/> describes a set of requirements for a network quality framework. This document explores how the quality attenuation metric and framework <xref target="TR-452.1"/> can be extended to meet the full set of requirements.</t>
      <t>Quality attenuation is a network quality metric that meets the most of the criterias set out in the requirements; it can capture the probability of a network satisfying application requirements, it is composable, and it can be compared to a variety of application requirements. The part that is yet missing is how to present quality attenuation results to end-users and application developers in an understandable way. We believe a per-application, per application-type, or per-SLA approach is appropriate here. The challenge lies in specifying how to simplify enough without losing too much in terms of precision and accuracy.</t>
      <t>We believe the probabilistic approach is key as the network stack and applications network quality adaptation can be highly complex. Applications and the underlying networking protocols makes separate optimizations based on their perceived network quality over time and saying something about an outcome with absolute certainty will be practically impossible. We can however make educated guesses on the probability of outcomes.</t>
      <t>We propose representing network quality as minimum required throughput and set of latency percentiles. Application developers, regulatory bodies and other interested parties can describe network requirements in the same manner. We propose a formula for a distance measure between perfect and useless quality. This distance measure can, with some assumptions, calculate something that can be simplified into statements such as "A Video Conference has a 93% chance of being lag free on this network" all while making it possible to use the framework both for end-to-end test and analysis from within the network.</t>
      <t>The work proposes a minimum viable framework, and often trades precision for simplicity. The justification for this is to ensure adoption and usability in many different contexts such as active testing from applications and monitoring from network equipment. To counter the loss of precision, we require some parameters that allow for analysis of the precision.</t>
    </section>
    <section anchor="background">
      <name>Background</name>
      <t>The foundation of the framework is Quality Attenuation <xref target="TR-452.1"/>. This work will not go into detail about how to measure Quality Attenuation, but some relevant techniques are:</t>
      <ul spacing="normal">
        <li>Active probing with TWAMP Light / STAMP / IRTT</li>
        <li>Varying Latency Under Load Tests</li>
        <li>Varying Speed Tests with latency measures</li>
        <li>Simulating real traffic</li>
        <li>End-to-end measurements of real traffic</li>
        <li>TCP SYN ACK / DNS Lookup RTT Capture</li>
        <li>Estimation</li>
      </ul>
      <t>Quality Attenuation represents quality measurements as distributions. Using Latency distributions to measure network quality is nothing new and has been proposed by various researchers/practitioners. The novelty of the Quality Attenuation metric is to view packet Loss as infinite (or too late to be of use e.g. &gt; 3 seconds) latency <xref target="TR-452.1"/>.</t>
      <t>Latency Distributions can be gathered via both passive monitoring and active testing. The active testing can use any type of IP traffic. It is OSI Layer and network technology independent, meaning it can be gathered in an end-user application, within some network equipment, or anywhere in between.</t>
      <t>A key assumption behind the choice of latency distribution is that different applications and application categories fail at different points of the latency distribution. Some applications, typically downloads, have lenient latency requirements. Video Conferences typically are sensitive to high 90th percentile latency and to the difference between the 90th and the 99th percentile. Online gaming typically have a low tolerance for high 99th percentile latency. All applications require some level of throughput and packet loss rate. A network quality metric that aims to generalize network quality must take the latency distribution, throughput, and packet loss into consideration.</t>
      <t>Two distributions can be composed using convolution <xref target="TR-452.1"/>.</t>
    </section>
    <section anchor="sampling-requirements">
      <name>Sampling requirements</name>
      <t>To reach the design goal of being useful in the contexts laid out in "Requirements for a Network Quality Framework Useful for Applications, Users and Operators" <xref target="draft-teigen-ippm-app-quality-metric-reqs"/>, this work imposes no requirement on the time period or the network loading situation. This choice has pros and cons. Latency under load is extremely important, but average or median latency has a role too. However, a network quality metric that does not take latency under load into account is bound to fail at predicting application outcome.</t>
      <t>This framework only requires a latency distribution. If the sampling is done while the network is loaded, latency under load will be part of the distribution, which is encouraged, but is not always possible, for example when passively monitoring the latency of real traffic.</t>
      <t>It takes quite a few samples to have a statistically significant distribution. Modeling a distribution may be a challenging software engineering task, hence we need to sample the latency distribution at certain percentiles. A list of 10 percentiles in a logarithmic-esque fashion has already been suggested in industry [0th, 10th, 25th, 50th, 75th, 90th, 95th, 99th, 99.9th, 100th] and seems adequate. We propose to define a shared set of percentile values to report.</t>
      <t>The framework is flexible when it comes to the direction of traffic that is being sampled, but does require that it is noted whether the latency distribution is measured one-way or two-way. The framework does not require an explicit bandwidth measurement, but does require a note on the maximal observed throughput in the time period.</t>
      <t>By not requiring a specific number of samples, this framework allows taking 10 samples and calling it a distribution, which of course is not ideal. On the other hand, making the framework overly complex and difficult to adhere to using real-world equipment and applications is the best way to ensure that this framework goes unused. Constraints will vary for different network equipment and applications.</t>
      <t>To make sure we can trust measurements from others and analyze their precision, we require:</t>
      <ul spacing="normal">
        <li>Timestamp of first sample</li>
        <li>Duration of the sampling period</li>
        <li>Number of samples</li>
        <li>
          <t>Type of measurement:  </t>
          <ul spacing="normal">
            <li>Cyclic (a sample every Nth ms) - Specify N</li>
            <li>Bursts (X samples every Nth ms) - Specify X and N</li>
            <li>Passive (observing traffic and therefore unevenly sampled)</li>
          </ul>
        </li>
      </ul>
      <t>By requiring the report of these variables, we ensure that the network measurements can be analyzed for precision and confidence.</t>
    </section>
    <section anchor="describing-network-requirements">
      <name>Describing Network Requirements</name>
      <t>This work builds upon the work already proposed in the Broadband Forum standard called Quality of Experience Delivered (QED/TR-452) <xref target="TR-452.1"/>. In essence, it describes network requirements as a list of percentile and latency requirement tuples. In  words, a network requirement may be expressed as: The network requirement for this app quality level/app/app category/SLA is "at 4 Mbps, 90% of packets needs to arrive within 100 ms, 100% of packets needs to arrive within 200ms". This list can be as simple as "100% of packets need to arrive within 200ms" or as long as you would like. For the sake of simplicity, the requirements percentiles must match one or more of the percentiles defined in the measurements,  i.e., one can set requirements at the  [0th, 10th, 25th, 50th, 75th, 90th, 95th, 99th, 99.9th, 100th] percentiles. The last specified percentile marks the acceptable packet loss. I.e. if the 99th percentile is 100, and the 99.9th or 100th percentile is not, 1% packet loss (100-99) is inferred.</t>
      <t>Applications do of course have throughput requirements. With classical TCP and typical UDP flows, latency and packet loss would be enough, as they are bound to create some latency or packet loss when ramping up throughput if subsequently they become hindered by insufficient bandwidth. However, we cannot always rely on monitoring latency exclusively, as low bandwidth may give poor application outcomes without necessarily inducing a lot of latency. Therefore, the network requirements should include a minimum bandwidth requirement.</t>
      <t>Whether the requirements are one-way or two-way must be specified.</t>
      <t>Until now, network requirements and measurements are what is already standardized in BBF TR-452 (aka QED) framework <xref target="TR-452.1"/>. The novel part of this work is what comes next. A method for going from Network Requirements and Network Measurements to probabilities of outcomes, or Quality of Outcomes if you will.</t>
      <t>To do that we need to make articulating the network requirements a little bit more complicated. A key design goal was to have a distance measure between perfect and useless, and have a way of quantifying what is 'better'.</t>
      <t>We extend the requirements to include the quality required for perfection and a quality threshold beyond which the application is considered useless.</t>
      <t>Network Requirements for Perfection (NRP), for example: At 4 Mbps,  99% of packets need to arrive within 100ms, 99.9% within 200ms (implying that 0.1% packet loss is acceptable) for the outcome to be perfect.
Network Requirement points of uselessness (NRPoU): If 99% of the packets have not arrived after 200ms, or 99.9% within 300ms, the outcome will be useless.</t>
      <t>Where the NRPoU percentiles and NRP are a required pair. I.e., if the 99.9th percentile is part of the point of uselessness then the  network requirements must also include the 99.9th percentile.</t>
    </section>
    <section anchor="calculating-quality-of-outcome-qoo">
      <name>Calculating Quality of Outcome (QoO)</name>
      <t>At this point we have everything we need to calculate the quality of the application outcome. The QoO. There are 3 scenarios:</t>
      <ol spacing="normal" type="1"><li>The network meets all the requirements for perfection. There is a 100% chance that the application is not lagging because of the network</li>
        <li>The network does meet one of the criteria of uselessness, including bandwidth. There is a 0% chance that the application will work because of the network</li>
        <li>The network does not meet NRP but is not beyond NRPoU.</li>
      </ol>
      <t>1 and 2 require nothing more from the framework. For 3, we will now specify the calculation between to translate these distances to a 0 to 100 measure. We use the percentile pair where the measured latency is the closest to the NRPoU as the application is only as good as its weakest link.</t>
      <t>Mathematically:
 QoO = min(ML, NRP, NRPoU) = (1-(ML-NRP)/(NRPoU-NRP)) * 100)</t>
      <t>Essentially, where on the relative distance between Network Requirement for Perfection (NRP) and Network Requirement Point of Uselessness (NRPoU) the Measured Latency (ML) lands, normalized to a percentage.</t>
      <t>Where:
NRP is network requirements for perfection. With minimum throughput and with percentiles and milliseconds
NRPoU is the points of uselessness. With percentiles and milliseconds
i is the length of NRP / NRPoU latency per percentile requirements
ML is Measured Latency in percentiles and milliseconds</t>
      <section anchor="example-requirements-and-measured-latency">
        <name>Example requirements and measured latency:</name>
        <t>NRP: 4 Mbps {99,250},{99.9,350}
NRPoU:  {99,400},{99.9,401}
Measured Latency: .... 99p = 350ms, 99.9p = 352ms
Measured Minumum bandwidth: 32 Mbps / 28Mbps</t>
        <t>Then the QoO is defined:
QoO = Min(  ((1-(350 - 250)/(400-250))<em>100),((1-(352 - 350)/(401-350))</em>100))
= Min (33.33,96.08) = 33.33</t>
        <t>In this example, we would say:
This application/SLA/application category has a 33% chance of being lag-free on this network</t>
      </section>
    </section>
    <section anchor="how-to-find-network-requirements">
      <name>How to find network requirements</name>
      <t>A key advantage of having a measurement that stretches between perfect and useless, as opposed to having a binary (Good/Bad) or other low resolution (Superbad/Bad/OK/Great/Supergreat) metrics, is that we have some leeway. The leeway is useful, for instance: a lower than 20% chance of lag free experience is intuitively not good and a greater than 90% chance of lag free experience is intuitively good -  meaning we don't have to find perfection for making the QoO metric useful.</t>
      <t>Nevertheless we have to find some points for uselessness and perfection. There is no strict definition of when the network is so bad that the application is useless. For perfect, we may have a definition for some apps, but for apps like web browsing and gaming, lower latency is simply better. But to assist those who wish to make a requirement, we can say that if the end-user experience does not change when reducing the latency, the network quality is sufficient for the Network Requirements for Perfection (NRP) .</t>
      <t>Someone who wishes to make a network requirement for an application in the simplest possible way, should do something along these lines.</t>
      <ul spacing="normal">
        <li>Simulate increasing levels of latency</li>
        <li>Observe the application and note the threshold where the application stops working perfectly</li>
        <li>Observe the application and note the threshold where the application stops being useful at all</li>
      </ul>
      <t>Someone who wishes to find sophisticated network requirements might proceed in this way</t>
      <ul spacing="normal">
        <li>Set thresholds for acceptable fps, animation fluidity, i/o latency (voice, video, actions), or other metrics capturing outcomes that directly affects the user experience</li>
        <li>Create a tool for measuring these user-facing metrics</li>
        <li>Simulate varying latency distribution with increasing levels of latency while measuring the user facing metrics.</li>
      </ul>
      <t>A QoO score at 94 can be communicated as "Johns iPhone has a 94% chance of lag-free Video Conferencing", however, this does not mean that at any point of time there is a 6% chance of lag. It means there is a 6% chance of experiencing lag during the entire session/time-period, and the network requirements should be adjusted accordingly.</t>
      <t>The reason for making the QoO metric for a session or time-period is to make it understandable for an end-user, an end-user should not have to relate to the time period the metric is for.</t>
      <section anchor="an-example">
        <name>An example</name>
        <t>Microsofts own video-conferencing service requirements for Teams can be translated into the QoO Framework. For best performance for video meetings they specify 4/4 Mbps, 100 ms latency, &lt;1% packet loss, and &lt;30 ms jitter. This can be translated to an NRP (if we take some liberties with interpreting their jitter score):</t>
        <t>NRP Microsoft Teams:
At minimum 4/4 Mbps.
{0p=70ms,99p=100ms}</t>
        <t>For minimum requirements Microsoft does not specify anything, but at 500ms latency or 1000ms 99p latency, a video conference is very unlikely to work in a remotely satisfactory way.</t>
        <t>NRPoU
{0p=500,99p=1000ms}</t>
        <t>Of course, it is possible to specify network requirements for Teams with multiple NRP/NRPoU, for different quality levels or one/two way video and so on. Then one can calculate the QoO at each level.</t>
      </section>
    </section>
    <section anchor="known-weaknesses-and-open-questions">
      <name>Known Weaknesses and open questions</name>
      <t>We have described a way of simplifying how the network requirements of applications can be compared to quality attenuation measurements. The simplification introduces several artifacts that may or may not be significant. If new information emerge that indicate other tradeoffs are more fit for our purpose, we should switch before this Internet Draft moves further. In this section we discuss some known limitations.</t>
      <section anchor="missing-temporal-information-in-distributions">
        <name>Missing Temporal Information in Distributions.</name>
        <t>These two latency series: 1,200,1,200,1,200,1,200,1,200 and 1,1,1,1,1,200,200,200,200,200 Will have identical distributions, but may have different application performance. Ignoring this information is a tradeoff between simplicity and precision. To capture all information necessary to perfectly capture outcomes we are getting into extreme computational complexity. As an application's performance is bound by how the developers change to varying network performance, meaning nearly all different series of latencies may have different application outcomes.</t>
      </section>
      <section anchor="subsampling-the-real-distribution">
        <name>Subsampling the real distribution</name>
        <t>Additionally, we cannot capture latency on every packet that is sent. We can probe and sample, but there will always be unknowns. We are now in the realm of probability. Perfection is impossible, but instead of denying this,  we should embrace it, which is why talking about the probability of outcomes is the way forward.</t>
      </section>
      <section anchor="assuming-linear-relationship-between-perfect-and-useless-and-that-it-is-not-really-a-probability">
        <name>Assuming Linear Relationship between Perfect and useless (and that it is not really a probability)</name>
        <t>One can conjure up scenarios where 50ms latency is actually worse than 51ms latency as developers may have chosen 50ms as the threshold for changing quality, and the threshold may be imperfect. Taking these scenarios into account would add another magnitude of complexity to determining network requirements and finding a distance measure (between requirement and actual measured capability).</t>
      </section>
      <section anchor="binary-bandwidth-threshold">
        <name>Binary Bandwidth threshold</name>
        <t>Choosing this is to reduce complexity, but we do acknowledge that the applications are not that simple. The defence for this trade off is that insufficient bandwidth will cause queues and therefore latency, and it should be possible to see this. Additionally, network requirements can be set up per quality level (resolution, fps etc.) for the application. However, having too many network requirements also increases the complexity for users of the framework, and it is still unclear if this is the optimal tradeoff.</t>
      </section>
      <section anchor="low-resolution-on-packet-loss">
        <name>Low resolution on Packet Loss</name>
        <t>To ensure simplicity, packet loss is described as infinite latency and the resolution will be bound to the percentiles we chose to sample. There is a good argument that some applications need higher resolution on packet loss for sufficiently describing application outcomes. If this good evidence is presented for this, packet loss should be measured separately and added to the QoO formula.</t>
      </section>
      <section anchor="arbitrary-selection-of-percentiles">
        <name>Arbitrary selection of percentiles:</name>
        <t>There is a need for a selection of percentiles, as we in the name of simplicity can't use them all. But how should we select them? The 0th (minimal) and 50th (median) percentile have implicit usage by themselves. <xref target="BITAG"/> discusses that the 90th, 98th and 99th percentiles are key for some apps. In general the wisdom is that the higher percentiles are more useful for interactive applications, but only to a certain point. At this point an application sees it as packet loss and may adapt to it. Should we pick the 95th, 96th percentile, the 96.5th or the 97th? We don't know, and as this is likely not universal across applications and applications classes, we simply have to choose arbitrarily, and to the best of our knowledge.</t>
      </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>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="draft-teigen-ippm-app-quality-metric-reqs">
          <front>
            <title>Requirements for a Network Quality Framework Useful for Applications, Users, and Operators</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="TR-452.1" target="https://www.broadband-forum.org/download/TR-452.1.pdf">
          <front>
            <title>TR-452.1: Quality Attenuation Measurement Architecture and Requirements</title>
            <author>
              <organization>Broadband Forum</organization>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="BITAG" target="https://www.bitag.org/documents/BITAG_latency_explained.pdf">
          <front>
            <title>Latency Explained</title>
            <author>
              <organization>BITAG</organization>
            </author>
            <date year="2022" month="October"/>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71cW3Mcx3V+31/RgUoVQLUXXEhJQCzbIEBKsAkCIkDTKtul
mp3p3R1hdno1PYPliqUq/Yg8JFVxVV7zD/Icv+dH6JfkO+d09/QsBrJccWKZ
5O5cuk+fPpfvXHpHo9GgzutCn6idL5ukyOuNMjN11dSpWeqdQTKdVvqebpqr
nUGa1Hpuqs2JysuZGQwyk5bJEu9mVTKrR6bIdDnKV6vl6FtjRvv7A9tMl7m1
uSnrzQrPXTy/faHUByoprMGgeZnplcZfZb0zVDsXp8/wj6nw6fXti51B2Syn
ujoZZJj2ZJCa0urSNvZE1VWjB6DqaJBUOsFAt1VS2pWp6p3B2lR388o0K1y+
uFbXupqZapmUqVaXOrFNpZc03eBOb/BodjJQI+VXflrXumySGvTS5dPVqshT
/uo5YuPHW0bR1XimpSnz2lR5Oac7r3RNVKlv5b3BPSbBgpT6OXQqJazbeYsh
MKD6nF6i68skL4iJ4Pevc13Pxqaa0/WkShe4vqjrlT2ZTOgxupTf67F/bEIX
JtPKrK2e0AATenGe14tmilczszS2SKZ2gm2/OKd7BfbA1tGw4ZmxvDbOjTw9
6ROG8aJeFjuDQdLUC1MR0zGmUrOmKESCLpN52Vh1RW/xLVCZlPl3zP0TdU6z
8XUty17y879mKsal4Vu2rrQGjZ8nja2TLCmKv/yHLtXhAd9NTYZ59o+eHLuv
TVmTKL+6ev329KuHFD375i//WamL+6RStzqf/zyypt+Yqvw7UjUoSShq7N3J
YEBKF75BjV6/ODs+Ovj0BAoF1VEkIHZhVqrSpAruiU8Pj/fpiRdffn1mznXh
L+8fHdHl64vnuCJbVvMyZc+S1Wrk5HW01HWVp6NKf2tPmEpvMV7rb5tcBNUq
0KaSIOteR15UYCZfeWM1mMuPRYplh3Sjwj9Jmamrla4SKI4lkbt9PXry9HB8
0J0zXO3T2lh11CkJfa3TGhd49JjcHR40iKNye4ttr0ySTenxF6ZqlnyLDZC6
0atak0VSh/uH+yItvB/+/evzFyfK68d6vR5P/VijGY3FmpeZdVng8sQvZLzK
Zhjg2cXt6eedpb7ErGW6Uc/frYokL3X2KMn06s+iJ6+TuaMibZgPE37560Lm
+lr7uRxVfu1XaW3cyg9Zgq4vWQQDsa817G9pIZqltlY1MOqV8ibrzJRZzrvt
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
hp1VAAA=

-->

</rfc>
