<?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.5 (Ruby 3.3.0) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-gnap-resource-servers-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title>Grant Negotiation and Authorization Protocol Resource Server Connections</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-gnap-resource-servers-08"/>
    <author initials="J." surname="Richer" fullname="Justin Richer" role="editor">
      <organization>Bespoke Engineering</organization>
      <address>
        <email>ietf@justin.richer.org</email>
        <uri>https://bspk.io/</uri>
      </address>
    </author>
    <author initials="F." surname="Imbault" fullname="Fabien Imbault">
      <organization>acert.io</organization>
      <address>
        <email>fabien.imbault@acert.io</email>
        <uri>https://acert.io/</uri>
      </address>
    </author>
    <date year="2024" month="August" day="09"/>
    <area>Security</area>
    <workgroup>GNAP</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 63?>

<t>GNAP defines a mechanism for delegating authorization to a piece of
software (the client), and conveying the results and artifacts of that delegation
to the software.
This extension defines methods for resource servers (RS) to connect
with authorization servers (AS) in an interoperable fashion.</t>
    </abstract>
  </front>
  <middle>
    <?line 71?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The core GNAP specification (<xref target="GNAP"/>) defines distinct roles for the authorization
server (AS) and the resource server (RS). However, the core specification
does not define how the RS gets answers to important questions, such as whether
a given access token is still valid or what set of access rights the access
token is approved for.</t>
      <t>While it's possible for the AS and RS to be tightly coupled, such as a single
deployed server with a shared storage system, GNAP does not presume or require
such a tight coupling. It is increasingly common for the AS and RS to be run
and managed separately, particularly in cases where a single AS protects multiple
RS's simultaneously.</t>
      <t>This specification defines a set of RS-facing APIs that an AS can make
available for advanced loosely-coupled deployments. Additionally, this document
defines a general-purpose model for access tokens, which can be used in
structured, formatted access tokens or in token introspection responses.
This specification also defines a method
for an RS to derive a downstream token for calling another chained RS.</t>
      <t>The means of the authorization server issuing
the access token to the client instance and the means of the client instance
presenting the access token to the resource server are the subject of the
core GNAP specification <xref target="GNAP"/>.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document contains non-normative examples of partial and complete HTTP messages, JSON structures, URLs, query components, keys, and other elements. Some examples use a single trailing backslash <tt>\</tt> to indicate line wrapping for long values, as per <xref target="RFC8792"/>. The <tt>\</tt> character and leading spaces on wrapped lines are not part of the value.</t>
        <t>Terminology specific to GNAP is defined in the terminology section of the core specification <xref target="GNAP"/>, and provides definitions for the protocol roles: authorization server (AS), client, resource server (RS), resource owner (RO), end user; as well as the protocol elements: attribute, access token, grant, privilege, protected resource, right, subject, subject information. The same definitions are used in this document.</t>
      </section>
    </section>
    <section anchor="structure">
      <name>Access Tokens</name>
      <t>Access tokens are a mechanism for an AS to provide a client instance limited access to an RS.
These access tokens are artifacts representing a particular set of access rights granted to
the client instance to act on behalf of the RO. While the format of access tokens varies in
different systems (see discussion in <xref target="token-format"/>), the concept of an access token is
consistent across all GNAP systems.</t>
      <section anchor="general-purpose-access-token-model">
        <name>General-purpose Access Token Model</name>
        <t>The core GNAP specification <xref target="GNAP"/> focuses on the relationship between the client and the AS. Since the access token
is opaque to the client, the core specification does not define a token model. However, the AS will need to create
tokens and the RS will need to understand tokens. To facilitate a level of structural interoperability, a common
access token model is presented here.
Access tokens represent a common set of aspects across different GNAP deployments. This list is not intended to be
universal or comprehensive, but rather serves as guidance to implementers in developing
data structures and associated systems across a GNAP deployment. These data structures are communicated
between the AS and RS either by using a structured token or an API-like mechanism like token introspection (see <xref target="introspection"/>).</t>
        <t>This general-purpose data model does not assume either approach, and in fact both can be used together
to convey different pieces of information. Where possible, mappings to the <xref target="JWT"/> standard format
are provided for each item in the model.</t>
        <section anchor="value">
          <name>Value</name>
          <t>All access tokens have a <em>value</em>, which is the string that is passed on the wire between parties.
In order for different access tokens to be differentiated at runtime, the value of a token needs to be unique
within a security domain (such as all systems controlled by an AS). Otherwise, two separate tokens would be
confused for each other which would lead to security issues.
The AS chooses the value, which can be structured as in <xref target="token-format"/> or unstructured. When the token is
structured, the token value also has a <em>format</em> known to the AS and RS, and the other items
in this token model are contained within the token's value in some fashion.
When the token is unstructured, the values are usually retrieved by the RS using a service
like token introspection described in <xref target="introspection"/>.</t>
          <t>The access token value is conveyed the <tt>value</tt> field of an <tt>access_token</tt> response from <xref section="3.2" sectionFormat="of" target="GNAP"/>.</t>
          <t>The format and content of the access token value is opaque to the client software.
While the client software needs to be able to carry and present the access token
value, the client software is never expected nor intended to be able to understand
the token value itself.</t>
          <t>If structured tokens like <xref target="JWT"/> are used, the value of the token might not be stored by the AS. Instead,
a token identifier can be used along with protection by an AS-generated signature to validate and
identify an individual token.</t>
        </section>
        <section anchor="issuer">
          <name>Issuer</name>
          <t>The access token is issued by the AS as defined by <xref target="GNAP"/>. The AS will
need to identify itself in order to allow an RS to recognize tokens that the AS has issued, particularly
in cases where tokens from multiple different AS's could be presented to the same RS.</t>
          <t>This information is not usually conveyed directly to the client instance, since the client
instance should know this information based on where it receives the token from.</t>
          <t>In a <xref target="JWT"/> formatted token or a token introspection response, this corresponds to the <tt>iss</tt> claim.</t>
        </section>
        <section anchor="audience">
          <name>Audience</name>
          <t>The access token is intended for use at one or more RS's. The AS can list a token's intended RS's
to allow each RS to ensure that the RS is not receiving a token intended for someone else.
The AS and RS have to agree on the nature of any audience identifiers represented by the token,
but the URIs of the RS are a common pattern.</t>
          <t>In a <xref target="JWT"/> formatted token or token introspection response, this corresponds to the <tt>aud</tt> claim.</t>
          <t>In cases where more complex access is required, the <tt>location</tt> field of objects in the <tt>access</tt>
array can also convey audience information.
In such cases, the client instance might need to know the audience information in order to differentiate between
possible RS's to present the token to.</t>
        </section>
        <section anchor="key-binding">
          <name>Key Binding</name>
          <t>Access tokens in GNAP are bound to the client instance's registered or presented key, except in
cases where the access token is a bearer token. For all tokens bound to a key, the AS and RS need to
be able to identify which key the token is bound to, otherwise an attacker could substitute their
own key during presentation of the token. In the case of an asymmetric algorithm, the
AS and RS needs to know only the public key, while the client instance will also need to know the private
key in order to present the token. In the case of a symmetric algorithm, all parties
will need to either know or be able to derive the shared key.</t>
          <t>The source of this key information can vary depending on deployment decisions. For example, an AS
could decide that all tokens issued to a client instance are always bound to that client instance's current key.
When the key needs to be dereferenced, the AS looks up the client instance to which the token was issued
and finds the key information there.
The AS could alternatively bind each token to a specific key that is managed separately from client instance
information. In such a case, the AS determines the key information directly. This approach allows the client
instance to use a different key for each request, or allows the AS to issue a key for the client instance
to use with the particular token.</t>
          <t>In all cases, the key binding also includes a proofing mechanism, along with any parameters needed for that
mechanism such as a signing or digest algorithm. If such information is not included with the proofing key, an attacker could
present a token with a seemingly-valid key using an insecure and incorrect proofing mechanism.</t>
          <t>This value is conveyed to the client instance in the <tt>key</tt> field of the <tt>access_token</tt> response in <xref section="3.2" sectionFormat="of" target="GNAP"/>.
Since the common case is that the token is bound to the client instance's registered key, this field can be omitted in this case
since the client will be aware of its own key.</t>
          <t>In a <xref target="JWT"/> formatted token, this corresponds to the <tt>cnf</tt> (confirmation) claim. In a token introspection response, this corresponds to the <tt>key</tt> claim.</t>
          <t>In the case of a bearer token, all parties need to know that a token has no key bound to it, and will therefore
reject any attempts to use the bearer token with a key in an undefined way.</t>
        </section>
        <section anchor="flags">
          <name>Flags</name>
          <t>GNAP access tokens can have multiple data flags associated with them that indicate special
processing or considerations for the token. For example, whether the token is a bearer token,
or should be expected to be durable across grant updates.</t>
          <t>The client can request a set of flags using the <tt>flags</tt> field of the <tt>access_token</tt> grant request parameter in <xref section="2.1.1" sectionFormat="of" target="GNAP"/>.</t>
          <t>These flags are conveyed from the AS to the client in the <tt>flags</tt> field of the <tt>access_token</tt> section of the grant response in <xref section="3.2" sectionFormat="of" target="GNAP"/>.</t>
          <t>For token introspection, flags are returned in the <tt>flags</tt> field of the response.</t>
        </section>
        <section anchor="access-rights">
          <name>Access Rights</name>
          <t>Access tokens are tied to a limited set of access rights. These rights specify in some detail what the token
can be used for, how, and where. The internal structure of access rights are detailed in <xref section="8" sectionFormat="of" target="GNAP"/>.</t>
          <t>The access rights associated with an access token are calculated from the rights available to the client
instance making the request, the rights available to be approved by the RO, the rights actually approved
by the RO, and the rights corresponding to the RS in question. The rights for a specific access token
are a subset of the overall rights in a grant request.</t>
          <t>These rights are requested by the client instance in the <tt>access</tt> field of the <tt>access_token</tt> request in <xref section="2.1" sectionFormat="of" target="GNAP"/>.</t>
          <t>The rights associated with an issued access token are conveyed to the client instance in the <tt>access</tt> field of the <tt>access_token</tt> response in <xref section="3.2" sectionFormat="of" target="GNAP"/>.</t>
          <t>In token introspection responses, this corresponds to the <tt>access</tt> claim.</t>
        </section>
        <section anchor="time-validity-window">
          <name>Time Validity Window</name>
          <t>The access token can be limited to a certain time window outside of which it is no longer
valid for use at an RS. This window can be explicitly bounded by an expiration time and a
not-before time, or it could be calculated based on the issuance time of the token. For example,
an RS could decide that it will accept tokens for most calls within an hour of a token's
issuance, but only within five minutes of the token's issuance for certain high-value calls.</t>
          <t>Since access tokens could be revoked at any time for any reason outside of a client instance's control,
the client instance often does not know or concern itself with the validity time window of
an access token. However, this information can be made available to it using the <tt>expires_in</tt> field
of an access token response in <xref section="3.2" sectionFormat="of" target="GNAP"/>.</t>
          <t>The issuance time of the token is conveyed in the <tt>iat</tt> claim of a <xref target="JWT"/> formatted token or a token introspection response.</t>
          <t>The expiration time of a token, after which it is to be rejected, is conveyed in the <tt>exp</tt> claim of a <xref target="JWT"/> formatted token or a token introspection response.</t>
          <t>The starting time of a token's validity window, before which it is to be rejected, is conveyed in the <tt>nbf</tt> claim of a <xref target="JWT"/> formatted token or a token introspection response.</t>
        </section>
        <section anchor="token-identifier">
          <name>Token Identifier</name>
          <t>Individual access tokens often need a unique internal identifier to allow the AS to differentiate
between multiple separate tokens. This value of the token can often be used as the
identifier, but in some cases a separate identifier is used.</t>
          <t>This separate identifier can be conveyed in the <tt>jti</tt> claim of a <xref target="JWT"/> formatted token or a token introspection response.</t>
          <t>This identifier is not usually exposed to the client instance using the token, since the client
instance only needs to use the token by value.</t>
        </section>
        <section anchor="authorizing-resource-owner">
          <name>Authorizing Resource Owner</name>
          <t>Access tokens are approved on behalf of a resource owner (RO). The identity of this RO can be used by
the RS to determine exactly which resource to access, or which kinds of access to allow. For example,
an access token used to access identity information can hold a user identifier to allow the RS to
determine which profile information to return. The nature of this information is subject to agreement
by the AS and RS.</t>
          <t>This corresponds to the <tt>sub</tt> claim of a <xref target="JWT"/> formatted token or a token introspection response.</t>
          <t>Detailed RO information is not returned to the client instance
when an access token is requested alone, and in many cases returning
this information to the client instance would be a privacy violation on the part of the AS. Since the
access token represents a specific delegated access, the client instance needs only to use the token
at its target RS. Following the profile example, the client instance does not need to know
the account identifier to get specific attributes about the account represented by the token.</t>
          <t>GNAP does allow for the return of subject information separately from the access token, in the form
of identifiers and assertions. These values are returned directly to the client separately from any
access tokens that are requested, though it's common that they represent the same party.</t>
        </section>
        <section anchor="end-user">
          <name>End User</name>
          <t>The end user is the party operating the client software. The client instance can facilitate the end user
interacting with the AS in order to determine the end user's identity, gather authorization, and provide
the results of that information back to the client instance.</t>
          <t>In many instances, the end user is the same party as the resource owner. However, in some cases,
the two roles can be fulfilled by different people, where the RO is consulted asynchronously.
The token model should be able to reflect these kinds of situations by representing the end user
and RO separately.
For example, an end user can request a financial payment, but the RO is the holder of the account
that the payment would be withdrawn from. The RO would be consulted for approval by the AS outside
of the flow of the GNAP request. A token in such circumstances would need to show both the
RO and end user as separate entities.</t>
        </section>
        <section anchor="client-instance">
          <name>Client Instance</name>
          <t>Access tokens are issued to a specific client instance by the AS. The identity of this instance can
be used by the RS to allow specific kinds of access, or other attributes about the access token.
For example, an AS that binds all access tokens issued to a particular client instance to that
client instance's most recent key rotation would need to be able to look up the client instance
in order to find the key binding detail.</t>
          <t>This corresponds to the <tt>client_id</tt> claim of a <xref target="JWT"/> formatted token or the <tt>instance_id</tt> field of a token introspection response.</t>
          <t>The client is not normally informed of this information separately, since a client instance can
usually correctly assume that it is the client instance to which a token that
it receives was issued.</t>
        </section>
        <section anchor="label">
          <name>Label</name>
          <t>When multiple access tokens are requested or a client instance uses token labels, the parties
will need to keep track of which labels were applied to each individual token. Since labels can
be re-used across different grant requests, the token label alone is not sufficient to
uniquely identify a given access token in a system. However, within the context of a grant
request, these labels are required to be unique.</t>
          <t>A client instance can request a specific label using the <tt>label</tt> field of an <tt>access_token</tt> request in <xref section="2.1" sectionFormat="of" target="GNAP"/>.</t>
          <t>The AS can inform the client instance of a token's label using the <tt>label</tt> field of an <tt>access_token</tt> response in <xref section="3.2" sectionFormat="of" target="GNAP"/>.</t>
          <t>This corresponds to the <tt>label</tt> field of a token introspection response.</t>
        </section>
        <section anchor="parent-grant-request">
          <name>Parent Grant Request</name>
          <t>All access tokens are issued in the context of a specific grant request from a client instance. The
grant request itself represents a unique tuple of:</t>
          <ul spacing="normal">
            <li>
              <t>The AS processing the grant request</t>
            </li>
            <li>
              <t>The client instance making the grant request</t>
            </li>
            <li>
              <t>The RO (or set of RO's) approving the grant request (or needing to approve it)</t>
            </li>
            <li>
              <t>The access rights granted by the RO</t>
            </li>
            <li>
              <t>The current state of the grant request, as defined in <xref section="1.5" sectionFormat="of" target="GNAP"/></t>
            </li>
          </ul>
          <t>The AS can use this information to tie common information to a specific token. For instance,
instead of specifying a client instance for every issued access token for a grant, the AS
can store the client information in the grant itself and look it up by reference from the
access token.</t>
          <t>The AS can also use this information when a grant request is updated. For example, if the client
instance asks for a new access token from an existing grant, the AS can use this link to revoke
older non-durable access tokens that had been previously issued under the grant.</t>
          <t>A client instance will have its own model of an ongoing grant request, especially if that
grant request can be continued using the API defined in <xref section="5" sectionFormat="of" target="GNAP"/> where several
pieces of statefulness need to be kept in hand. The client instance might need to keep an
association with the grant request that issued the token in case the access token expires or
does not have sufficient access rights, so that the client instance can get a new access
token without having to restart the grant request process from scratch.</t>
          <t>Since the grant itself does not need to be identified in any of the protocol messages, GNAP
does not define a specific grant identifier to be conveyed between any parties in the protocol.
Only the AS needs to keep an explicit connection between an issued access token and the
parent grant that issued it.</t>
        </section>
        <section anchor="as-specific-access-tokens">
          <name>AS-Specific Access Tokens</name>
          <t>When an access token is used for the grant continuation API defined in <xref section="5" sectionFormat="of" target="GNAP"/> (the continuation access token)
the token management API defined in <xref section="6" sectionFormat="of" target="GNAP"/> (the token management access token),
or the RS-facing API defined in <xref target="rs-facing-api"/> (the resource server management access token),
the AS <bcp14>MUST</bcp14> separate these access tokens from others usable at RS's. The AS can
do this through the use of a flag on the access token data structure, by using a special internal
access right, or any other means at its disposal. Just like other access tokens in GNAP,
the contents of these AS-specific access tokens are opaque to the software presenting the token.
Unlike other access tokens, the contents of these AS-specific access tokens are also opaque to the RS.</t>
          <t>The client instance is given continuation access tokens only as part of the <tt>continue</tt> field
of the grant response in <xref section="3.1" sectionFormat="of" target="GNAP"/>.
The client instance is given token management access tokens only as part of the <tt>manage</tt> field
of the grant response in <xref section="3.1.2" sectionFormat="of" target="GNAP"/>.
The means by which the RS is given resource server management access tokens is out of
scope of this specification, but methods could include pre-configuration of the token value with
the RS software or granting the access token through a standard GNAP process.</t>
          <t>For continuation access tokens and token management access tokens,
a client instance <bcp14>MUST</bcp14> take steps to differentiate these special-purpose access tokens from
access tokens used at RS's.
To facilitate this, a client instance can store AS-specific access tokens separately from
other access tokens in order to keep them from being confused with each other and used at the
wrong endpoints.</t>
          <t>An RS should never see an AS-specific access token presented, so any attempts to process one <bcp14>MUST</bcp14>
fail. When introspection is used, the AS <bcp14>MUST NOT</bcp14> return an <tt>active</tt> value of <tt>true</tt> for
AS-specific access tokens to the RS. If an AS implements its protected endpoints in such a way
as it uses token introspection internally, the AS <bcp14>MUST</bcp14> differentiate these AS-specific access tokens
from those issued for use at an external RS.</t>
        </section>
      </section>
      <section anchor="token-format">
        <name>Access Token Formats</name>
        <t>When the AS issues an access token for use at an RS, the RS
needs to have some means of understanding what the access token is for
in order to determine how to respond to the request. The core GNAP
protocol makes neither assumptions nor demands on the format or contents
of the access token, and in fact, the token format and contents are opaque
to the client instance. However, such token formats can be the topic of agreements
between the AS and RS.</t>
        <t>Self-contained structured token formats allow for the conveyance
of information between the AS and RS without requiring the RS to
call the AS at runtime as described in <xref target="introspection"/>. Structured tokens
can also be used in combination with introspection, allowing the token itself
to carry one class of information and the introspection response to carry
another.</t>
        <t>Some token formats, such as Macaroons <xref target="MACAROON"/> and Biscuits <xref target="BISCUIT"/>, allow for
the RS to derive sub-tokens without having to call the AS
as described in <xref target="token-chaining"/>.</t>
        <t>The supported token formats can be communicated dynamically at runtime
between the AS and RS in several places.</t>
        <ul spacing="normal">
          <li>
            <t>The AS can declare its supported token formats as part of RS-facing discovery <xref target="discovery"/></t>
          </li>
          <li>
            <t>The RS can require a specific token format be used to access a registered resource set <xref target="rs-register-resource-handle"/></t>
          </li>
          <li>
            <t>The AS can return the token's format in an introspection response <xref target="introspection"/></t>
          </li>
        </ul>
        <t>In all places where the token format is listed explicitly, it <bcp14>MUST</bcp14> be one of the registered
values in the GNAP Token Formats Registry <xref target="IANA-token-format"/>.</t>
      </section>
    </section>
    <section anchor="rs-facing-api">
      <name>Resource-Server-Facing API</name>
      <t>To facilitate runtime and dynamic connections with an RS, the AS can offer an
RS-Facing API consisting of one or more of the following optional
pieces.</t>
      <ul spacing="normal">
        <li>
          <t>Discovery</t>
        </li>
        <li>
          <t>Introspection</t>
        </li>
        <li>
          <t>Token chaining</t>
        </li>
        <li>
          <t>Resource reference registration</t>
        </li>
      </ul>
      <section anchor="discovery">
        <name>RS-facing AS Discovery</name>
        <t>A GNAP AS offering RS-facing services can publish its features on
a well-known discovery document using the URL <tt>.well-known/gnap-as-rs</tt> appended
to the grant request endpoint URL.</t>
        <t>The discovery response is a JSON document <xref target="RFC8259"/> consisting of a single JSON
object with the following fields:</t>
        <dl>
          <dt>grant_request_endpoint (string):</dt>
          <dd>
            <t>The location of the AS's grant request endpoint defined by <xref section="9" sectionFormat="of" target="GNAP"/>.
  This URL <bcp14>MUST</bcp14> be the same URL used by client instances in support of GNAP requests.
  The RS can use this to derive downstream access tokens, if supported by the AS.
  The location <bcp14>MUST</bcp14> be a URL <xref target="RFC3986"/>
  with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally,
  port, path and query components and no fragment components.
  <bcp14>REQUIRED</bcp14>.
  See <xref target="token-chaining"/>.</t>
          </dd>
          <dt>introspection_endpoint (string):</dt>
          <dd>
            <t>The URL of the endpoint offering introspection.
  The location <bcp14>MUST</bcp14> be a URL <xref target="RFC3986"/>
  with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally,
  port, path and query components and no fragment components.
  <bcp14>REQUIRED</bcp14> if the AS supports introspection. An absent value indicates that the AS does not support introspection.
  See <xref target="introspection"/>.</t>
          </dd>
          <dt>token_formats_supported (array of strings):</dt>
          <dd>
            <t>A list of token formats supported by this AS. The values in this list
  <bcp14>MUST</bcp14> be registered in the GNAP Token Format Registry in <xref target="IANA-token-format"/>.
  <bcp14>OPTIONAL</bcp14>.</t>
          </dd>
          <dt>resource_registration_endpoint (string):</dt>
          <dd>
            <t>The URL of the endpoint offering resource registration.
  The location <bcp14>MUST</bcp14> be a URL <xref target="RFC3986"/>
  with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally,
  port, path and query components and no fragment components.
  <bcp14>REQUIRED</bcp14> if the AS supports dynamic resource registration. An absent value indicates that the AS does not support this feature.
  See <xref target="rs-register-resource-handle"/>.</t>
          </dd>
          <dt>key_proofs_supported (array of strings)</dt>
          <dd>
            <t>A list of the AS's supported key
  proofing mechanisms. The values of this list correspond to possible
  values of the <tt>proof</tt> field of the key section of the request.
  Values <bcp14>MUST</bcp14> be in the GNAP Key Proofing Methods registry established by <xref target="GNAP"/>.
  <bcp14>OPTIONAL</bcp14>.</t>
          </dd>
        </dl>
        <t>Additional fields are defined in the GNAP RS-Facing Discovery Document Fields registry <xref target="IANA-rs-discovery"/>.</t>
      </section>
      <section anchor="authentication">
        <name>Protecting RS requests to the AS</name>
        <t>Unless otherwise specified, the RS <bcp14>MUST</bcp14> protect its calls to the AS using any of the signature
methods defined by <xref section="7" sectionFormat="of" target="GNAP"/>.</t>
        <t>The RS <bcp14>MAY</bcp14> present its keys by reference or by value in
a similar fashion to a client instance calling the AS in the core protocol
of GNAP, described in <xref section="7.1" sectionFormat="of" target="GNAP"/>. In the protocols defined here,
this takes the form of the resource server identifying itself using a <tt>key</tt> field or
by passing an instance identifier directly.</t>
        <sourcecode type="http-message"><![CDATA[
POST /continue HTTP/1.1
Host: server.example.com
Authorization: GNAP 80UPRY5NM33OMUKMKSKU
Signature-Input: sig1=...
Signature: sig1=...
Content-Type: application/json

"resource_server": {
    "key": {
        "proof": "httpsig",
        "jwk": {
            "kty": "EC",
            "crv": "secp256k1",
            "kid": "2021-07-06T20:22:03Z",
            "x": "-J9OJIZj4nmopZbQN7T8xv3sbeS5-f_vBNSy_EHnBZc",
            "y": "sjrS51pLtu3P4LUTVvyAIxRfDV_be2RYpI5_f-Yjivw"
        }
    }
}
]]></sourcecode>
        <t>or by reference:</t>
        <sourcecode type="http-message"><![CDATA[
POST /continue HTTP/1.1
Host: server.example.com
Signature-Input: sig1=...
Signature: sig1=...
Content-Type: application/json

{
    "resource_server": "7C7C4AZ9KHRS6X63AJAO"
}
]]></sourcecode>
        <t>The means by which an RS's keys are made known to the AS are out
of scope of this specification.
The AS <bcp14>MAY</bcp14> require an RS to pre-register its keys
or could allow calls from arbitrary keys in a trust-on-first-use
model.</t>
        <t>The AS <bcp14>MAY</bcp14> issue access tokens to the RS for protecting the RS-facing
API endpoints, called a resource server management access token.
If such tokens are issued, the RS <bcp14>MUST</bcp14> present them
to the RS-facing API endpoints along with the RS authentication.</t>
        <sourcecode type="http-message"><![CDATA[
POST /continue HTTP/1.1
Host: server.example.com
Authorization: GNAP 80UPRY5NM33OMUKMKSKU
Signature-Input: sig1=...
Signature: sig1=...
Content-Type: application/json

{
    "resource_server": "7C7C4AZ9KHRS6X63AJAO"
}
]]></sourcecode>
      </section>
      <section anchor="introspection">
        <name>Token Introspection</name>
        <t>The AS issues access tokens representing a set of delegated access rights
to be used at one or more RSs. The AS can offer an introspection service
to allow an RS to validate that a given access token:</t>
        <ul spacing="normal">
          <li>
            <t>has been issued by the AS</t>
          </li>
          <li>
            <t>is valid at the current time</t>
          </li>
          <li>
            <t>has not been revoked</t>
          </li>
          <li>
            <t>is appropriate for the RS identified in the call</t>
          </li>
        </ul>
        <t>When the RS receives an access token, it can call the introspection
endpoint at the AS to get token information.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="328" viewBox="0 0 328 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,144" fill="none" stroke="black"/>
              <path d="M 144,32 L 144,144" fill="none" stroke="black"/>
              <path d="M 200,32 L 200,144" fill="none" stroke="black"/>
              <path d="M 264,32 L 264,112" fill="none" stroke="black"/>
              <path d="M 320,32 L 320,112" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 144,32 L 200,32" fill="none" stroke="black"/>
              <path d="M 264,32 L 320,32" fill="none" stroke="black"/>
              <path d="M 80,48 L 104,48" fill="none" stroke="black"/>
              <path d="M 120,48 L 136,48" fill="none" stroke="black"/>
              <path d="M 200,64 L 224,64" fill="none" stroke="black"/>
              <path d="M 240,64 L 256,64" fill="none" stroke="black"/>
              <path d="M 208,96 L 224,96" fill="none" stroke="black"/>
              <path d="M 240,96 L 264,96" fill="none" stroke="black"/>
              <path d="M 264,112 L 320,112" fill="none" stroke="black"/>
              <path d="M 88,128 L 104,128" fill="none" stroke="black"/>
              <path d="M 120,128 L 144,128" fill="none" stroke="black"/>
              <path d="M 8,144 L 80,144" fill="none" stroke="black"/>
              <path d="M 144,144 L 200,144" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="264,64 252,58.4 252,69.6" fill="black" transform="rotate(0,256,64)"/>
              <polygon class="arrowhead" points="216,96 204,90.4 204,101.6" fill="black" transform="rotate(180,208,96)"/>
              <polygon class="arrowhead" points="144,48 132,42.4 132,53.6" fill="black" transform="rotate(0,136,48)"/>
              <polygon class="arrowhead" points="96,128 84,122.4 84,133.6" fill="black" transform="rotate(180,88,128)"/>
              <g class="text">
                <text x="44" y="52">Client</text>
                <text x="112" y="52">1</text>
                <text x="172" y="52">RS</text>
                <text x="292" y="52">AS</text>
                <text x="44" y="68">Instance</text>
                <text x="232" y="68">2</text>
                <text x="232" y="100">3</text>
                <text x="112" y="132">4</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+       +------+       +------+
| Client +--(1)->|  RS  |       |  AS  |
|Instance|       |      +--(2)->|      |
|        |       |      |       |      |
|        |       |      |<-(3)--+      |
|        |       |      |       +------+
|        |<-(4)--+      |
+--------+       +------+
]]></artwork>
        </artset>
        <ol spacing="normal" type="1"><li>
            <t>The client instance calls the RS with its access token.</t>
          </li>
          <li>
            <t>The RS introspects the access token value at the AS.
 The RS signs the request with its own key (not the client instance's
 key or the token's key).</t>
          </li>
          <li>
            <t>The AS validates the access token value and the Resource Server's request
 and returns the introspection response for the token.</t>
          </li>
          <li>
            <t>The RS fulfills the request from the client instance.</t>
          </li>
        </ol>
        <t>The RS signs the request with its own key and sends the value of the access
token as the body of the request as a JSON object with the following members:</t>
        <dl>
          <dt>access_token (string):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The access token value presented to the RS by the client instance.</t>
          </dd>
          <dt>proof (string):</dt>
          <dd>
            <t><bcp14>RECOMMENDED</bcp14>. The proofing method used by the client instance to bind the token to the RS request.
  The value <bcp14>MUST</bcp14> be in the GNAP Key Proofing Methods registry.</t>
          </dd>
          <dt>resource_server (string or object):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The identification used to authenticate the resource server making this call, either
  by value or by reference as described in <xref target="authentication"/>.</t>
          </dd>
          <dt>access (array of strings/objects):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The minimum access rights required to fulfill the request. This <bcp14>MUST</bcp14> be in the
  format described in <xref section="8" sectionFormat="of" target="GNAP"/>.</t>
          </dd>
        </dl>
        <t>Additional fields are defined in the GNAP Token Introspection Request registry <xref target="IANA-token-introspection-request"/>.</t>
        <sourcecode type="http-message"><![CDATA[
POST /introspect HTTP/1.1
Host: server.example.com
Content-Type: application/json
Signature-Input: sig1=...
Signature: sig1=...
Digest: sha256=...

{
    "access_token": "OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0",
    "proof": "httpsig",
    "resource_server": "7C7C4AZ9KHRS6X63AJAO"
}
]]></sourcecode>
        <t>The AS <bcp14>MUST</bcp14> validate the access token value and determine if the token is active.
The parameters of the request provide a context for the AS to evaluate the access token,
and the AS <bcp14>MUST</bcp14> take all provided parameters into account when evaluating if the token is active.
If the AS is unable to process part of the request, such as not understanding part of
the <tt>access</tt> field presented, the AS <bcp14>MUST NOT</bcp14> indicate the token as active.</t>
        <t>An active access token is defined as a token that is all of the following:</t>
        <ul spacing="normal">
          <li>
            <t>was issued by the processing AS,</t>
          </li>
          <li>
            <t>has not been revoked,</t>
          </li>
          <li>
            <t>has not expired,</t>
          </li>
          <li>
            <t>is bound using the <tt>proof</tt> method indicated,</t>
          </li>
          <li>
            <t>is appropriate for presentation at the identified RS, and</t>
          </li>
          <li>
            <t>is appropriate for the <tt>access</tt> indicated (if present).</t>
          </li>
        </ul>
        <t>The AS responds with a data structure describing the token's
current state and any information the RS would need to validate the
token's presentation, such as its intended proofing mechanism and key
material.</t>
        <dl>
          <dt>active (boolean):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. If <tt>true</tt>, the access token presented is active,
  as defined above. If any of the criteria for an active token
  are not true, or if the AS is unable to make a
  determination (such as the token is not found), the value is
  set to <tt>false</tt> and other fields are omitted.</t>
          </dd>
        </dl>
        <t>If the access token is active, additional fields from the single access token
response structure defined in <xref section="3.2.1" sectionFormat="of" target="GNAP"/> are included. In
particular, these include the following:</t>
        <dl>
          <dt>access (array of strings/objects):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The access rights associated with this access token. This <bcp14>MUST</bcp14> be in the
  format described in the <xref section="8" sectionFormat="of" target="GNAP"/>.
  This array <bcp14>MAY</bcp14> be filtered or otherwise limited for consumption by the identified RS, including
  being an empty array, indicating that the token has no explicit access rights that
  can be disclosed to the RS.</t>
          </dd>
          <dt>key (object/string):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> if the token is bound. The key bound to the access token, to allow the RS
  to validate the signature of the request from the client instance. If the access
  token is a bearer token, this <bcp14>MUST NOT</bcp14> be included.</t>
          </dd>
          <dt>flags (array of strings):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The set of flags associated with the access token.</t>
          </dd>
          <dt>exp (integer):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The timestamp after which this token is no longer valid.
  Expressed as integer seconds from UNIX Epoch.</t>
          </dd>
          <dt>iat (integer):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The timestamp at which this token was issued by the AS.
  Expressed as integer seconds from UNIX Epoch.</t>
          </dd>
          <dt>nbf (integer):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The timestamp before which this token is not valid.
  Expressed as integer seconds from UNIX Epoch.</t>
          </dd>
          <dt>aud (string or array of strings):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. Identifiers for the resource servers this token can be accepted at.</t>
          </dd>
          <dt>sub (string):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. Identifier of the resource owner who authorized this token.</t>
          </dd>
          <dt>iss (string):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. Grant endpoint URL of the AS that issued this token.</t>
          </dd>
          <dt>instance_id (string):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The instance identifier of the client instance that the token was issued to.</t>
          </dd>
        </dl>
        <t>Additional fields are defined in the GNAP Token Introspection Response registry <xref target="IANA-token-introspection"/>.</t>
        <t>The response <bcp14>MAY</bcp14> include any additional fields defined in an access
token response and <bcp14>MUST NOT</bcp14> include the access token <tt>value</tt> itself.</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
    "active": true,
    "access": [
        "dolphin-metadata", "some other thing"
    ],
    "key": {
        "proof": "httpsig",
        "jwk": {
                "kty": "RSA",
                "e": "AQAB",
                "kid": "xyz-1",
                "alg": "RS256",
                "n": "kOB5rR4Jv0GMeL...."
        }
    }
}
]]></sourcecode>
        <t>When processing the results of the introspection response, the RS <bcp14>MUST</bcp14> determine the
appropriate course of action. For instance, if the RS determines that the access token's
access rights are not sufficient for the request to which the token was attached, the RS
can return an error or a public resource, as appropriate for the RS.
In all cases, the final determination of the response is at the discretion of the RS.</t>
      </section>
      <section anchor="rs-register-resource-handle">
        <name>Registering a Resource Set</name>
        <t>If the RS needs to, it can post a set of resources as described in the Resource Access Rights section of
<xref target="GNAP"/> to the AS's resource registration endpoint along with information about
what the RS will need to validate the request.</t>
        <dl>
          <dt>access (array of objects/strings):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The list of access rights associated with the request in the format described
  in the "Resource Access Rights" section of <xref target="GNAP"/>.</t>
          </dd>
          <dt>resource_server (string or object):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The identification used to authenticate the resource server making this call, either
  by value or by reference as described in <xref target="authentication"/>.</t>
          </dd>
          <dt>token_formats_supported (array of strings):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The token formats the RS is able to process for accessing the resource.
  The values in this array <bcp14>MUST</bcp14> be registered in the GNAP Token Formats Registry in <xref target="IANA-token-format"/>.
  If the field is omitted, the token format is at the discretion of the AS.
  If the AS does not support any of the requested
  token formats, the AS <bcp14>MUST</bcp14> return an error to the RS.</t>
          </dd>
          <dt>token_introspection_required (boolean):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. If present and set to <tt>true</tt>, the RS expects to make a token introspection request as
  described in <xref target="introspection"/>. If absent or set to <tt>false</tt>, the RS does not anticipate needing
  to make an introspection request for tokens relating to this resource set. If the AS does not
  support token introspection for this RS, the AS <bcp14>MUST</bcp14> return an error to the RS.</t>
          </dd>
        </dl>
        <t>Additional fields are defined in the GNAP Resource Set Registration Request registry <xref target="IANA-resource-registration-request"/>.</t>
        <t>The RS <bcp14>MUST</bcp14> identify itself with its own key and sign the
request.</t>
        <sourcecode type="http-message"><![CDATA[
POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/json
Signature-Input: sig1=...
Signature: sig1=...
Digest: ...

{
    "access": [
        {
            "actions": [
                "read",
                "write",
                "dolphin"
            ],
            "locations": [
                "https://server.example.net/",
                "https://resource.local/other"
            ],
            "datatypes": [
                "metadata",
                "images"
            ]
        },
        "dolphin-metadata"
    ],
    "resource_server": "7C7C4AZ9KHRS6X63AJAO"

}
]]></sourcecode>
        <t>The AS responds with a reference appropriate to represent the
resources list that the RS presented in its request as well as
any additional information the RS might need in future requests.</t>
        <dl>
          <dt>resource_reference (string):</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. A single string representing the list of resources registered in the request.
  The RS <bcp14>MAY</bcp14> make this handle available to a client instance as part of a
  discovery response as described in <xref section="9.1" sectionFormat="of" target="GNAP"/> or as
  documentation to client software developers.</t>
          </dd>
          <dt>instance_id (string):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. An instance identifier that the RS can use to refer to itself in future calls to
  the AS, in lieu of sending its key by value. See <xref target="authentication"/>.</t>
          </dd>
          <dt>introspection_endpoint (string):</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The introspection endpoint of this AS, used to allow the RS to perform
  token introspection. See <xref target="introspection"/>.</t>
          </dd>
        </dl>
        <t>Additional fields are defined in the GNAP Resource Set Registration Response Registry <xref target="IANA-resource-registration-response"/>.</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
    "resource_reference": "FWWIKYBQ6U56NL1"
}
]]></sourcecode>
        <t>If a resource was previously registered, the AS <bcp14>MAY</bcp14> return the same resource reference
value as in previous responses.</t>
        <t>If the registration fails, the AS returns an HTTP 400 Bad Request error to the
RS indicating that the registration was not successful.</t>
        <t>The client instance can then use the <tt>resource_reference</tt> value as a string-type access
reference as defined in <xref section="8.1" sectionFormat="of" target="GNAP"/>. This value <bcp14>MAY</bcp14> be combined with any other
additional access rights requested by the client instance.</t>
        <sourcecode type="json"><![CDATA[
{
    "access_token": {
        "access": [
            "FWWIKYBQ6U56NL1",
            {
                "type": "photo-api",
                "actions": [
                    "read",
                    "write",
                    "dolphin"
                ],
                "locations": [
                    "https://server.example.net/",
                    "https://resource.local/other"
                ],
                "datatypes": [
                    "metadata",
                    "images"
                ]
            },
            "dolphin-metadata"
        ]
    },
    "client": "client-12351.bdxqf"
}
]]></sourcecode>
      </section>
      <section anchor="response-error">
        <name>Error Responses</name>
        <t>In the case of an error from the RS-facing API, the AS responds to the RS with an HTTP 400 (Bad Request)
status code and a JSON object consisting of a single <tt>error</tt> field, which is either an object or a string.</t>
        <t>When returned as a string, the error value is the error code:</t>
        <sourcecode type="json"><![CDATA[
{
    error: "invalid_access"
}
]]></sourcecode>
        <t>When returned as an object, the error object contains the following fields:</t>
        <dl>
          <dt><tt>code</tt> (string):</dt>
          <dd>
            <t>A single ASCII error code defining the error.
<bcp14>REQUIRED</bcp14>.</t>
          </dd>
          <dt><tt>description</tt> (string):</dt>
          <dd>
            <t>A human-readable string description of the error intended for the
developer of the client.
<bcp14>OPTIONAL</bcp14>.</t>
          </dd>
        </dl>
        <sourcecode type="json"><![CDATA[
{
  "error": {
    "code": "invalid_access",
    "description": "Access to 'foo' is not permitted for this RS."
  }
}
]]></sourcecode>
        <t>This specification defines the following error code values:</t>
        <dl>
          <dt><tt>"invalid_request"</tt>:</dt>
          <dd>
            <t>The request is missing a required parameter, includes an
  invalid parameter value or is otherwise malformed.</t>
          </dd>
          <dt><tt>"invalid_resource_server"</tt>:</dt>
          <dd>
            <t>The request was made from an RS that was not recognized
  or allowed by the AS, or the RS's signature validation failed.</t>
          </dd>
          <dt><tt>"invalid_access"</tt></dt>
          <dd>
            <t>The RS is not permitted to register or introspect for the requested "access" value.</t>
          </dd>
        </dl>
        <t>Additional error codes can be defined in the <xref target="IANA-error-code">GNAP RS-Facing Error Codes Registry</xref>.</t>
      </section>
    </section>
    <section anchor="token-chaining">
      <name>Deriving a downstream token</name>
      <t>Some architectures require an RS to act as a client instance and use a derived access
token for a secondary RS. Since the RS is not the same entity that made the initial grant
request, the RS is not capable of referencing or modifying the existing grant. As such,
the RS needs to request or generate a new token access token for its use at the secondary RS.
This internal secondary token is issued in the context of the incoming access token.</t>
      <t>While it is possible to use a <xref target="structure">token format</xref> that allows for the
RS to generate its own secondary token,
the AS can allow the RS to request this secondary access token using the same
process used by the original client instance to request the primary access token. Since the
RS is acting as its own client instance from the perspective of GNAP, this process
uses the same grant endpoint, request structure, and response structure as a client
instance's request.</t>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="464" viewBox="0 0 464 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <path d="M 8,32 L 8,176" fill="none" stroke="black"/>
            <path d="M 80,32 L 80,176" fill="none" stroke="black"/>
            <path d="M 144,32 L 144,176" fill="none" stroke="black"/>
            <path d="M 208,32 L 208,176" fill="none" stroke="black"/>
            <path d="M 272,32 L 272,96" fill="none" stroke="black"/>
            <path d="M 328,32 L 328,96" fill="none" stroke="black"/>
            <path d="M 392,32 L 392,176" fill="none" stroke="black"/>
            <path d="M 456,32 L 456,176" fill="none" stroke="black"/>
            <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
            <path d="M 144,32 L 208,32" fill="none" stroke="black"/>
            <path d="M 272,32 L 328,32" fill="none" stroke="black"/>
            <path d="M 392,32 L 456,32" fill="none" stroke="black"/>
            <path d="M 80,48 L 104,48" fill="none" stroke="black"/>
            <path d="M 120,48 L 136,48" fill="none" stroke="black"/>
            <path d="M 208,64 L 232,64" fill="none" stroke="black"/>
            <path d="M 248,64 L 264,64" fill="none" stroke="black"/>
            <path d="M 216,80 L 232,80" fill="none" stroke="black"/>
            <path d="M 248,80 L 272,80" fill="none" stroke="black"/>
            <path d="M 272,96 L 328,96" fill="none" stroke="black"/>
            <path d="M 208,128 L 304,128" fill="none" stroke="black"/>
            <path d="M 320,128 L 384,128" fill="none" stroke="black"/>
            <path d="M 216,144 L 304,144" fill="none" stroke="black"/>
            <path d="M 320,144 L 392,144" fill="none" stroke="black"/>
            <path d="M 88,160 L 104,160" fill="none" stroke="black"/>
            <path d="M 120,160 L 144,160" fill="none" stroke="black"/>
            <path d="M 8,176 L 80,176" fill="none" stroke="black"/>
            <path d="M 144,176 L 208,176" fill="none" stroke="black"/>
            <path d="M 392,176 L 456,176" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="392,128 380,122.4 380,133.6" fill="black" transform="rotate(0,384,128)"/>
            <polygon class="arrowhead" points="272,64 260,58.4 260,69.6" fill="black" transform="rotate(0,264,64)"/>
            <polygon class="arrowhead" points="224,144 212,138.4 212,149.6" fill="black" transform="rotate(180,216,144)"/>
            <polygon class="arrowhead" points="224,80 212,74.4 212,85.6" fill="black" transform="rotate(180,216,80)"/>
            <polygon class="arrowhead" points="144,48 132,42.4 132,53.6" fill="black" transform="rotate(0,136,48)"/>
            <polygon class="arrowhead" points="96,160 84,154.4 84,165.6" fill="black" transform="rotate(180,88,160)"/>
            <g class="text">
              <text x="44" y="52">Client</text>
              <text x="112" y="52">1</text>
              <text x="176" y="52">RS1</text>
              <text x="300" y="52">AS</text>
              <text x="424" y="52">RS2</text>
              <text x="44" y="68">Instance</text>
              <text x="240" y="68">2</text>
              <text x="240" y="84">3</text>
              <text x="312" y="132">4</text>
              <text x="312" y="148">5</text>
              <text x="112" y="164">6</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
+--------+       +-------+       +------+       +-------+
| Client +--(1)->|  RS1  |       |  AS  |       |  RS2  |
|Instance|       |       +--(2)->|      |       |       |
|        |       |       |<-(3)--+      |       |       |
|        |       |       |       +------+       |       |
|        |       |       |                      |       |
|        |       |       +-----------(4)------->|       |
|        |       |       |<----------(5)--------+       |
|        |<-(6)--+       |                      |       |
+--------+       +-------+                      +-------+
]]></artwork>
      </artset>
      <ol spacing="normal" type="1"><li>
          <t>The client instance calls RS1 with an access token.</t>
        </li>
        <li>
          <t>RS1 presents that token to the AS to get a derived token
 for use at RS2. RS1 indicates that it has no ability
 to interact with the RO. Note that
 RS1 signs its request with its own key, not the token's
 key or the client instance's key.</t>
        </li>
        <li>
          <t>The AS returns a derived token to RS1 for use at RS2.</t>
        </li>
        <li>
          <t>RS1 calls RS2 with the token from (3).</t>
        </li>
        <li>
          <t>RS2 fulfills the call from RS1.</t>
        </li>
        <li>
          <t>RS1 fulfills the call from the original client instance.</t>
        </li>
      </ol>
      <t>If the RS needs to derive a token from one presented to it, it can
request one from the AS by making a token request as described in
<xref target="GNAP"/> and presenting the existing access token's
value in the "existing_access_token" field.</t>
      <t>Since the RS is acting as a client instance,
the RS <bcp14>MUST</bcp14> identify itself with its own key in the <tt>client</tt> field and sign the
request just as any client instance would, as described in <xref target="authentication"/>.
The AS <bcp14>MUST</bcp14> determine that the token being presented is appropriate for use
at the RS making the token chaining request.</t>
      <artwork><![CDATA[
POST /tx HTTP/1.1
Host: server.example.com
Content-Type: application/json
Detached-JWS: ejy0...

{
    "access_token": {
        "access": [
            {
                "actions": [
                    "read",
                    "write",
                    "dolphin"
                ],
                "locations": [
                    "https://server.example.net/",
                    "https://resource.local/other"
                ],
                "datatypes": [
                    "metadata",
                    "images"
                ]
            },
            "dolphin-metadata"
        ]
    },
    "client": "7C7C4AZ9KHRS6X63AJAO",
    "existing_access_token": "OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0"
}
]]></artwork>
      <t>The AS responds with a token for the downstream RS2 as described in
<xref target="GNAP"/>. The downstream RS2 could
repeat this process as necessary for calling further RS's.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>IANA is requested to add values to existing registries and to create 5 registries in the Grant Negotiation and Authorization Protocol registry.</t>
      <section anchor="IANA-well-known">
        <name>Well-Known URI</name>
        <t>The "gnap-as-rs" URI suffix is registered into the Well-Known URIs Registry to support RS-facing discovery of the AS.</t>
        <dl>
          <dt>URI Suffix:</dt>
          <dd>
            <t>gnap-as-rs</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document:</dt>
          <dd>
            <t><xref target="discovery"/> of RFC xxxx</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</t>
          </dd>
        </dl>
      </section>
      <section anchor="IANA-grant-request">
        <name>GNAP Grant Request Parameters</name>
        <t>The following parameter is registered into the GNAP Grant Request Parameters registry:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t><tt>existing_access_token</tt></t>
          </dd>
          <dt>Type:</dt>
          <dd>
            <t>string</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="token-chaining"/> of RFC xxxx</t>
          </dd>
        </dl>
      </section>
      <section anchor="IANA-token-format">
        <name>GNAP Token Formats</name>
        <t>This document defines a GNAP token format, for which IANA is asked to create and maintain a new registry titled "GNAP Token Formats". Initial values for this registry are given in <xref target="IANA-token-format-contents"/>. Future assignments and modifications to existing assignment are to be made through the Specification Required registration policy <xref target="RFC8126"/>.</t>
        <t>The Designated Expert (DE) is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-token-format-template"/>.</t>
          </li>
          <li>
            <t>the format's definition is sufficiently unique from other formats provided by existing parameters.</t>
          </li>
          <li>
            <t>the format's definition specifies the format of the access token in sufficient detail to allow for the AS and RS to be able to communicate the token information.</t>
          </li>
        </ul>
        <section anchor="IANA-token-format-template">
          <name>Registry Template</name>
          <dl>
            <dt>Name</dt>
            <dd>
              <t>The name of the format.</t>
            </dd>
            <dt>Status</dt>
            <dd>
              <t>Whether or not the format is in active use. Possible values are Active and Deprecated.</t>
            </dd>
            <dt>Description</dt>
            <dd>
              <t>Human-readable description of the access token format.</t>
            </dd>
            <dt>Reference</dt>
            <dd>
              <t>The specification that defines the token format.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-token-format-contents">
          <name>Initial Registry Contents</name>
          <table>
            <name>Initial contents of the GNAP Token Formats Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Status</th>
                <th align="left">Description</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>jwt-signed</tt></td>
                <td align="left">Active</td>
                <td align="left">JSON Web Token, signed with JWS</td>
                <td align="left">
                  <xref target="JWT"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>jwt-encrypted</tt></td>
                <td align="left">Active</td>
                <td align="left">JSON Web Token, encrypted with JWE</td>
                <td align="left">
                  <xref target="JWT"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>macaroon</tt></td>
                <td align="left">Active</td>
                <td align="left">Macaroon</td>
                <td align="left">
                  <xref target="MACAROON"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>biscuit</tt></td>
                <td align="left">Active</td>
                <td align="left">Biscuit</td>
                <td align="left">
                  <xref target="BISCUIT"/></td>
              </tr>
              <tr>
                <td align="left">
                  <tt>zcap</tt></td>
                <td align="left">Active</td>
                <td align="left">ZCAP</td>
                <td align="left">
                  <xref target="ZCAPLD"/></td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="IANA-token-introspection-request">
        <name>GNAP Token Introspection Request</name>
        <t>This document defines GNAP token introspection, for which IANA is asked to create and maintain a new registry titled "GNAP Token Introspection Request". Initial values for this registry are given in <xref target="IANA-token-introspection-request-contents"/>. Future assignments and modifications to existing assignment are to be made through the Specification Required registration policy <xref target="RFC8126"/>.</t>
        <t>The Designated Expert (DE) is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-token-introspection-request-template"/>.</t>
          </li>
          <li>
            <t>the claim's definition is sufficiently orthogonal to other claims defined in the registry so as avoid overlapping functionality.</t>
          </li>
          <li>
            <t>the claim's definition specifies the syntax and semantics of the claim in sufficient detail to allow for the AS and RS to be able to communicate the token values.</t>
          </li>
        </ul>
        <section anchor="IANA-token-introspection-request-template">
          <name>Registry Template</name>
          <dl>
            <dt>Name</dt>
            <dd>
              <t>The name of the claim.</t>
            </dd>
            <dt>Type</dt>
            <dd>
              <t>The JSON data type of the claim value.</t>
            </dd>
            <dt>Reference</dt>
            <dd>
              <t>The specification that defines the claim.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-token-introspection-request-contents">
          <name>Initial Registry Contents</name>
          <t>The table below contains the initial contents of the GNAP Token Introspection Registry.</t>
          <table>
            <name>Initial contents of the GNAP Token Introspection Request Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Type</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">access_token</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">proof</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">resource_server</td>
                <td align="left">object/string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">access</td>
                <td align="left">array of strings/objects</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="IANA-token-introspection">
        <name>GNAP Token Introspection Response</name>
        <t>This document defines GNAP token introspection, for which IANA is asked to create and maintain a new registry titled "GNAP Token Introspection Response". Initial values for this registry are given in <xref target="IANA-token-introspection-contents"/>. Future assignments and modifications to existing assignment are to be made through the Specification Required registration policy <xref target="RFC8126"/>.</t>
        <t>The Designated Expert (DE) is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-token-introspection-template"/>.</t>
          </li>
          <li>
            <t>the claim's definition is sufficiently orthogonal to other claims defined in the registry so as avoid overlapping functionality.</t>
          </li>
          <li>
            <t>the claim's definition specifies the syntax and semantics of the claim in sufficient detail to allow for the AS and RS to be able to communicate the token values.</t>
          </li>
        </ul>
        <section anchor="IANA-token-introspection-template">
          <name>Registry Template</name>
          <dl>
            <dt>Name</dt>
            <dd>
              <t>The name of the claim.</t>
            </dd>
            <dt>Type</dt>
            <dd>
              <t>The JSON data type of the claim value.</t>
            </dd>
            <dt>Reference</dt>
            <dd>
              <t>The specification that defines the claim.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-token-introspection-contents">
          <name>Initial Registry Contents</name>
          <t>The table below contains the initial contents of the GNAP Token Introspection Registry.</t>
          <table>
            <name>Initial contents of the GNAP Token Introspection Response Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Type</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">active</td>
                <td align="left">boolean</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">access</td>
                <td align="left">array of strings/objects</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">key</td>
                <td align="left">object/string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">flags</td>
                <td align="left">array of strings</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">exp</td>
                <td align="left">integer</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">iat</td>
                <td align="left">integer</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">nbf</td>
                <td align="left">integer</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">aud</td>
                <td align="left">string or array of strings</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">sub</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">iss</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">instance_id</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="introspection"/> of RFC xxxx</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="IANA-resource-registration-request">
        <name>GNAP Resource Set Registration Request Parameters</name>
        <t>This document defines a means to register a resource set for a GNAP AS, for which IANA is asked to create and maintain a new registry titled "GNAP Resource Set Registration Request Parameters". Initial values for this registry are given in <xref target="IANA-resource-registration-request-contents"/>. Future assignments and modifications to existing assignment are to be made through the Expert Review registration policy <xref target="RFC8126"/>.</t>
        <t>The Designated Expert (DE) is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-resource-registration-request-template"/>.</t>
          </li>
          <li>
            <t>the parameter's definition is sufficiently orthogonal to other parameters defined in the registry so as avoid overlapping functionality.</t>
          </li>
          <li>
            <t>the parameter's definition specifies the syntax and semantics of the parameter in sufficient detail to allow for the AS and RS to be able to communicate the resource set.</t>
          </li>
        </ul>
        <section anchor="IANA-resource-registration-request-template">
          <name>Registry Template</name>
          <dl>
            <dt>Name</dt>
            <dd>
              <t>The name of the parameter.</t>
            </dd>
            <dt>Type</dt>
            <dd>
              <t>The JSON data type of the parameter value.</t>
            </dd>
            <dt>Reference</dt>
            <dd>
              <t>The specification that defines the token.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-resource-registration-request-contents">
          <name>Initial Registry Contents</name>
          <t>The table below contains the initial contents of the GNAP Resource Set Registration Request Parameters Registry.</t>
          <table>
            <name>Initial contents of the GNAP Resource Set Registration Request Parameters Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Type</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">access</td>
                <td align="left">array of strings/objects</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">resource_server</td>
                <td align="left">string or object</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">token_formats_supported</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">token_introspection_required</td>
                <td align="left">boolean</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="IANA-resource-registration-response">
        <name>GNAP Resource Set Registration Response Parameters</name>
        <t>This document defines a means to register a resource set for a GNAP AS, for which IANA is asked to create and maintain a new registry titled "GNAP Resource Set Registration Response Parameters". Initial values for this registry are given in <xref target="IANA-resource-registration-response-contents"/>. Future assignments and modifications to existing assignment are to be made through the Expert Review registration policy <xref target="RFC8126"/>.</t>
        <t>The Designated Expert (DE) is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-resource-registration-response-template"/>.</t>
          </li>
          <li>
            <t>the parameter's definition is sufficiently orthogonal to other claims defined in the registry so as avoid overlapping functionality.</t>
          </li>
          <li>
            <t>the parameter's definition specifies the syntax and semantics of the claim in sufficient detail to allow for the AS and RS to be able to communicate the resource set.</t>
          </li>
        </ul>
        <section anchor="IANA-resource-registration-response-template">
          <name>Registry Template</name>
          <dl>
            <dt>Name</dt>
            <dd>
              <t>The name of the parameter.</t>
            </dd>
            <dt>Type</dt>
            <dd>
              <t>The JSON data type of the parameter value.</t>
            </dd>
            <dt>Reference</dt>
            <dd>
              <t>The specification that defines the parameter.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-resource-registration-response-contents">
          <name>Initial Registry Contents</name>
          <t>The table below contains the initial contents of the GNAP Resource Set Registration Response Parameters Registry.</t>
          <table>
            <name>Initial contents of the GNAP Resource Set Registration Response Parameters Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Type</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">resource_reference</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">instance_id</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">introspection_endpoint</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="rs-register-resource-handle"/> of RFC xxxx</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="IANA-rs-discovery">
        <name>GNAP RS-Facing Discovery Document Fields</name>
        <t>This document defines a means to for a GNAP AS to be discovered by a GNAP RS, for which IANA is asked to create and maintain a new registry titled "GNAP RS-Facing Discovery Document Fields". Initial values for this registry are given in <xref target="IANA-rs-discovery-contents"/>. Future assignments and modifications to existing assignment are to be made through the Expert Review registration policy <xref target="RFC8126"/>.</t>
        <t>The Designated Expert (DE) is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-rs-discovery-template"/>.</t>
          </li>
          <li>
            <t>the field's definition is sufficiently orthogonal to other fields defined in the registry so as avoid overlapping functionality.</t>
          </li>
          <li>
            <t>the field's definition specifies the syntax and semantics of the fields in sufficient detail to allow for RS to be able to communicate with the AS.</t>
          </li>
        </ul>
        <section anchor="IANA-rs-discovery-template">
          <name>Registry Template</name>
          <dl>
            <dt>Name</dt>
            <dd>
              <t>The name of the field.</t>
            </dd>
            <dt>Type</dt>
            <dd>
              <t>The JSON data type of the field value.</t>
            </dd>
            <dt>Reference</dt>
            <dd>
              <t>The specification that defines the field.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-rs-discovery-contents">
          <name>Initial Registry Contents</name>
          <t>The table below contains the initial contents of the GNAP RS-Facing Discovery Registry.</t>
          <table>
            <name>Initial contents of the GNAP RS-Facing Discovery Document Fields Registry.</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Type</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">introspection_endpoint</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="discovery"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">token_formats_supported</td>
                <td align="left">array of strings</td>
                <td align="left">
                  <xref target="discovery"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">resource_registration_endpoint</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="discovery"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">grant_request_endpoint</td>
                <td align="left">string</td>
                <td align="left">
                  <xref target="discovery"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">key_proofs_supported</td>
                <td align="left">array of strings</td>
                <td align="left">
                  <xref target="discovery"/> of RFC xxxx</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="IANA-error-code">
        <name>GNAP RS-Facing Error Codes</name>
        <t>This document defines a set of errors that the AS can return to the RS, for which IANA is asked to create and maintain a new registry titled "GNAP RS-Facing Error Codes". Initial values for this registry are given in <xref target="IANA-error-code-contents"/>. Future assignments and modifications to existing assignment are to be made through the Specification Required registration policy <xref target="RFC8126"/>.</t>
        <t>The DE is expected to ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>all registrations follow the template presented in <xref target="IANA-error-code-template"/>.</t>
          </li>
          <li>
            <t>the error response is sufficiently unique from other errors to provide actionable information to the client instance.</t>
          </li>
          <li>
            <t>the definition of the error response specifies all conditions in which the error response is returned, and what the client instance's expected action is.</t>
          </li>
        </ul>
        <section anchor="IANA-error-code-template">
          <name>Registration Template</name>
          <dl newline="true">
            <dt>Error:</dt>
            <dd>
              <t>A unique string code for the error.</t>
            </dd>
            <dt>Specification document(s):</dt>
            <dd>
              <t>Reference to the document(s) that specify the
  value, preferably including a URI that can be used
  to retrieve a copy of the document(s). An indication of the
  relevant sections may also be included but is not required.</t>
            </dd>
          </dl>
        </section>
        <section anchor="IANA-error-code-contents">
          <name>Initial Contents</name>
          <table>
            <name>Initial contents of the GNAP RS-Facing Error Codes Registry.</name>
            <thead>
              <tr>
                <th align="left">Error</th>
                <th align="left">Specification document(s)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">invalid_request</td>
                <td align="left">
                  <xref target="response-error"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">invalid_resource_server</td>
                <td align="left">
                  <xref target="response-error"/> of RFC xxxx</td>
              </tr>
              <tr>
                <td align="left">invalid_access</td>
                <td align="left">
                  <xref target="response-error"/> of RFC xxxx</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>In addition to the normative requirements in this document and in <xref target="GNAP"/>, implementers are
strongly encouraged to consider these additional security considerations in implementations
and deployments of GNAP.</t>
      <section anchor="security-tls">
        <name>TLS Protection in Transit</name>
        <t>All requests in GNAP made over untrusted network connections have to be made over TLS as outlined in <xref target="BCP195"/>
to protect the contents of the request and response from manipulation and interception by an attacker.
This includes all requests from a client instance to the RS and all requests from the RS to an AS.</t>
      </section>
      <section anchor="security-token-validation">
        <name>Token Validation</name>
        <t>The RS has a responsibility to validate the incoming access token in a manner consistent with its deployment.
For self-contained stateless tokens such as those described in <xref target="token-format"/>, this consists of actions such
as validating the token's signature and ensuring the relevant fields and results are appropriate for the
request being made. For reference-style tokens or tokens that are otherwise opaque to the RS, the token introspection
RS-facing API can be used to provide updated information about the state of the token, as described in <xref target="introspection"/>.</t>
        <t>The RS needs to validate that a token:</t>
        <ul spacing="normal">
          <li>
            <t>Is intended for this RS (audience restriction)</t>
          </li>
          <li>
            <t>Is presented using the appropriate key for the token (see also <xref target="security-key-proof"/>)</t>
          </li>
          <li>
            <t>Identifies an appropriate subject to access the resource (usually this is the resource owner who authorized the token's issuance)</t>
          </li>
          <li>
            <t>Is issued by a trusted AS for this resource</t>
          </li>
        </ul>
        <t>Even though key proofing mechanisms have to cover the value of the token, validating the key proofing alone
is not sufficient to protect a request to an RS.
If an RS validates only the presentation method as described in <xref target="security-key-proof"/> without validating the
token itself, an attacker could use a compromised key or a confused deputy to make arbitrary calls to the RS
beyond what has been authorized by the RO.</t>
      </section>
      <section anchor="security-token-cache">
        <name>Caching Token Validation Result</name>
        <t>Since token validation can be an expensive process, requiring either cryptographic operations or network calls to an introspection
service as described in <xref target="introspection"/>, an RS could cache the results of token validation for a particular token.
The trade offs of using a cached validation for a token present an important decision space for implementers: relying on a cached validation result
increases performance and lowers processing overhead, but it comes at the expense of the liveness and accuracy of the information
in the cache. While a cached value is in use at the RS, an attacker could present a revoked token and have it accepted by the RS.</t>
        <t>As with any cache, the consistency of this cache can be managed in a variety of ways. One of the most simple
methods is managing the lifetime of the cache in order to balance the performance and security properties.
Too long of a cache, and an attacker has a larger window in which to use a revoked token. Too short of a window and
the benefits of using the cache are diminished.
It is also possible that an AS could send a proactive signal to the RS to invalidate revoked access tokens, though such a mechanism
is outside the scope of this specification.</t>
      </section>
      <section anchor="security-key-proof">
        <name>Key Proof Validation</name>
        <t>For key-bound access tokens, the proofing method needs to be validated alongside the value of the token itself as described in <xref target="security-token-validation"/>.
The process of validation is defined by the key proofing method, as described in <xref section="7.3" sectionFormat="of" target="GNAP"/>.</t>
        <t>If the proofing method is not validated, an attacker could use a compromised token without access to the token's bound key.</t>
        <t>The RS also needs to ensure that the proofing method is appropriate for the key associated with the token, including any choice of
algorithm or identifiers.</t>
        <t>The proofing should be validated independently on each request to the RS, particularly as aspects of the call could vary.
As such, the RS should never cache the results of a proof validation from one message and apply it to a subsequent message.</t>
      </section>
      <section anchor="token-exfiltration">
        <name>Token Exfiltration</name>
        <t>Since the RS sees the token value, it is possible for a compromised RS to leak that value to an attacker.
As such, the RS needs to protect token values as sensitive information and protect them from exfiltration.</t>
        <t>This is especially problematic with bearer tokens and tokens bound to a shared key, since an RS has access
to all information necessary to create a new, valid request using the token in question.</t>
      </section>
      <section anchor="security-token-reuse-by-rs">
        <name>Token Re-Use by an RS</name>
        <t>If the access token is a bearer token, or the RS has access to the key material needed to present the token,
the RS could be tricked into re-using an access token presented to it by a client. While it is possible to build
a system that makes use of this artifact as a feature, it is safer to exchange the incoming access token for
another contextual token for use by the RS, as described in <xref target="token-chaining"/>. This access token can be bound
to the RS's own keys and limited to access needed by the RS, instead of the full set of rights associated with
the token issued to the client instance.</t>
      </section>
      <section anchor="token-format-considerations">
        <name>Token Format Considerations</name>
        <t>With formatted tokens, the format of the token is likely to have its own considerations, and the RS needs
to follow any such considerations during the token validation process. The application and scope of
these considerations is specific to the format and outside the scope of this specification.</t>
      </section>
      <section anchor="over-sharing-token-contents">
        <name>Over-sharing Token Contents</name>
        <t>The contents of the access token model divulge to the RS information about the access token's context and rights.
This is true whether the contents are parsed from the token itself or sent in an introspection response.</t>
        <t>It's likely that every RS does not need to know all details of the token model, especially in systems where
a single access token is usable across multiple RS's. An attacker could use this to gain information about
the larger system by compromising only one RS. By limiting the information available to only
that which is relevant to a specific RS, such as using a limited introspection reply as defined in <xref target="introspection"/>,
a system can follow the principle of least disclosure to each RS.</t>
      </section>
      <section anchor="resource-references">
        <name>Resource References</name>
        <t>Resource references, as returned by the protocol in <xref target="rs-register-resource-handle"/>, are intended to be opaque to
both the RS and the client. However, since they are under the control of the AS, the AS can put whatever content
it wants into the reference value. This value could unintentionally disclose system structure or other internal
details if it processed by an unintended party. Furthermore, such patterns could lead to the client software and
RS depending on certain structures being present in the reference value, which diminishes the separation of concerns
of the different roles in a GNAP system.</t>
        <t>To mitigate this, the AS should only use fully random or encrypted values for resource references.</t>
      </section>
      <section anchor="token-re-issuance-from-an-untrusted-as">
        <name>Token Re-Issuance From an Untrusted AS</name>
        <t>It is possible for an attacker's client instance to issue its own tokens to another client instance, acting as
an AS that the second client instance has chosen to trust. If the token is a bearer token or the re-issuance
is bound using an AS-provided key, the target client instance will not be able to tell that the token was originally
issued by the valid AS. This process allows an attacker to insert their own session and rights into an unsuspecting
client instance, in the guise of a token valid for the attacker that appears to have been issued to the target
client instance on behalf of its own RO.</t>
        <t>This attack is predicated on a misconfiguration with the targeted client, as it has been configured to get tokens
from the attacker's AS and use those tokens with the target RS, which has no association with the attacker's AS.
However, since the token is ultimately coming from the trusted AS, and is being presented with a valid key,
the RS has no way of telling that the token was passed through an intermediary.</t>
        <t>To mitigate this, the RS can publish its association with the trusted AS through either discovery or documentation.
Therefore, a client properly following this association would only go directly to the trusted RS directly for
access tokens for the RS.</t>
        <t>Furthermore, limiting the use of bearer tokens and AS-provided keys to only highly trusted AS's and limited circumstances
prevents the attacker from being able to willingly exfiltrate their token to an unsuspecting client instance.</t>
      </section>
      <section anchor="introspection-of-token-keys">
        <name>Introspection of Token Keys</name>
        <t>The introspection response defined in <xref target="introspection"/> provides a means for the AS to tell the RS the key
material needed to validate the key proof of the request. Capture of the introspection response can expose
these security keys to an attacker. In the case of asymmetric cryptography, only the public key is exposed,
and the token cannot be re-used by the attacker based on this result alone. This could potentially divulge
information about the client instance that was unknown otherwise.</t>
        <t>If an access token is bound to a symmetric key, the RS will need access to the full key value in order to validate
the key proof of the request, as described in <xref target="security-key-proof"/>. However, divulging the key
material to the RS also gives the RS the ability to create a new request with the token.
In this circumstance, the RS is under similar risk of token exfiltration and
re-use as a bearer token, as described in <xref target="security-token-reuse-by-rs"/>. Consequently, symmetric
keys should only be used in systems where the RS can be fully trusted to not create a new request with
tokens presented to it.</t>
      </section>
      <section anchor="security-rs-registration">
        <name>RS Registration and Management</name>
        <t>Most functions of the RS-facing API in <xref target="rs-facing-api"/> are protected by requiring the RS to
present proof of a signing key along with the request, in order to identify the RS making the
call, potentially coupled with an AS-specific access token.
This practice allows the AS to differentially respond to API calls to different RS's, such as
answering introspection calls with only the access rights relevant to a given RS instead of
all access rights an access token could be good for.</t>
        <t>While the means by which an RS and its keys become known to the AS is out of scope for this
specification, it is anticipated that common practice will be to statically register an
RS, allowing it to protect specific resources or certain classes of resources.
Fundamentally, the RS can only offer the resources that it serves. However, a rogue AS could
attempt to register a set of resources that mimics a different RS in order to solicit an access
token usable at the target RS. If the access token is a bearer token or is bound to a symmetric
key that is known to the RS, then the attacker's RS gains the ability and knowledge needed
to use that token elsewhere.</t>
        <t>In some ecosystems, dynamic registration of an RS and its associated resources is feasible.
In such systems, the identity of the RS could be conveyed by a URI passed in the <tt>location</tt> field
of an access rights request, thereby allowing the AS to limit the view the RS has into the
larger system.</t>
      </section>
    </section>
    <section anchor="Privacy">
      <name>Privacy Considerations</name>
      <section anchor="token-contents">
        <name>Token Contents</name>
        <t>The contents of the access token could potentially contain personal information about the end-user, RO, or other parties.
This is true whether the contents are parsed from the token itself or sent in an introspection response.</t>
        <t>While an RS will sometimes need this information for processing, it's often the case that an RS is exposed to these
details only in passing, and not intentionally. For example, consider a client that is issued an access token that is
usable for both medical and non-medical APIs. If this access token contains a medical record number to facilitate the
RS serving the medical API, then any RS for a non-medical API would also learn the user's medical record number
in the process, even though that API has no need to make such a correlation.</t>
        <t>To mitigate this, a formatted token could contain separate sections targeted to different RS's to segregate data.
Alternatively, token introspection can be used to limit the data returned to each RS, as defined in <xref target="introspection"/>.</t>
      </section>
      <section anchor="token-use-disclosure-through-introspection">
        <name>Token Use Disclosure through Introspection</name>
        <t>When introspection is used by an RS, the AS is made aware of a particular token being used at a particular RS.
When the RS is a separate system, the AS would not otherwise have insight into this action. This can potentially
lead to the AS learning about patterns and actions of particular end users by watching which RS's are accessed
and when.</t>
      </section>
      <section anchor="mapping-a-user-to-an-as">
        <name>Mapping a User to an AS</name>
        <t>When the client instance receives information about the protecting AS from an RS, this can be used to
derive information about the resources being protected without releasing the resources themselves. For example,
if a medical record is protected by a personal AS, an untrusted client could call an RS to discover the location
of the AS protecting the record. Since the AS is tied strongly to a single RO, the untrusted and unauthorized client
software can gain information about the resource being protected without accessing the record itself.</t>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The editors would like to thank the feedback of the following individuals for their reviews,
implementations, and contributions:
Aaron Parecki,
Adrian Gropper,
Andrii Deinega,
Annabelle Backman,
Dmitry Barinov,
Fabien Imbault,
Florian Helmschmidt,
George Fletcher,
Justin Richer,
Kathleen Moriarty,
Leif Johansson,
Mike Varley,
Nat Sakimura,
Takahiko Kawasaki,
Yaron Sheffer.</t>
      <t>Finally, the editors want to acknowledge the immense contributions of Aaron Parecki to the content
of this document. We thank him for his insight, input, and hard work, without which GNAP would
not have grown to what it is.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author initials="Y." surname="Sheffer">
              <organization/>
            </author>
            <author initials="R." surname="Holz">
              <organization/>
            </author>
            <author initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <date year="2015" month="May"/>
          </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="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="JWT">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="GNAP">
          <front>
            <title>Grant Negotiation and Authorization Protocol</title>
            <author fullname="Justin Richer" initials="J." surname="Richer">
              <organization>Bespoke Engineering</organization>
            </author>
            <author fullname="Fabien Imbault" initials="F." surname="Imbault">
              <organization>acert.io</organization>
            </author>
            <date day="19" month="March" year="2024"/>
            <abstract>
              <t>   GNAP defines a mechanism for delegating authorization to a piece of
   software, and conveying the results and artifacts of that delegation
   to the software.  This delegation can include access to a set of APIs
   as well as subject information passed directly to the software.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-gnap-core-protocol-20"/>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MACAROON" target="https://research.google/pubs/pub41892/">
          <front>
            <title>Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud</title>
            <author>
              <organization/>
            </author>
            <date year="2014"/>
          </front>
        </reference>
        <reference anchor="BISCUIT" target="https://www.biscuitsec.org/">
          <front>
            <title>Biscuit Authorization</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ZCAPLD" target="https://w3c-ccg.github.io/zcap-spec/">
          <front>
            <title>Authorization Capabilities for Linked Data</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <?line 1516?>

<section anchor="history">
      <name>Document History</name>
      <ul spacing="normal">
        <li>
          <t>-08
          </t>
          <ul spacing="normal">
            <li>
              <t>Editorial and IANA updates based on review feedback.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-07
          </t>
          <ul spacing="normal">
            <li>
              <t>Editorial updates based on review feedback.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-06
          </t>
          <ul spacing="normal">
            <li>
              <t>Editorial updates based on review feedback.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-05
          </t>
          <ul spacing="normal">
            <li>
              <t>Added discussion of access tokens used to call the RS-facing AS APIs.</t>
            </li>
            <li>
              <t>Updated IANA sections to align with core (and each other).</t>
            </li>
            <li>
              <t>Added IANA section on introspection requests.</t>
            </li>
            <li>
              <t>Added error responses.</t>
            </li>
            <li>
              <t>Added extended discussion on resource server registration practices.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-04
          </t>
          <ul spacing="normal">
            <li>
              <t>Editorial cleanup.</t>
            </li>
            <li>
              <t>Updated IANA requirements, including "specification required" registration.</t>
            </li>
            <li>
              <t>Added privacy and security considerations.</t>
            </li>
            <li>
              <t>Clarified and expanded token introspection request and response.</t>
            </li>
            <li>
              <t>Clarified and expanded resource set registration request and response, include example of use of resource reference.</t>
            </li>
            <li>
              <t>Updated discovery.</t>
            </li>
            <li>
              <t>Allow optional tokens on RS-facing API requests.</t>
            </li>
            <li>
              <t>Tighter controls over derived tokens.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-03
          </t>
          <ul spacing="normal">
            <li>
              <t>Added token model.</t>
            </li>
            <li>
              <t>Added IANA sections.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-02
          </t>
          <ul spacing="normal">
            <li>
              <t>Editorial and formatting fixes.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-01
          </t>
          <ul spacing="normal">
            <li>
              <t>Better described RS authentication.</t>
            </li>
            <li>
              <t>Added access token format registry.</t>
            </li>
            <li>
              <t>Filled out introspection protocol.</t>
            </li>
            <li>
              <t>Filled out resource registration protocol.</t>
            </li>
            <li>
              <t>Expanded RS-facing discovery mechanisms.</t>
            </li>
            <li>
              <t>Moved client-facing RS response back to GNAP core document.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>-00
          </t>
          <ul spacing="normal">
            <li>
              <t>Extracted resource server section.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+196Xbb2JngfzwFRj5nbE+T9FauRdOdbnlLqcq2HEmOuyqT
Y4PkJYkSCDAAKJllu59lnmWebL71bgAlyuV0d3JSPxKLAO767etwOEzavC3M
fnrz93VWtulLM6/aPGvzqkyzcpoerNtFVee/8i+v6qqtJlWRHpumWtcTk56Y
+tzU6eOqLM0E32luJtNqUmZLGHNaZ7N2mJt2NpyX2WpYy1fDhr5qhne/TSZZ
C1PWm/20aadJkq/q/bSt1017/+7d7+7eT7LaZPswzWRd5+0muajqs3ldrVf7
6e9fHrxKzswGfprup4dla+rStMMnOGmSNC0s/21WVCUsZGOaZJXvp3+C1Q9S
+J+8nJqyHaRNVbe1mTXwr81S/tHW+QQeTarlKpN/LOFleJSXRV6aQQobXGar
VV7O/5wkGZ3QfpKmQ3ih2U9/GKXH+WRhavgpTfkkfoAN5aX/e1XPs1LOdT99
ZJpVdWbSp+UcZjA1DE1vmWWWF/spHuG//UJjjGoaYwTf0xtwLPvpom1Xzf6d
O+NmdTbKqzv0pK7wXs00b6s6cct7NkoPl+NsXbTe+p5l49yUwYNwgdnE1C0M
7a9qRh+Ncv7o34JXgmXpkztJUlb1EoY8N/v02qPHr+5995D/naZtVs9NC7Co
H15cXIzq2WTIm8A938nLWXVnPFnBZzf1M4bgY8M3NaUlN+msqhluTPq6MWk1
S08BxOGc6zZ9nm1MbaEqvXX6/OQ2wfuTrM3mdba85N0n+LJMDXPBzC+yTXr/
7r2H8qODCP5vaP+V8hX8NEpPFmY2E1Dofed4lH5fFb9uf+EVDJLlZTs8KKe1
oafHzx7fv3fvu33948F3337Nf/zw5nQff/nm4b3v9Om39775yr767f2H8h2i
FaDT8MnIIe6kqs1wJcifJIANcBL8+snT58/20z0YIn0P/+0BCsMNBZf84uDx
wfHR0Ut3InrRes9AGExWTxajeVXNC3NntR43+D9f3fv2u/t33Gd80XsvsklW
VxWewuOqOstNk17k7QKpUGvet+usSB9n5yZrGQiemAmsuM6K/FcTUzRAynZh
0sdFtZ7u2Yn4WuFKv2IoPTx5/PrwdPv6EU7HeTNZ521jJgSn8aIf8eNwenrp
58cHr54/uWTwB5PhZDIfzWGL6zGi0a8TuJNmZSbdowl39zhbAY4WeYtHhEfx
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
X32PLw5/+O7oh8Off/mqXFarn8d/ePnN6bfvzx80Y3PycDh7e/7o5cnm7dPv
y0c/T+LvaYXNL/XJw3ur5+36wauvnr8+/eP55uDw/fHsyR/fjs39459Whw/f
zoY//ZKfX7iWNMzyPiWf8PKThHHF4s7+l4CJL3vVcq/dC9/75vE3j786+Pm7
H78/Pvn6379+cPDDwdGebqzHtUMq8E2hGEhrKdmxU8ETNd11i7h+iSPH1uFB
cmTNI1oSEF05yjYtkUoqLUTFNimmkhyiUo9z4OBAvWltFOlHrdqGFUhSeQ3/
ANUm0aK03tRS7abf6k62yJUj+oELOUFl39rcB7QcysPb0eM1SrQKTSdqLeYM
Nn9hmdi1+Y5sZ/n3aubIECFD+lumWZ8JyC6jMrB1fbgRKgwWKtTN0F9kW0u9
kiAWpxdJVEzSOuNwpxJiWAhRbUiRIU5LyXaLZdoCn1IVphvnSpGHWCaGAqvi
Ip7wLJfU11TDdiSqj8ynQ6kw0/LnkqbNX1HY4Komf9DMRlRE0TU0Iiza892Q
rCSBzZH3hoyDeBDWXBwcRGJVFid6S36UurK8+oIE2lnWnM+TfxrKf/8kZPuf
+v9MPmqmAfxy697t4e8+prje9KO8CP9/gH8mHzUVwXsiI926z9/Rr4k+T6MX
4z+3v/jPw1sPbtu1Xj2it5nUDfGVP8TW82Acubcti4nk0IVR/wrR4ihS8f5I
LUju6pquN01KQOs1BqYnFGcbX4Nwk2mJwVsIkj0Oq5sNDYSv+OWBmEth0fUH
Ft8UdbYvTuv8hy1Eb9rsR5oK32KzenOZXyasVpQkX9ljkhSncMM22a6biLX7
IeHSgEhJ/bsgWTuIvpNErXE13USqG9dOI9vpdlPo0izHpkZbqB8THlgerAnN
jy72z7pTghd22F9xBU6ARNBofNuqh6fwFF9UiII8np70i7Fmr0iMR+UIlafC
WsX5+lqsb6jRbi9S0R4Thuhse05KaanYXaxTyDFx06vf2HjxnLXHgVSepG1Y
ZS4SVnv8n5H6imqjXF7HJnFHSsLSLqxaTrtY5mW+XC9DrhhkTAgOxE7zPLYX
0PrFubRFZwwLKO1uFOgTCiSnoGMMYJNcgOlDWTbNukWmch/sIFVdIf5cT5Z6
QiUP97G0KKha9JPKTz7OovB0dPLdi/uvXnz/4+vjr786ffTty68fvfnm6OdH
3z5+8uzo5av79747fnXv+eldUaG26YOfpWBorIkn1WylzC72Io/KnHBsDWsU
XpXIiLJ5fYQkGcRrb4hJTDhV3xoGietO44VlkTdUe2B408KlVzY/myL0ZWSy
PWxZ+qG1U1InAk3G0xgkP2zPBrKrS59KUwTxLPI6eeyjClBezJO/I4xWstX4
3Aozt0IMsOJ/d6JkFLuId7iENtpfUXTcniSgugQ3pdJelszByWCLIOr/ztHq
9JMtP+nlMInNUviBbk5fj2XZoHaxSCmeYCstKbbLwfaY7UTpLbhsGfa2Uzpt
KpRYzcOQXSVyQawIyDhh5g3l2Zed6rYkpQV5nT5eJSoY+Vt1UJS3Xh32rhmZ
5kQrM0xnYOsFcQYCh1vjqipMVkbs7FBj3AZdrHbc3+IAUxEveygbVwB3HPdm
xRQ4G5peW4TJErhWAw0gneNwZq7E1Y9ZS0Jh+kQJi/S91QMJ8BSHnCGE3fb7
PuQsfDakjqTvZlnRmHde4z2PA0lxU24x0TkPdwpp1mFgVjQUR3VQ+M7Kmz4I
9UTMPxgFeYJsbJBSt2hoTVx6sSY7alxtjLw7CQS9AuCWMncktYR1tq4jCuD6
togDLMTh6LRWNPhgjYG8sCXanV1eS8zNpPKohOYpeYqIAR8OmoFIwjJiL8bo
0Q3PNlBSYLsYOYiSKq420yM8H8pJwmEl7An9EIVfcYii6kgr4iO/0yN5d1gN
EUi+jqB6bIfdpVHNHFpKREy8riMRm92qyKQB4MugCvxRLdzWXj8yprEHqknC
1UT7fbihGBrUZu2pQhtrsnAdQLSBLM1N3TMc2kdgL8tVUNrM60jk1xvk02II
fPoe6Z2UxpLx0XVGbIDO6/XLw39Pn64qSmyCRe64jLa7hi5fVV37mqsox7Pd
VhFUTYtPo/0N55Ctp77OdMWFH3p1aFypm6i1urc8wS2unUiGOpiyWY8DNbNv
+I6LiUtpXSwqW4uFsu1yB1g5kste7ZhTmf2wJufgTcPsPX88Vw5hy3JJl+zx
XSkbjTXikDx5QET9MX6rUiUsagetylVE1Y/ISC+ciEL0O2vx1mGti2LosKMg
T/YEXcfYAjasjbVsO6iOXqdqXHr/7t306MerlLbH2WRhho+5UuU+4MOQ0ig8
XQyZPqhKJK74+hn89ifnZ5tWxWqRl7CMNkOBEXtDU0A7yxlYwWDOLqo/D76Q
G49HYVfe8clB5ECjp7jwvYM/HDzqeyjOvPebX4exo4+3Wcx5aNBP+56Tbnp2
9OhhffzVD+d3f//CPActdrTVEUfW5ijTPih+tM1SFzpbgsJLiS/pg0JXSwKe
RDAFSefKb4+jhg49mQUgz3erQ0dlLRwJk0ze/sYX1Ipg4TxGiRf0i+JIXaOM
g7nd0jTFtf3Nthn0Rz29G7BkURFJylG5buLjvFkUWGAR3kua9XEsTj12o3iG
1pajdLfGyli5+dhlzFrnwarya7Hrp03HvhUYd4O64l4kS2J72FqfJlmAe6KF
HOH2/G5B7D7WAUpseslx1EA2kKhcUeqOgC2C9R2f84UCtoYGXSVoO4DKgyQT
e0yEVPJsr/+s9vywHxed8/di77xe1GAkFQWRg3LliBeRPYe010lEqmiDkeHZ
RReKBrN7aGGza2yhIBbbhzALk1XVnlyiyzBcxUxnyerEyHl6vK1T5OkBNlfF
N0zFtMzXgPimwjBca2QOrBKeHGdtMuItYdXdM1TAjXFviMbZCXoT55zLRMwI
l2cSoSGDAwulcoszGdiJXQdghMl8heAvdVtUC+MFbVvLTHswIMUqRPeUVHI/
i2TUc09sy9B4xp4NM4vA2rAnu1/SNaL0fG5w7JPZbWZ5yyR8ohwY5k891h63
pOx3n4FeS6zfkeMtxn17nP9Fpv2uTT+QGaOgLJZZwlfsw9pk0z4Z7AKtbX0P
RB7dC578OYqx0ujhLZOSHLp/5050XqVp7/RNqa9bQonDF3dIAL58HSgwt3Dy
W9bhZOrus3yJRUGi4Z0E6onQHQk9kMZ39o2oNLvVXOwxM094o0xUL04ocTIQ
SQZ+30zP9kpZiL7rF5NykJ5FilaPndkrSYO5p2syBbm8Ej9KXRfcrwEfqFlT
pIVOwU0VbdyWusyv47WVOFcilkSyWIwMK/P3dLhzrhaxDXezi7pChM3YCSys
yOKFM0iosa1fFbcxnppzU2CV2WYn5f6gPy7Vv2SbzFMxxKTUiEA78cp1aZgx
sxaCNyrSCqtbk5wjzQUlAM9VJJfY9h7haYecmNhI4XMYL0MhlVSLgRMKwzre
KZwXFSGm1XfZ1WhrXsiXYUkCDnFq4jaexK/3e4u/sFWhi3tIcJ69eXP440+P
/vD164dfv3x+z/phD4O68KhUesW4HKo5jk8BmzatlBLQPO1IZkzEcUsCrA5o
kahxfpBAn8ISC04A1CgbgGU8ofQrOJ1H2dSKA76wkVD8UdfeHgx/kalASvxy
ttZg0L6CFwjbthj4u+6Zai0H7jZI8D1ENqMWqEjt6PHJfBtGu3sdFsRRwWnl
xnYDkvo8iUeauyEWl3UvEuAjKOoPB/AsRj1CBf0eA1LIN3usSHgqCIGrRdVW
mIHbaw+6REARqO4VUujZNkHFZ817nad/7lnG5UILvXI9wSX45GrhZdu6Lhdi
6JVLBBl63ifM0HTBL59i6alXsHHfyft7DGl4zfyv4b37Dx7eG42n7/8y82Nx
nxLSKvnEkh9KFIaEz5+6jRJVrbCupSD62SMXYZFRjVn0ycctj37cTtCbvsYy
QlPxqQeRb1vyhN/RYiSeYqDdYhpt9YtBvfw9tysjwjAS+6Stf+8RDSmrTju0
XT7dT7i4/Q7a0jM467wkG9JbwVUrPnZn02X507mNYmkOzaLpZDy/wzW8C5h4
6uS2g5PHh4feYpnW2XLp+HucVpu8YwmKHKzdgRfrZYYsE+Bt7ARD7xOb0EiT
Bv3e1VFsRarQ5dFJIgvOdY8GdLkwuJ297ikLxHsLIkO4bWtyc1ZVN9X/tUKL
adva5ZH6TGbsTy4SKs6OEH4R34h3yGwdwsuxqxPiv/dOUz+9iqDLXFKaXBSe
DVlSZzZFZ4v9jwPEXU9Ka0/L/VS2ZVZwFe1RuI5Q2emsB9kwpY5oedFj8XUp
f67NpJqX6Eej5WiXYt+nOUitvRoTIa03WkyqKkxES5MLfCcLYuNceEskMUvm
CQOXhvBFJnl4V1mkbdTjSZburmz5kkjC/FOUm8iU8TF9oVLln2/dIKmSRhvi
aLepGHL6BLPz+Ua9DH0Wg7WKks1Wl5IwWT1Z5JjLQjUbOkk32UTCfztaERff
wqmoJsA0dLJJX0by42IKzrHfpcU7YystGi7BT1dOcMDOGTg5OLdu3W1viEm2
IpJA6iCLV2JhXlZTSe8jwhDUqwWNqaE4p4HWsLGloRQksQKcKQ1VbeRypRIA
F1eaQl1Iqk3RfvxdS98o2w7UPrMO8a1FqfkEQN6jKw3DEt5Qi3uuJq9Jummr
Lb7/5BtPAVxsHNDtVHu7Y39vpY3HkkAhe1XzV7RWW8+Six2FepcrLkstuvTD
qGuTXgXeuPb1DaKyK5BZyavUE57tpsC4QBBcovH9NkBiYecMLQlkwy11ij2r
9IB6NqmD50bFb4k4kWUmXCtNwXUe+OgHdnFenU3OCehEYnnYlLiEhTQ0LV6e
sHJFAsvWDJZ73RQW9+fxyf3LUlo6OS3R4+0ZKZ3clWt82b/Pa3wZ/bfDl/bQ
4T/Kl6H/frfbPt2XD/VLt+owFefr290NbV3tlZAQ/ecg4epUHoSLvi7CnMaD
T21Fe9ag/ewIl3vlGIELvPTK8AF48WBR7YS81cC3bIy1lzbq09COSF7i4tEo
fVlJmhtLjzAep8D4NsvYhj+wnEY97fitlx3UbZHCfeNdmpC1OoSbxHXiGqJ9
UmIP/q4HfN9tQigz0h1ACnj14YheCBKAKPGN3oFR4J2vebgt71xGOFEw6DrJ
tY5P5i8HUxKDDBxsIc/O9MSyxNIELcWBbIvXVYfyDMe+RdQ50LkZVdg+STlz
FBCh1QbY8axvvQ2sE6yRBKW/Y+LfEV4sy9/NBaTdJHkUDZrvcwylv6wlXars
FF3iKOzBTv7mU8+P5gefBAFZHF8aRk1HsRuY3+zsv17/iDYoGhYyH3Flte9/
uxML+w5iJMrwhzcn+6n5ZXP3kqSTq61MPWakf1iILl3X35CFqNf3JW/1o/51
8pSiBKPYg+ZkeQpkcMoTkuZtpIy5Q/QyFSMAerAyWRsIkJSVgxX9GhRcKaBc
iqPM1jVZibj6MipyqN6B0ldi77Va+s59IKUPLWH4MOi+iXradKrBIZi2pARV
LN250YrT6QRWCtThof9IvRsk074086rNXZnRILGfqt1Q1Vovp/HGjfQNFu77
kYo+vD4+lLUOXTk/yaTfc1X99uhFCm57z7vx/HciXISjerEr2EROYhL6im56
0ScJznJCs6DFwc2fJI8XWTk3qbhMClPjC4dPT58BLwnsLloVCJ8H9Tw51ul/
njx9/gyrYZ6Q5RDfegUUO8PSU3Q4pNIH/YmwaZGmhslZkUJhwxT4uJyRxxld
thzV5XPoZe0nyUv4DZf4rhen3sHESMrhBbawJcmxK2Oy31PzLjoD3W5cwrkb
aCQmLluNUa1bGQ/ga7ADQhc2qir0Z82Z8QEaQXUJi6LG86yt28iQNm+xCsde
d2V7mObCNgbBHmuQs1+jH5ArKvSHTA21kjJShGdrUfJQNFjaumRkiRB4CjHU
vUkTcZUIMYC4Lg8hQB6ruS5wZK0qYL7ocvxXLGt57/7XNtjliWFbGHzx9D1o
um1668nT22SfpqAmPkhTNuuapQzKxkP50p+gEXhkAcIA98JzDyIH+k5H38TV
DL3wwpviAMu1XLoLdC022jnLNcawAXQ2vXK8cafoUi0vm0SrbDXeG2EuvPUZ
+2G33MDQeZu9FFGpJBx2S/QqEnvCVliV4oaNewUIO9XD7METd36Mu2KlLLOl
VzsWXxwpAYI33iwMnRl2+BLVx0Xr5TZDDsTDUfpKrUdeS94DyemE3T3B0AvK
XaQ+0ta6DbN8H5rke2zxsaWMl2kpiuwltHKTlOubuqOv8eQUZ+0JPtZi5n0n
aPEzST7iEX7kc/ro7eajXRNo6aA3p/H/JB/f/XLRDhGPzPTdRzkgVNHJO/TG
jJmwDFJ+hQULEHvhDW1kqYPANPUG80suHce+pUM9jYZaStXuYBQt5U3verW8
8YMx1/IO3pf63vS6LfBNb/86yVbBqz8/BuqJ7+E/nj+h1z7sM3H9lz29kqjP
ymUhqKO9tMMx+lPvg1vtz7jfxk48ZhLVX//iPKV37b+Nw/Tu9R8Mp5/h9B9W
l/9Qj9nL2Q9IlotqTj4bWCgzIPqsiR029hKxWwic/XmVT1OUDwvQhlm6Lyfs
/smxwfjWJYTMqdkA1L2XcOQlRf42zmuJPXL/GjyKIXQ39nTFaW/lVrT6EcuZ
8pjLcmPOO8XKBNtUL9o1mYbOcg1ucQWuMWS3dIBjQ7XmfBd5fjX9i+mDVaCY
K+GBBHzIF8w/sjj+sRu7Fgjg8BXldO3+euSY/RgkD39Mrx6AV/lxW+L31Uu4
Fg/p5w/X4SjazWDr1f93ZCW86C/JS/7BQ3bgIf/gHf8ZvOPvhmf8l/IKlNM/
Sn7TDnT/N5Ptj2dmc31uQXUXOrPuMBsg/UcpD7DD23nWXuPtcjy7xtvZevpx
ewWCHQZo1uPd+XMOl7T7yy5NYOePfhP7jeLdQ/57de5W1wx6efbWdpshVyX2
47SCmrutBCRJQ5svyrGvs83P5eCXHst/Bi8XFnxsznN3EP/dWPjlp9Rl5tZq
eH2G7tV2+yJMfctSdmfsnofgizL3IEH0Cua+4/lvZfN2D7uw+igO9TPtiruy
+x0R8Lcw/muRy121x0sZ/KV9SK5SFNMmyuS/9ohbkuo9zvUZw/VnfvuC0XUG
3ZE5ft7V7cwshcvuzi0lr+xvjl12Nvql+aUklfyDYe50TF+UY35JFfg3c8u/
hhr8JThlfPD/TVilP9tvYpcx/v21+GWXYl7NMLvZnJ/LiXw1LP3sMfqSpj9z
RV+AjV1yoiEf26GtlgKJ301rB14V8CRBRh2A4wEyXcOX5VhXb+mz+ZR3BP/g
Sn2H0hM+gid+ff7TLQz4+fynZwm78x5ZyNXM51KOYwPKD06uZDa957k9nEQC
qq9kKxwH/ZksRWfZjZ30oslvYh49OH01i7iSKG8LDrxE2+kzIF4yjMelejp9
7raU/m7Fu33b15vymnvYlRvtwEmu4kF++uSHOGvyEp4jVQPp3bDJp99AXVPK
/0rcxlv85/IXt9m/AYff078eS/HOoctQOCvXL1l5RSiigkXl+kcwj0BKFNRF
qkTbiHJyeF6PewS56y5p0PIUqrxZlZxITLzDFf7sLl9z/DkH0Vaa7KY52cPm
9cO3IS/hXcT8pO8wE8Tq82aVTQCt7+59Sgh4uYWyHKDYiyhTXXUrqQQQBVwr
Qt6Sqpa2aIqcp/eccZMPilJIKWGAcGSAkABfwq1sXGl2ald8yJ9JCjYmoGrW
GRxdnZtz7giysqHk3oxSammqi+U36PvaFOYcQ7ClFiZmtANeFk3llytPx+tW
c5fVPhUxwpj/9aExMCk6449bz44YVlAG4COoDWFhjR69ozdh/xpfiuHxyg+u
zQb6cuGF8IPGMlnXmEDeyZrQJ1xDRKvkKCiVjKvnRq+CqaEW2LSsARGJyAmn
fgzSHLN38BGqQkATE1hNVc4B1ABS4eSyuZB/WQ/OhhmCrhhAo0uehEvGCmw6
OP+UcKubVVFtlno+uA7OvTh9fmKbEFdE/E+Bvzc5hk3qHMO2QIg5IAIqHYrh
RTpgIuPIXgFRqT+mwV4h7UVVn+HSSoXlRXYeUH76BCcHublat4WrZfTo8at7
3z389ClhCkktjIkARfdrcwX9TGmisyAy56t14bJQKBsUq7Ln3H0Bc1WxzPEZ
2iQkxV7rVfib5GoSfenkzLq5xEvnC3mI4nipEra4QP/oikn450vhAK7QxCdb
ZnJBGYiyvZxzXNO4zm9vmj9FauNRYCl5KTyDu7AJig4kRskzKiBazIYiA8Nd
UF+YwmtY6bqYVI3tKqOXFlaBleR3mbVxFa55lCRrbFWNsCuNV3YDj5ZYuKtn
K/RRK6zxvVM5bhQrekpP28xKznZEwOMa29ZIM2zaTWF0i67UKRc6qI1XmqRa
ZciIPLnNha+ELSbDVqoen/CZ/no1zVjMiIo7swpIXXkqr+FGX+5nf6F7P1U3
bu5JQ5E4dOg15/HqyKS3MuB0xC/hcIGd0di3+QMnHLlqDP6xY75r0KUwvdUY
wzzswwcL7vDakLSAT59oYC04yL08vfGaNZcT4vZXBIu+qfTWulkD9m147Xn0
dEsTBQdrWDoD8Vk253pcSKdf+OPgxBeVeeAkeXpO/ahIcsUtd3sbOXpHqgdN
GzRPlCuNsCAYDAuAmyRv4jruHlnMXFmLiquuUN8vrr/imlNWZaENsbyWVNLG
qgtVffdEZAOBM1yx1Gvh3OeBT1elrzJXFAHyBOMsc0QByZynnmkzQgogRGum
alyJ2HZeDprWH58kY7OpVCS17Wi9y5UyIMdHTHGxqCGus0N5j4lqdAnwBNON
P9lkcA1M08+0v0dJki+QtnPbYmwgAgCVVOKqXZR/UYGyvAJZO8W6UcKhMa1G
GaRuMK6+nEi73qtxfiC3zcdNO1A0sI0K4o2wKdS1Z1JnNhlEauLOsxl9qh3t
adxpd4yg9xbtYolKfUbq8CRv2LaVTZgi+1LPPtJzqq6DdK9nAt5AAlcBKjBW
T5HinLZ+EJZvqhu/QQOi2sJkoLmQkIxlyJbGFhjnS7MYWKCyS5m1JVUfAqFr
YiV2jygntgMxrHCUcukcf8FcXi0v/SI+3NwtRgZ7Tqn0npPzwxUQvZC+TSuv
3CJXvG5cvUaaeKASEXN1XTiVrp8sjIIq9wnnPiawVNBNWnrzIts0o/SotIex
xHYHDd1PspS+o1jjC793VXNnBnv0WC8YzQRDV/WUy8GOsyLTMgrxbVl5Fam7
AcjDaM/TipsbcTU82Rm3onNnxyIQgCn29rkA3QlUdqfCatGi4ERHKY7cLCop
vKufYb89XNwYbn6Wtx6Iuw1R4dYc+402C1StDqXrILAwVyqJmGlJFh26Waxr
iyhVV5IcR3JM4UmKVJPEcmNdbdASfKA8hSUtx02QCQDtRTGfhQNQLo298cBU
ypTP9pHdIm86wp6Q6Id/c/euzoK6fXCtbDG2tdFwJ3iPdoVdXqf1MS5hNx0p
WGpZaAo8DOfRB69LpKBKxIpxsX1Ck9ZK/Wb0wG/spoVO4u36Taeo2+NOXE76
qQjTtKcayB984lwsRuQ2AjN7wJ4Fa9vS+vqtUOH5nj4dInN4xgwkJ4sK+Uw1
S7JiDny0XSypSJ3rfSWrs5MDWuGeg9sH9DIrlCXZgQIcEnDJF06UKDqmU2zI
ZSLNvS1NIVPVmjwDaEvXMmuKRjJ5aVCq6uV2Ga804FVaoEaqIzOJWa3QssOi
E0qaDa4WqLO85GttT99jgz9m4FGtGJBv/URTsR1FpdVmIvA4+GCKUJjsjK+X
EYYlAaeaxru3kGH1Yi94Ho+zQbGECFCgVlDRHKtJL/lAjLepkRiz0YRK9ITE
avgGVo+DTBiK/JZ6WhOC/mlb/2XYH7hmMQ+zWZn8W01Wi/yR0uwv0dW28Ize
aOcWGdnCkiPXVsulB5b28Y0dm+FrQErW9WH2jqxXG0Da4XgzrJtP2ztoRk0E
bYFIbzcK3Yh12smULkrVPVtCP/UK4VmJbYwiVz4503IMtRmK0BWVCoyKK7Ge
IiVI020F/cbrvJgmcCkbEBOWqdRHPDNccVA5COLkzNZqnJmMS9DxcE0mxd7N
+wnXvNhucoD7TLJSIna4FOGauKDWR1nznVgRqUOc4wIRUsM6mEWEG4K5xNKW
m7bkEkOmNt90uqNcijc/WnRAXrQuyXVR2JZPvf2OEg/wtJtdv5HegSInLkem
xSR5gwjFCNAqw9DWWEFtAQuNRX5mCkIQERalKmEwMMtPPr1IKPiBPB1I8Em4
iIyGU2dl6SgLwn2l66qr0cRSnUgiCdsnY1ukE070nGRr1ND2OhLNEdD7IZIW
p9CpmVvqrUfWwQBiltXUFCDVna+LuW++67e9hHXEbE1NsjcRVIwsscQmP9iR
u12Ikm+XgWIkMDuk9dYmGAhCZHEjkOnrvcPmTJRKsAqF3jyir2Fvs9fZR3t/
Ya0cIqwcDtCEAERnMPDJO8YQEF1ocAu1SbK+fsDU5Lgh51Q2gTWCVgCsNgdN
gUsOoUOjRxyS7pLpHD2W3QZmpFCwSC+0abxxDJLVQpIkSANKH20YnxVKgwH9
Bhz4VcKVf7WKtrUbMntSgET8V5OmqrlKM+LbWLGwEpTcj/VwR2WRPnmuRZDO
ygmdF9wHcHxgYtJ+d83OUJKVXDs7MV9Zv1WD0RFxM4SGiKctx+0annN9JVrh
pTFeA+nXLBZAFuetiTMZV1o28cQSFGU234PifY5FnhsVhNh9TB3jLRbUle3T
fuCaO1FvvXVLNhyW4RhhkhxrNbPzRPDTdTuQFiFeNwOBs5LWzx4RuCLtaqwX
4cqmaltmW0o3URzJZ8jnhMiJ+a/Ukadc1LrdoNObymwtK+SMBDcrJNxY1pEX
UyAjCbmB7caCeid1cVxJ/xO0JoESjLhhF9mENflcjFFwDFoe3qqoEjJkMMpS
XYpwqBNcWqIOyHxGg7Qp3AqX7JJgNz4pFP+qFPFrzrbi3LXMEImb0BERG5nk
Jq1hSxVpCq7SiBdb0O3e0UTS2aEYX9NnUrH7demMrolo3aEA7egMUuWuT4Y4
smWLashHkVpjiMM6jq7IY8K6vFW0uARxZw4U+ibo/WAHIC7Xdj3bIjOqyAhi
nZqbE+2cnVpB7+BkaAsTkeBMIyJ5bLuFIKndY9X6oV0tNlnq6birdT2BJoYd
nFmmPjgRpLJF5riys6/gkt2iwbA9+C6vpbRz06gEIHISYS0hTrNmoljOk86B
C0jP17n0YfDFDau/urnJzLJawXk2Vuwho28ofPFJxdMhko3NIkNeO7NgQcZh
lilpGgIzUFgoLm7KxsglRgyVs3y+1i4vVoWmmYyCxoCrQztjtH7Ga5sb0dCa
xMoAHghLaDhzy6qxXqhoNuJUjPRa61aE0mBpwcCjpEukPXYO/BtVlYJYLsUp
WhHF4iALknlEldSekMmdIbSqQiOru+BgLoTJoG+OA8tVRqRWg39Y/DFY9T8n
pX8LMTpW9jEugPDRjfaehOe80SnEJu8V+avDHlpkaaqp7/jAeXzZVllsvFp6
rDD50zryOK9ghhqAn6V0fy1I/fURaUm+nS3olJsEnCaQekRn62rhEf1oVBJK
F4CduBh7IjdD5WiS13AIjC9Ngk2VTCltRi0WEmwwECi9QRqUc7iCGhGM0Adb
2TgiBv0aUpgRDHtj/vAj7IHF+n65+FJJTD2sLvrby8VwxJKtsqy4Jz2Ke+Bh
t6bFKPhglD7OVixhXNYQmuDWvAd2ZkRTsuZwvS7f7pPG7WqazXKJoUUT36sE
bMI59rgVM9UbbmSm6SBRyc3qzcI3yMjguIG96nHWMA1Uhye6ycgPKYxC/BgV
SV0ic5FSlfSrUr1d4ZEErEuq7Onc62yAjY0eeWhassdgmWTQ/zg0yJA2jydi
C0FbR4XebXLZ3faZJ/pco55AzIfheXMdYHkxI2jjxVDLxofCzMV2+OavsCy5
vcsRdzTCG/Ew2O9twcJ4A3iODr46b86cK9C3/JFsyvDA5p/Q4nWlud63o8FR
oJWD7agF2v/0whICc1+U1IiIWAn1Kf1YpU2lX3A41LNj2wElQhMjW5loVidh
YCIixwtykFGMlmchtIpTrdE4L9A/psH8VrEO4zxU5+KfsCkZ1iuvjZpeGd+c
n9g6hhKV+C0UZuQ/wpfIlu86gQfg6UO0LUMuo7pq3Qk3s/ZxFrB4VVhOTuKn
VYvDGv4iHaKgjIZcFg8dKbV6BY8rdZHxCQe+iHfbqR9oMbBqN5Cn5oIbt4dk
kz+k1VkKF3el83V6jlsme47a8xK0g0StyyPaYu2v86oi4dM2RsH5mHPAhbHk
xVZkkoi4dSXKReheTpmOtbahAfvqKJydjFoaP5IEVi21rrquzFMmjpilQVY3
OXOibmPiuhgTlE/kpDXxFqONBnwzdJBBfIi9VdfpFCtHi+Y5KVAOa7j1jTwf
gfhRTjOSi4piEwhebJGZzYyqNDqmtmKgYM/Go4cZ6JvztbF+0gRV5uWK1ujl
DqvJNRxwCbRrQk0TPPAJgL7BaPC8dTcr4ShqrmpDKdrqapeb+aUnVR/fQTIm
u23Ci5dwsDIWxWHFc5tTojQewQi/BhycGxE5EvFke00yTNEYookjCj5tENoA
5oRcArfZlNmSLtejatUsglXPgu0OGJY/Mxnp1sRKCCPtwCTIEEFpN47WOYQB
LefcbDRWCgOiRaLXXgda0F66HSSVz9nDxpI0W21wJCdiK30hMZUVVsw48/QM
tRIlgRERCX36qs7PMZSjE8srDz55hohr2JC7oo/ESlL3n05TYycDmXKK3BXQ
4fho4CxR5Ak1/6m2ZIldKa3UhCCFIR2N2JA5EtZtAmmXi69BmoVelllrPPlU
YyFY7BDRU9ACxF1riy7Z4oyQQmMhfCIzD0x4HJ0p3Q0GLvzZamSKfGIAiGm6
PE6EAuD6yZK5JAW/kEmxsQD/DWyqEbLQ8TJpNlhmv8YmcjUMsF6OmQAhqweM
Fi0hIXdwfa4w7E0ixAH9L8cn4g6O1iGKJEmHBZCjUlU+JCO9K9DIJBuDZry4
RDoJHFa0cnUSUIidBJjAWMBIrQO4o3RnsX9Ko8wE8MXoaFzGgrWPdLg+0Wsz
B1qFH2A24Cg5KMgYi/5qYjXdUNo4eNYRBMontPZvZ0UfXGWo9+2Q6CJ+4tni
xVoQaKXS+TJcVu4ajxHoW2tpLn0IM7L7cjhCFGcnujR9TzG53gtoAHijbEQ6
0XjHTETOzsUAgzjkgpTZMwhYg73UhUhKOxvsX81KHBpRHB1LfMs1DEvAx9o+
kjBr5uY4OSsAe6s2bMWqWV7KWg67ZMGJ7p5s4BO2sCecVSTFc0AC50zZDC+j
TjVmPnHHEOuQgAOGtKd+ciuyD0nlJ14/SI1JDwAqkVZG/UM5fqk2MBXkNbAH
5dDMRiT4AgwwUlOQNORTtCSfdekJG2CdipA5jsJmOC+1Qg5Doz1RyNVmi2rc
oqUoB06sC8Y/GF4sTu73VWTwBaaEwf+SjsLyD3sFkX0RTbKrIfNl6UXgSmc6
6/jA0+73AAYHtvV8GWjCJQvTI15/MLFy1FJSnuKfJJcCjrzFtDtGGnSoMshn
5RlbC4A+jtEerLEA1uKH2Vrn+XQNlFktSTl6OFAkaeBGw2wbZmzkAMvHa/pp
PznIaux+AicyOcsHycG0zuFgfl9XK7hp+LuEH/L0CRwCkEf8u8zGpoAjfwQr
WmblIHkCdK/ewN+gLlXng+QZyJJYUW85ztZFC38XFY35vSmWzWSxzKfw4+9N
BeQ4fVYYQEmc6Ic1JmSmxzn/+WPWLgo0W7/Aj+t2M0ieG4DQHyo4FhAbYd4X
eFB/zOoC7bwvgVydgGK5XNewytPsLFvkZ1X6IxC7JsON/UT7PFkYpPxoymTn
gzQI1htQvc1dFEucIGSXjQnPDq8jOD3rYhO/ocYMqDV3lL4xcq2LfEkXxlIN
kURUmlfrdiAhtwBMGIc9sPDGNIs8YwQoCVJXoqnzWqT9C1F2KNsRq/sj1FD/
VM32+h6k8Qou68ONBf/rE+ZbDO9+S2l+w/QpHUQu4gil/HIySOMMcAxeFipH
PMI3nRF2/PDrz/3woXx4MEWzKJKYNft+KKXHt2EriyaiFFlHTljQkrFeS+YL
7dyJDhgUhh3RSO8HRDfpLcoBQr5ODO72KFiM/3ladcVezsgKvwmzXeOH78Xl
62+z9CvzYC5jlJAsenoj5/VV56AnWDlsverdvJ816Adm7oXlDzTPcy+YO1z8
SrSeINY6jMfRDx4Dz8bQTqbfILFnEgLQFb/6cuyuGCYoBBacVd9gtlO0skgO
yTa+PcA5keNDtP4cexYUdVGtJElS07rKyFQXA8cp0gYJRqgr1FbwooNmjXrB
D4JT90JrtgOnfnq/F/9FxCYvXP7eAtI9efmRQfHLM8Kiah+0/Asn7mmaYpP8
9c1noPsZCsCKrlvjR3pe9C4jAP/wg6cKBX2NtVx2lL7+ojq3QoO+f3xigYNI
KxIGIshEEiyZ51O6a+dtERFD8CNslTsYJf8f6EQI9P8bAQA=

-->

</rfc>
