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


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

]>


<rfc ipr="trust200902" docName="draft-filmroellchen-lunar-well-known-button-01" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Well Known Button.json">The Well Known Button Information Specification</title>

    <author initials="" surname="Filmröllchen" fullname="kleines Filmröllchen">
      <organization></organization>
      <address>
        <postal>
          <country>DE</country>
        </postal>
        <email>kleines+ietf@filmroellchen.eu</email>
        <uri>https://filmroellchen.eu</uri>
      </address>
    </author>
    <author initials="" surname="LunarEclipse" fullname="Lunar Eclipse">
      <organization></organization>
      <address>
        <postal>
          <country>PL</country>
        </postal>
        <email>luna@lunareclipse.zone</email>
        <uri>https://lunareclipse.zone</uri>
      </address>
    </author>

    <date year="2026" month="September" day="27"/>

    
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>HTTP</keyword> <keyword>.well-known</keyword> <keyword>Image</keyword>

    <abstract>


<?line 177?>

<t>This document specifies the well-known URI <spanx style="verb">/.well-known/button.json</spanx>,
which describes a web site's "buttons". Buttons are usually 88x31 pixel
images representing the web site with text, logos, artwork, and
animations.</t>

<t><spanx style="verb">/.well-known/button.json</spanx> files facilitate sharing buttons between web
site owners and alleviate issues commonly encountered when doing so. By
utilizing a standardized, machine-readable format, automated tools can
also utilize the provided information.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-filmroellchen-lunar-well-known-button/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/LunarEclipse/well-known-button"/>.</t>
    </note>


  </front>

  <middle>


<?line 189?>

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

<t>"Buttons", in the context of this specification, refer to a certain type
of common image on the Web. Buttons are graphics, usually 88 pixels wide
and 31 pixels high, featuring text, logos, artwork, as well as
animations. The purpose of a button is to represent the web site or its
owner(s)/author(s), often using minimal information to do so, owing to
the low resolution available. For this representational purpose, buttons
are usually intended to be included on other web sites, most commonly in
a footer or other dedicated section. This way, web site owners may show
their affiliation with, or appreciation of other's web sites.</t>

<t>Buttons originate from the early days of the Web as a form of banners,
originally representing the site or technology used to host a particular
home page. The 88x31 format, also named "Micro Button", originated with
the free hosting provider GeoCities.com and their mandatory advertising
banner. For a detailed historical account, see <xref target="Tekeye"></xref>. Buttons have
seen a renewed surge in popularity in the 2020s with certain
subcultures.</t>

<t>The goal of this specification is to provide a clearly defined standard
for web site authors who wish to share web site buttons with other web
site authors and end users, and lay out a format for a common endpoint
that can be used to fetch and/or embed the buttons. To this end, this
specification introduces a new well-known <xref target="RFC8615"/> URI utilizing a
standard JSON format to specify one or more buttons.</t>

<t>The intended use cases are:</t>

<t><list style="symbols">
  <t>to share buttons in a standardized way</t>
  <t>to avoid issues with crediting the original button author(s)</t>
  <t>to avoid issues with button authors' consent to including buttons on
other pages</t>
  <t>to facilitate automation around inclusion of buttons, including but
not limited to:
  <list style="symbols">
      <t>button updates with caching</t>
      <t>helping web site owners discover available buttons</t>
      <t>auto-selecting the most suitable button variant for theming and
accessibility</t>
    </list></t>
</list></t>

<t>The specification aims to be easy to implement for web sites using
shared hosting providers, which are unable to change HTTP response
headers and cannot host extension-less files.</t>

<t>Accessibility is a primary concern of this specification. Images and
fast animations are notoriously inaccessible to users with vision
impairment, light-sensitivity, and other disabilities. This
specification attempts to combat that by requiring image descriptions,
and providing a standard mechanism for selecting between multiple
versions of a button for accessibility purposes.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="definitions"><name>Definitions</name>

<t>A server is any web server providing a <spanx style="verb">/.well-known/button.json</spanx> file.</t>

<t>A client is any program accessing the <spanx style="verb">/.well-known/button.json</spanx> of a
server. Clients include other web servers, automated programs, as well
as programs manually invoked on behalf of a user.</t>

<t>An animated image (as opposed to a static image) is an image which has
multiple frames of nonzero and non-infinite length, where at least one
of the frames is visually distinct from the others. Examples:</t>

<t><list style="symbols">
  <t>A GIF image with three frames, all containing different text in front
of the same background, is animated.</t>
  <t>A WEBP image with two very distinct frames is animated.</t>
  <t>An AVIF image with several hundred frames and over two minutes in
runtime, featuring a "gloss" effect that very slowly moves across the
image, is animated.</t>
  <t>A GIF image abusing a frame time of zero to show more than 256 colors
at once is animated, as almost every modern program restricts the
frame time to a minimum of 10ms.</t>
  <t>An AVIF image with five frames, all of which are identical, is not
animated.</t>
  <t>An APNG image with two thousand identical frames is not animated.</t>
  <t>A GIF image with a single frame is not animated.</t>
</list></t>

</section>
</section>
<section anchor="buttonjson-files"><name>button.json Files</name>

<t>The main element of this specification is the <spanx style="verb">/.well-known/button.json</spanx>
file. This is a well-known <xref target="RFC8615"/> URI registered with IANA; see
<xref target="IANA"/>.</t>

<t>A server supporting this specification <bcp14>MUST</bcp14> serve a conforming file on
the top-level path <spanx style="verb">/.well-known/button.json</spanx>. The file <bcp14>SHOULD</bcp14> be
available via HTTPS <xref target="RFC9110"/>. Availabilities by other protocols are
allowed, but the file is primarily intended for the Web.</t>

<t>If using HTTP, the file <bcp14>SHOULD</bcp14> be served using the <spanx style="verb">Content-Type</spanx> header
set to <spanx style="verb">application/json; charset=utf-8</spanx>. The file <bcp14>MUST</bcp14> be valid JSON
<xref target="RFC8259"/>, and <bcp14>MUST</bcp14> be encoded using UTF-8 <xref target="RFC3629"/>. HTTP caching
headers and content encoding <bcp14>MAY</bcp14> be used.</t>

<t>A normative description for requirements of various
<spanx style="verb">/.well-known/button.json</spanx> entries follows. A normative JSON Schema
<xref target="JSON-Schema"/> which defines the basic syntax rules is provided in
<xref target="button-json-schema"/>. and can be used to validate
<spanx style="verb">/.well-known/button.json</spanx> files. Not all files conforming to the schema
are necessarily correct implementations of this specifications.</t>

<t>The top-level <spanx style="verb">$schema</spanx> property <bcp14>MUST</bcp14> be present and link to the
canonical location of the schema version used by the document. The
server <bcp14>MAY</bcp14> provide a <spanx style="verb">/.well-known/button.schema.json</spanx> file containing a
copy of the used schema.</t>

<t>The <spanx style="verb">$schema</spanx> value for this RFC is
<spanx style="verb">https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-01.schema.json</spanx>.</t>

<t>Note to the RFC editor: During draft stage, the <spanx style="verb">$schema</spanx> value is
<spanx style="verb">https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-XX.schema.json</spanx>,
where <spanx style="verb">XX</spanx> is the draft version. After publication, the <spanx style="verb">$schema</spanx>
property should be changed to
<spanx style="verb">https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/rfcXXXX.schema.json</spanx>,
where XXXX is the RFC number of this specification. This change must
also apply to all examples and the JSON Schema below.</t>

<t>The top-level <spanx style="verb">buttons</spanx> property <bcp14>MUST</bcp14> be present and contain a list of
objects, each of which specifies a single button.</t>

<t>The top-level <spanx style="verb">default</spanx> property is <bcp14>OPTIONAL</bcp14> and specifies which button
is considered the default one when multiple are present. It <bcp14>MUST</bcp14> contain
an id matching that of one of the buttons present in the file.</t>

<section anchor="button-objects"><name>Button Objects</name>

<t>The button objects are the objects in the <spanx style="verb">buttons</spanx> list. Each one
specifies an independent single button. The validity of button objects
<bcp14>SHOULD</bcp14> be determined independently by clients; one invalid button object
provided by the server does not affect the validity of another button
object in the same file.</t>

<section anchor="required-properties"><name>Required Properties</name>

<t>Clients <bcp14>MUST</bcp14> reject button objects which do not provide all of the <spanx style="verb">id</spanx>,
<spanx style="verb">uri</spanx>, and <spanx style="verb">alt</spanx> properties.</t>

<section anchor="id"><name><spanx style="verb">id</spanx></name>

<t>The <spanx style="verb">id</spanx> property serves to identify the button uniquely across
revisions. This property is <bcp14>REQUIRED</bcp14>.</t>

<t>Revisions of the same button <bcp14>MUST</bcp14> share the same <spanx style="verb">id</spanx> property, and
consequently <bcp14>MUST NOT</bcp14> appear in the same <spanx style="verb">button.json</spanx> file. Multiple
different buttons <bcp14>MUST NOT</bcp14> have the same <spanx style="verb">id</spanx> value.</t>

<t>The server chooses the <spanx style="verb">id</spanx> property arbitrarily. Clients <bcp14>MUST NOT</bcp14> make
any assumptions about the content of the <spanx style="verb">id</spanx> property, and <bcp14>MUST</bcp14> treat
it as an arbitrary <xref target="Unicode"/> string. Clients <bcp14>SHALL NOT</bcp14> assume IDs are
unique across web sites.</t>

</section>
<section anchor="uri"><name><spanx style="verb">uri</spanx></name>

<t>The <spanx style="verb">uri</spanx> property is the canonical location of the button, from which
any client can access the button's image file. This property is
<bcp14>REQUIRED</bcp14>. The <spanx style="verb">uri</spanx> property <bcp14>MUST</bcp14> contain a valid URI <xref target="RFC3986"/> using
the <spanx style="verb">https</spanx> protocol name, and must subsequently be accessible using the
HTTPS <xref target="RFC9110"/> Internet protocol.</t>

<t>Referenced image files <bcp14>SHOULD</bcp14> have a height of 31 pixels and width of 88
pixels. Images <bcp14>MAY</bcp14> be larger in size, but <bcp14>SHOULD</bcp14> maintain the aspect
ratio, and <bcp14>SHOULD</bcp14> be legible when scaled down to a width of 88 pixels
and height of 31 pixels.</t>

<t>Image files may be either static or animated; see
<xref target="definitions"></xref> for a detailed definition including
edge-case examples. The following image file formats are <bcp14>RECOMMENDED</bcp14> in
order of preference:</t>

<t><list style="symbols">
  <t>SVG <xref target="SVG"/>: static vector graphics</t>
  <t>AVIF <xref target="AVIF"/>: animated and static images</t>
  <t>WEBP <xref target="RFC9649"/>: animated and static images</t>
  <t>PNG <xref target="PNG"/>: static images</t>
  <t>GIF <xref target="GIF"/>: animated and static images</t>
</list></t>

<t>Button images <bcp14>SHOULD NOT</bcp14> be lossily compressed. Of the recommended image
formats, AVIF and WEBP are capable of lossy compression. They <bcp14>SHOULD</bcp14> be
avoided for new buttons, as at the small resolutions typically used, the
space savings offered by lossy compression are minimal while the quality
loss can be significant.</t>

</section>
<section anchor="alt"><name><spanx style="verb">alt</spanx></name>

<t>The <spanx style="verb">alt</spanx> property <bcp14>MUST</bcp14> be provided, describing the visual content of
the button for vision-impaired users.</t>

<t>The language of the text contained within the <spanx style="verb">alt</spanx> property is
specified by the <spanx style="verb">lang</spanx> property, if present.</t>

</section>
</section>
<section anchor="optional-properties"><name>Optional Properties</name>

<section anchor="lang"><name><spanx style="verb">lang</spanx></name>

<t>The <spanx style="verb">lang</spanx> property is an <bcp14>OPTIONAL</bcp14> property specifying the language of
this button’s description. <spanx style="verb">lang</spanx> contains an <xref target="RFC5646"/> language
identifier tag. All fields containing regular text, namely <spanx style="verb">alt</spanx>,
<spanx style="verb">caption</spanx>, and <spanx style="verb">licenseText</spanx>, are written using the language specified
by the <spanx style="verb">lang</spanx> property, if present.</t>

<t>If <spanx style="verb">lang</spanx> is absent, the language of the aforementioned fields is
unspecified. Clients <bcp14>SHOULD NOT</bcp14> assume any particular language to be
used for interpreting these fields, and <bcp14>SHOULD NOT</bcp14> attempt to guess the
language using natural language processing algorithms.</t>

<t>The <spanx style="verb">lang</spanx> property is also part of the properties that may be changed
within a group of buttons. If two buttons have the same <spanx style="verb">groupId</spanx>,
<spanx style="verb">colorScheme</spanx>, <spanx style="verb">animations</spanx>, <spanx style="verb">contrast</spanx>, and <spanx style="verb">uri</spanx> property, but
distinct <spanx style="verb">lang</spanx> properties, clients <bcp14>SHOULD</bcp14> interpret these different
button objects to refer to the same logical button, except with text
fields provided in different languages. The buttons <bcp14>MUST</bcp14> still have
distinct <spanx style="verb">id</spanx> properties, even though they may be considered logically
identical. Servers <bcp14>MAY</bcp14> use similar IDs, or IDs suffixed with language
identifiers, to denote the logical identity of the buttons. Clients can
use the logically identical buttons to select the text fields based on a
user’s language preference. Clients <bcp14>SHOULD</bcp14> prefer buttons with a <spanx style="verb">lang</spanx>
attribute present to a logically identical button with no <spanx style="verb">lang</spanx>
attribute.</t>

</section>
<section anchor="link"><name><spanx style="verb">link</spanx></name>

<t>Buttons displayed on a webpage <bcp14>SHOULD</bcp14> be contained in a hyperlink
element such as <spanx style="verb">&lt;a&gt;</spanx>, linking back to the button author's web page. The
<spanx style="verb">link</spanx> property facilitates this. It is an <bcp14>OPTIONAL</bcp14> property containing
a URI <xref target="RFC3986"/>. The button's surrounding hyperlink element <bcp14>MUST</bcp14>
point to the URI specified in the <spanx style="verb">link</spanx> property of the button, if
available. Otherwise, it <bcp14>SHOULD</bcp14> point to the base path from where the
<spanx style="verb">/.well-known/button.json</spanx> was fetched. For example, if a client fetches
<spanx style="verb">https://example.org/.well-known/button.json</spanx>, and one of the contained
buttons does not feature a <spanx style="verb">link</spanx> property, the client should embed this
button in a hyperlink pointing to <spanx style="verb">https://example.org/</spanx>.</t>

</section>
<section anchor="hotlink"><name><spanx style="verb">hotlink</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">hotlink</spanx> boolean flag specifies whether the button image
should be hotlinked, i.e. included directly from the source <spanx style="verb">uri</spanx>
instead of copying to and then hosting from the client's web server.
Many authors prefer their images not to be hotlinked, as it creates
additional load on the server. This is the default (false). However,
some authors prefer their images to be hotlinked for a variety of
reasons, such as serving dynamically generated buttons. These authors
can set <spanx style="verb">hotlink</spanx> to <spanx style="verb">true</spanx> for the relevant buttons, in order to
indicate to clients to hotlink the button.</t>

<t>Clients <bcp14>SHOULD NOT</bcp14> hotlink button images without the <spanx style="verb">hotlink</spanx> property
set to <spanx style="verb">true</spanx>. Servers <bcp14>MAY</bcp14> impose restrictions on clients which they
suspect to be in violation of this requirement.</t>

<t>Hotlinking comes with severe downsides, both on the client side due to
privacy concerns, as well as on the server side due to security
concerns. The <spanx style="verb">"hotlink": true</spanx> <xref target="hotlink-privacy">Privacy
Considerations</xref> and <xref target="hotlink-security">Security
Considerations</xref> should be carefully evaluated before
either specifying <spanx style="verb">"hotlink": true</spanx> as a server or following the
recommendation set out by <spanx style="verb">"hotlink": true</spanx> as a client.</t>

</section>
<section anchor="sha256"><name><spanx style="verb">sha256</spanx></name>

<t>The <spanx style="verb">sha256</spanx> property is <bcp14>OPTIONAL</bcp14>. It facilitates caching and validation
of the image file. This property <bcp14>MUST</bcp14> contain the SHA256 <xref target="RFC6234"/>
content hash of the image file as a hexadecimal number (64 characters).
Clients <bcp14>SHOULD</bcp14> assume that a button image has not changed if the
<spanx style="verb">sha256</spanx> property has not changed since the last time the client
downloaded the button image, even if other properties have been changed,
including the <spanx style="verb">uri</spanx> property.</t>

</section>
<section anchor="caption"><name><spanx style="verb">caption</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">caption</spanx> property provides a caption or title for the
button. The contents of this property are distinct from the <spanx style="verb">alt</spanx>
property, as they are intended to be shown to every user. <bcp14>RECOMMENDED</bcp14>
methods of displaying the <spanx style="verb">caption</spanx> text include the <xref target="html-title">HTML <spanx style="verb">title</spanx>
attribute</xref>, as well as conventional figure caption text.</t>

<t>The language of the text contained within the <spanx style="verb">caption</spanx> property is
specified by the <spanx style="verb">lang</spanx> property, if present.</t>

</section>
<section anchor="imagerendering"><name><spanx style="verb">imageRendering</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">imageRendering</spanx> property provides guidance on how to
render scaled images. In several circumstances, such as rendering
buttons at increased size, or when using displays with high DPI, images
need to be scaled to more than 88x31 physical device pixels. However,
while some buttons are designed for nearest-neighbor scaling (preserving
a pixelated look), some are designed for smooth scaling (as is
commonplace for most graphics). Using this property, the author can
specify which of the two scaling methods the button is intended for.</t>

<t>In general, any of the possible <xref target="image-rendering"><spanx style="verb">image-rendering</spanx></xref>
CSS properties <bcp14>MAY</bcp14> be used. In this case, web sites <bcp14>MAY</bcp14> use the
<spanx style="verb">imageRendering</spanx> property verbatim as the CSS <spanx style="verb">image-rendering</spanx> property
for the button in this case. (See <xref target="security-image-rendering"/> for the
security implications of this approach.)</t>

<t>The following values are <bcp14>RECOMMENDED</bcp14> for use in <spanx style="verb">imageRendering</spanx>. Other
values <bcp14>SHOULD</bcp14> be interpreted as per the
<xref target="image-rendering"><spanx style="verb">image-rendering</spanx></xref> CSS specification.</t>

<t><list style="symbols">
  <t><spanx style="verb">auto</spanx>: Client decides which rendering method to use; equivalent to
omitting this property.</t>
  <t><spanx style="verb">pixelated</spanx>: Nearest neighbor scaling to an integer multiple of the
image dimensions.</t>
  <t><spanx style="verb">smooth</spanx>: Smooth scaling, such as bilinear filtering.</t>
</list></t>

<t>At time of publication, the CSS value <spanx style="verb">smooth</spanx> is not yet honored by all
major browsers. However, the default image rendering method is almost
always smooth scaling, therefore <spanx style="verb">auto</spanx> <bcp14>MAY</bcp14> be used in CSS instead.</t>

<t>If this property is not specified, clients <bcp14>MAY</bcp14> choose any rendering
method, such as one in line with a page's style. Even if this property
is specified, clients <bcp14>MAY</bcp14> choose other rendering methods for a variety
of reasons. However, client authors and users <bcp14>MUST</bcp14> be aware of the
subsequent degradation of authorial intent, since the image author might
have designed the button around a very specific rendering method.</t>

</section>
<section anchor="license"><name><spanx style="verb">license</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">license</spanx> property contains an <xref target="SPDX-license-expressions">SPDX license
expression</xref> identifying the license that
applies to the button image file and this button object describing it.
See <xref target="legal-considerations">Legal considerations</xref> for a discussion of
button licensing, including recommended license choices.</t>

</section>
<section anchor="licensetext"><name><spanx style="verb">licenseText</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">licenseText</spanx> property contains arbitrary text augmenting
the license data in the <spanx style="verb">license</spanx> property. This property should be
considered as legally binding as the <spanx style="verb">license</spanx> property. It is <bcp14>NOT
RECOMMENDED</bcp14> to specify <spanx style="verb">licenseText</spanx> without <spanx style="verb">license</spanx>; several SPDX
license expressions are available which reference nonstandard licenses,
such as <spanx style="verb">DocumentRef</spanx> and <spanx style="verb">LicenseRef</spanx>.</t>

<t><bcp14>RECOMMENDED</bcp14> use cases for <spanx style="verb">licenseText</spanx> are:</t>

<t><list style="symbols">
  <t>Adding authorship information, especially when the image author is not
the web site author</t>
  <t>Adding a copyright year</t>
  <t>Adding a completely custom license in combination with a <spanx style="verb">LicenseRef</spanx>
entry in the <spanx style="verb">license</spanx> property</t>
</list></t>

<t>The language of the text contained within the <spanx style="verb">licenseText</spanx> property is
specified by the <spanx style="verb">lang</spanx> property, if present.</t>

</section>
</section>
<section anchor="accessibility-properties"><name>Accessibility Properties</name>

<t>By using the <spanx style="verb">groupId</spanx> property, a group of interchangeable and
equivalent buttons can be defined. The client's specific choice of
button among these can then be tailored to the user or the application,
improving accessibility.</t>

<section anchor="groupid"><name><spanx style="verb">groupId</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">groupId</spanx> property defines a group of button versions.
Multiple buttons using the same <spanx style="verb">groupId</spanx> entry belong to one group. A
client <bcp14>SHALL</bcp14> assume those buttons are interchangeable, and they <bcp14>MAY</bcp14>
choose one of them depending on the user's requirements.</t>

<t>The server chooses the <spanx style="verb">groupId</spanx> property arbitrarily. Clients <bcp14>MUST NOT</bcp14>
make any assumptions about the content of the <spanx style="verb">id</spanx> property, and <bcp14>MUST</bcp14>
treat it as an arbitrary <xref target="Unicode"/> string. Clients <bcp14>SHALL NOT</bcp14> assume
IDs are unique across web sites.</t>

<t>The properties <spanx style="verb">colorScheme</spanx>, <spanx style="verb">animations</spanx>, <spanx style="verb">contrast</spanx>, and <spanx style="verb">lang</spanx> allow
providing different versions of a button to fit accessibility and/or
styling needs. They <bcp14>SHOULD</bcp14> be present if the server shares different
versions of a button with the same <spanx style="verb">groupId</spanx>. Within the same <spanx style="verb">groupId</spanx>,
multiple buttons <bcp14>SHOULD NOT</bcp14> have identical values for these properties.</t>

<t>As described above, the <xref target="lang"><spanx style="verb">lang</spanx></xref> property may be altered without
altering any of the other accessibility properties or the <spanx style="verb">uri</spanx>
property. This includes cases where other accessibility properties are
absent. The two buttons are then considered logically identical, and the
client <bcp14>SHOULD</bcp14> choose a button based on the user’s language preferences.</t>

<t>The following properties <bcp14>MAY</bcp14> also be provided if the <spanx style="verb">groupId</spanx> property
is absent. In this case, the properties provide accessibility guidance
without the possibility of client choice. The <spanx style="verb">lang</spanx> property <bcp14>SHOULD</bcp14>
always be provided regardless of the presence of the <spanx style="verb">groupId</spanx> property.</t>

</section>
<section anchor="colorscheme"><name><spanx style="verb">colorScheme</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">colorScheme</spanx> property specifies what color scheme the
button version uses. It is to be interpreted as per
<xref target="prefers-color-scheme"></xref> CSS media query.</t>

<t>It can take on the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">other</spanx>: the default, equivalent to not specifying this property,
clients <bcp14>SHOULD NOT</bcp14> make any assumptions about the color scheme</t>
  <t><spanx style="verb">light</spanx>: light theme, typically dark text on a light background</t>
  <t><spanx style="verb">dark</spanx>: dark theme, typically light text on a dark background</t>
</list></t>

</section>
<section anchor="animations"><name><spanx style="verb">animations</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">animations</spanx> property <bcp14>SHOULD</bcp14> be provided if the button is
animated, even if the button is not in a group. It specifies the amount
and severity of the animations present in the button. Clients <bcp14>MAY</bcp14>
consider all animated buttons without this property to have the value
<spanx style="verb">high</spanx>.</t>

<t>It can take on the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">none</spanx>: the image is not animated at all</t>
  <t><spanx style="verb">minimal</spanx>: the image contains only very subtle animations</t>
  <t><spanx style="verb">high</spanx>: the image contains animations that are permanently active,
distracting, or could trigger medical conditions such as
light-sensitive epilepsy</t>
</list></t>

<t>Authors <bcp14>SHOULD</bcp14> use the <spanx style="verb">high</spanx> value for animated buttons if there is any
doubt about the severity of the animations.</t>

<t>If there is no static alternative to an animated button, but a static
image is desired by the client or the end-user, clients <bcp14>MAY</bcp14> use the CSS
property <xref target="image-animation"><spanx style="verb">image-animation</spanx></xref> to disable animations on
an animated button.</t>

</section>
<section anchor="contrast"><name><spanx style="verb">contrast</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">contrast</spanx> property <bcp14>MUST</bcp14> have one of the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">standard</spanx>: the default, equivalent to not specifying this property.</t>
  <t><spanx style="verb">more</spanx>: a higher-contrast version of the button, whose text is
STRONGLY <bcp14>RECOMMENDED</bcp14> to follow the WCAG 2.2 AA or AAA guidelines for
color contrast in normal text <xref target="WCAG-contrast"/>, i.e. 4.5:1 or 7:1.</t>
  <t><spanx style="verb">less</spanx>: a lower-contrast version of the button, whose text color
contrast is below 3:1. This means that it does not follow the WCAG 2.2
color contrast guidelines at all, not even for large text or graphics.</t>
</list></t>

<t>If two buttons with substantially distinct color contrasts would fall
into the same contrast category according to the above definitions,
distinct contrast values <bcp14>SHOULD</bcp14> be used by applying the following rules:</t>

<t><list style="symbols">
  <t>If both buttons are at <spanx style="verb">less</spanx> contrast, the higher-contrast one <bcp14>SHOULD</bcp14>
be instead marked as <spanx style="verb">standard</spanx>.</t>
  <t>If both buttons are at <spanx style="verb">more</spanx> contrast, the lower-contrast one <bcp14>SHOULD</bcp14>
be instead marked as <spanx style="verb">standard</spanx>.</t>
  <t>If both buttons are at <spanx style="verb">standard</spanx> contrast, the lower-contrast one
<bcp14>SHOULD</bcp14> be instead marked as <spanx style="verb">less</spanx>.</t>
</list></t>

<t>Since none of these rules are strictly required, implementations <bcp14>MAY</bcp14>
deviate in order to utilize all three contrast values.</t>

</section>
</section>
</section>
</section>
<section anchor="examples"><name>Examples</name>

<t>A typical example is as follows:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-01.schema.json",
  "default": "my.web site",
  "buttons": [
    {
      "id": "my.web site",
      "uri": "https://my.website.example.org/my.website.png",
      "alt": "Button to my web site!",
      "link": "https://my.website.example.org",
      "sha256": "66a421c7e726e9de99eeb88c57b93b49278d64b2a4602a6f90f7d64baee154cf",
      "hotlink": true
    }
  ]
}
]]></sourcecode></figure>

<t>A minimal example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-01.schema.json",
  "buttons": [
    {
      "id": "some button id",
      "uri": "https://example.com/res/my-button.gif",
      "alt": "button saying example.com"
    }
  ]
}
]]></sourcecode></figure>

<t>And an exhaustive example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-01.schema.json",
  "default": "8b556a30-c5d9-4117-88a5-b779a3f2f567",
  "buttons": [
    {
      "id": "8b556a30-c5d9-4117-88a5-b779a3f2f567",
      "groupId": "mainbutton",
      "uri": "https://website.example.com/res/my-button.png",
      "alt": "button saying example.com with black text on a white background",
      "caption": "Example web site",
      "sha256": "e35a78bcb7f9b9cc0c3929d1763b96b6013071b0f9950886a20d2bcc0e943612",
      "link": "https://website.example.com/",
      "colorScheme": "light",
      "animations": "none",
      "contrast": "more",
      "license": "CC-BY-SA-4.0",
      "licenseText": "Copyright 2024 by the Example Author",
      "imageRendering": "pixelated",
      "hotlink": false
    },
    {
      "id": "64dbf02d-44e0-4aa9-ad45-c4959eadd3db",
      "groupId": "mainbutton",
      "uri": "https://website.example.com/res/my-button-dark.png",
      "alt": "button saying example.com with white text on a black background",
      "caption": "Example web site",
      "sha256": "4598d79c6c1877aa9121c8b0845fe4e8f031684fabb09caa10357dfe5d295986",
      "link": "https://website.example.com/",
      "colorScheme": "dark",
      "animations": "none",
      "contrast": "more",
      "license": "CC-BY-SA-4.0",
      "licenseText": "Copyright 2024 by the Example Author",
      "imageRendering": "auto",
      "hotlink": false
    },
    {
      "id": "57ad38e5-94ad-4b64-a6bc-583f41b7c3b5",
      "groupId": "mainbutton",
      "uri": "https://website.example.com/res/my-button-rainbow.gif",
      "alt": "button saying example.com with black text on an animated rainbow background",
      "caption": "Example web site",
      "sha256": "2fecb1bbd1fdb1f8fa634632f9726f9bce7f653fe94cde59b616f4032b70a758",
      "link": "https://website.example.com/",
      "colorScheme": "other",
      "animations": "high",
      "contrast": "standard",
      "license": "LicenseRef-Commercial",
      "licenseText": "Copyright 2024 by the Example Author, all rights reserved. You can include this button on your page but nothing else.",
      "imageRendering": "smooth",
      "hotlink": true
    },
    {
      "id": "ee5cc4b3-b88b-4b1c-ae1f-fb9a3de063c9",
      "uri": "https://website.example.com/res/blog-button.gif",
      "alt": "example.com blog button with some starts gently twinkling in the background",
      "caption": "Example web site",
      "sha256": "b2fe6da951362a7e3909390c5634fe4804cb845eddccad8dcea5819122f94be0",
      "link": "https://website.example.com/blog/",
      "animations": "minimal",
      "license": "CC-BY-SA-4.0",
      "licenseText": "Copyright 2024 by the Example Author",
      "hotlink": true
    }
  ]
}
]]></sourcecode></figure>

<section anchor="html-examples"><name>HTML Examples</name>

<t>These examples show possible compliant HTML5 source code which may be
generated based on <spanx style="verb">.well-known/button.json</spanx> data. They are neither
normative, nor do they represent the <em>only</em> compliant HTML that may be
generated from the data. The HTML is provided purely for the information
of implementors.</t>

<t>Based on the typical example above, the following HTML may be generated:</t>

<figure><sourcecode type="html"><![CDATA[
<a href="https://my.website.example.org">
  <img
    class="button"
    src="https://my.website.example.org/my.website.png"
    alt="Button to my web site!"
    loading="lazy"
  />
</a>
]]></sourcecode></figure>

<t>Note that this button allows hotlinking, and the HTML makes use of this
here. Additionally, the <spanx style="verb">loading="lazy"</spanx> option avoids loading the
button on a web page unless the user scrolls over it, reducing page load
times. Alternatively, the client may copy the image to their own web
server, serve it on the path <spanx style="verb">/buttons/my.website.png</spanx>, and use the
following HTML instead:</t>

<figure><sourcecode type="html"><![CDATA[
<a href="https://my.website.example.org">
  <img
    class="button"
    src="/buttons/my.website.png"
    alt="Button to my web site!"
    loading="lazy"
  />
</a>
]]></sourcecode></figure>

<t>As an extended example, the following HTML may be generated from the
button with ID <spanx style="verb">ee5cc4b3-b88b-4b1c-ae1f-fb9a3de063c9</spanx> in the exhaustive
<spanx style="verb">/.well-known/button.json</spanx> example above. Once again the client chose
not to hotlink the button despite <spanx style="verb">"hotlink": true</spanx>.</t>

<figure><sourcecode type="html"><![CDATA[
<a href="https://website.example.com/blog/" title="Example web site">
  <img
    class="button"
    src="/buttons/blog-button.gif"
    alt="example.com blog button with some starts gently twinkling in the background"
    loading="lazy"
  />
</a>
]]></sourcecode></figure>

<t>Since the button author specified a license and accompanying text, the
client should include this somewhere on their web site, such as:</t>

<figure><sourcecode type="html"><![CDATA[
<p>The button for the <a href="https://website.example.com/blog/">
example.com blog</a> is licensed under
<a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0
</a>. Copyright 2024 by the Example Author.
</p>
]]></sourcecode></figure>

</section>
</section>
<section anchor="implementation-considerations"><name>Implementation Considerations</name>

<t>Button images <bcp14>SHOULD</bcp14> be compressed as strongly as possible. For example,
typical images of size 88x31 can reach about 800-1000 bytes in size
using the PNG format, but are frequently distributed with sizes between
10% and 200% larger than this. Using strong compression usually does not
affect decoding time for the recommended image formats, but reduces
bandwidth requirements on both server and client, especially when the
image is hotlinked. With the image sizes used for buttons, it is
computationally feasible on consumer hardware to compress images
optimally within a reasonable amount of time (usually a few minutes at
maximum, usually much less).</t>

<section anchor="text-property-length"><name>Text property length</name>

<t>The minimum or maximum length of the text properties in
<spanx style="verb">/.well-known/button.json</spanx> is not restricted. In combination with the
unrestricted number of button objects that may be present within one
such file, the length of the JSON document, even if minified by removing
superfluous whitespace, may be arbitrarily large and cause issues with a
client’s memory usage.</t>

<t>Therefore, clients <bcp14>MUST</bcp14> support a property length of at least 65536
bytes (2^16 or 64 KiB) for each string property that is not otherwise
restricted; namely the properties <spanx style="verb">id</spanx> (and therefore <spanx style="verb">default</spanx> as
well), <spanx style="verb">uri</spanx>, <spanx style="verb">alt</spanx>, <spanx style="verb">caption</spanx>, <spanx style="verb">link</spanx>, <spanx style="verb">license</spanx>, <spanx style="verb">licenseText</spanx>,
<spanx style="verb">groupId</spanx>, and <spanx style="verb">imageRendering</spanx>. For <spanx style="verb">imageRendering</spanx> specifically, a
client <bcp14>MAY</bcp14> only support the three standard values <spanx style="verb">smooth</spanx>, <spanx style="verb">auto</spanx>, and
<spanx style="verb">pixelated</spanx>; i.e. a maximum length of 9 bytes. Any property beyond the
supported length <bcp14>MAY</bcp14> be rejected by a client.</t>

<t>Clients <bcp14>SHOULD</bcp14> be able to handle a large number of buttons within a
document, but not necessarily by reading and evaluating every single
button definition. As fallback mechanisms, reading only the first button
or the one set by the <spanx style="verb">default</spanx> property is <bcp14>RECOMMENDED</bcp14>. Servers <bcp14>SHOULD</bcp14>
position the <spanx style="verb">default</spanx> top-level property, the default button, and other
important buttons towards the start of the document, allowing them to be
processed without loading or processing the entire
<spanx style="verb">/.well-known/button.json</spanx>.</t>

</section>
<section anchor="accessibility"><name>Accessibility</name>

</section>
<section anchor="caching"><name>Caching</name>

<t>In some cases, a server-provided <spanx style="verb">/.well-known/button.json</spanx> may have
considerable size, or it may be generated on-demand with significant
processing power. Especially in these cases, it is important that
servers and clients follow standard HTTP caching practice as specified
by <xref target="RFC9110"/> and <xref target="RFC9111"/>. Servers <bcp14>SHOULD</bcp14> provide appropriate
caching headers, allowing the client to cache the response. Clients
<bcp14>SHOULD</bcp14> use HTTP caching (<xref target="RFC9111"/>). In particular, the following
features of HTTP caching are <bcp14>RECOMMENDED</bcp14> for use by servers and
implementation by clients:</t>

<t><list style="symbols">
  <t>The <spanx style="verb">If-Modified-Since</spanx> request header <xref section="13.1.3" sectionFormat="parens" target="RFC9110"/>
can be used by clients to inform the server about the last time an
updated <spanx style="verb">/.well-known/button.json</spanx> was retrieved. In accordance with
the standard, servers <bcp14>SHOULD</bcp14> respond with <spanx style="verb">304</spanx> (Not Modified) to
indicate no change occurred to the <spanx style="verb">/.well-known/button.json</spanx> file.</t>
  <t>In a similar manner, the <spanx style="verb">Etag</spanx> response header <xref section="8.8.3" sectionFormat="parens" target="RFC9110"/> can be used by servers to supply an entity tag for
<spanx style="verb">/.well-known/button.json</spanx> independently of modification times.
Managed web hosting providers frequently implement <spanx style="verb">Etag</spanx> by default,
therefore clients <bcp14>SHOULD</bcp14> implement this header and its corresponding
request headers <spanx style="verb">If-Match</spanx>, <spanx style="verb">If-None-Match</spanx>, or <spanx style="verb">If-Range</spanx>, as per
<xref section="4.3.1" sectionFormat="of" target="RFC9111"/>.</t>
  <t>The <spanx style="verb">Cache-Control: immutable</spanx> response header <xref target="RFC8246"/>, in
combination with the <spanx style="verb">max-age</spanx> property <xref section="5.2.2.1" sectionFormat="parens" target="RFC9111"/>
can be used by servers to specify that the <spanx style="verb">/.well-known/button.json</spanx>
is guaranteed to be valid for the specified amount of time, and that
clients never need to send another request for the
<spanx style="verb">/.well-known/button.json</spanx> within that time frame. This can
significantly reduce the load on servers where button changes occur
infrequently, and where update propagation delays due to valid but
stale caches are acceptable.</t>
</list></t>

<t>Button image files themselves <bcp14>SHOULD</bcp14> use HTTP caching in the same
manner.</t>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>IANA will register the well-known URI <spanx style="verb">/.well-known/button.json</spanx> in the
<xref target="IANA-well-known">well-known URIs registry</xref> in conformance with the
requirements for this registration in <xref target="RFC8615"/>. The following
information is provided to facilitate the registration:</t>

<t><list style="symbols">
  <t>URI suffix: <spanx style="verb">button.json</spanx></t>
  <t>Change controller: IETF</t>
  <t>Specification document(s): This RFC</t>
  <t>Status: permanent</t>
</list></t>

<t>In case a JSON Schema registry is set up with IANA in the future, the
<xref target="button-json-schema"><spanx style="verb">button.json</spanx> Schema</xref>, as defined in this
specification and any of its updates and errata, shall be registered by
IANA with this JSON Schema registry. In the likely case that this JSON
Schema registry includes a canonical schema URL for registered schemas,
the canonical schema URL in this specification should be changed to the
one registered with IANA.</t>

</section>
<section anchor="legal-considerations"><name>Legal Considerations</name>

<t>Buttons are usually copyrightable artworks. As such, unauthorized
copying and inclusion of a button is a legal offense in most
jurisdictions. This specification does not supersede the legal
frameworks for copyright, licenses and permissions, but it attempts to
aid all involved parties in avoiding legal issues.</t>

<t>Publication of a <spanx style="verb">/.well-known/button.json</spanx> file, as per this
specification, implies a permission to download (copy) the linked-to
buttons, and include them on other pages, provided that a button's link
(as per this specification) is persisted. These are the minimal
permissions required to make the data in <spanx style="verb">/.well-known/button.json</spanx>
useful to third parties. This does not waive copyright and is not
comparable to stronger copyleft licenses. It is also not as legally
unambiguous as the license properties, so the use of these properties is
strongly <bcp14>RECOMMENDED</bcp14>.</t>

<t>The <spanx style="verb">license</spanx> and <spanx style="verb">licenseText</spanx> properties allow the button author to
provide a copyright license. In case the author is not provided in
either of those properties, it can be assumed to be the same as the
author of the web site's content, or the web site's owner.</t>

<t>It is <bcp14>RECOMMENDED</bcp14> that clients use SPDX tooling and human-in-the-loop
verification of both <spanx style="verb">license</spanx> and <spanx style="verb">licenseText</spanx> to verify that the
client's use of the button is allowed by the license.</t>

<t>The following licenses are <bcp14>RECOMMENDED</bcp14> for use in
<spanx style="verb">/.well-known/button.json</spanx>:</t>

<t><list style="symbols">
  <t>Any of the current <xref target="CC">Creative Commons licenses</xref>, including CC BY,
CC BY-SA, and CC BY-ND. The no-derivative licenses including the
latter are closest to the default permissions implied with publication
of a <spanx style="verb">/.well-known/button.json</spanx> file.</t>
  <t>A public domain license, such as <xref target="CC0"/> or <xref target="Unlicense"/>.</t>
</list></t>

<t>A full list of standard licenses tracked by SPDX is available at
<eref target="https://spdx.org/licenses/">https://spdx.org/licenses/</eref>.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<section anchor="exposure-to-scrapers-and-spiders"><name>Exposure to Scrapers and Spiders</name>

<t>Specifying the location of a button image in <spanx style="verb">/.well-known/button.json</spanx>
exposes it to automated scrapers, including malicious ones. If a web
server operator wishes to decrease the visibility of the buttons,
<spanx style="verb">robots.txt</spanx> <xref target="RFC9309"/> can be used to discourage scrapers from
accessing <spanx style="verb">/.well-known/button.json</spanx> and the button images, but since
some scrapers do not respect robots.txt properly, the web server may
additionally need to block certain user agents and IP addresses from
accessing <spanx style="verb">/.well-known/button.json</spanx> and/or button images.</t>

</section>
<section anchor="hotlink-privacy"><name>User Tracking via Hotlinking</name>

<t>Hotlinking, which the server can explicitly request via the
<xref target="hotlink"><spanx style="verb">hotlink</spanx></xref> button property, may expose users to tracking by
the button origin server. Every visit to a third-party site which
includes and hotlinks the button will cause a request to be sent to the
origin server, possibly including the <spanx style="verb">Referer</spanx> HTTP header pointing to
the third-party site. This allows the origin server to determine which
users, identified at least by their IP addresses and HTTP user agents,
visited which third-party site. It also allows the origin server to
determine which third-party sites are publicly displaying the button in
the first place. This may be a concern to both the third-party site,
wishing to protect its users from such data collection, as well as the
users themselves.</t>

<t>Therefore, clients <bcp14>SHOULD NOT</bcp14> strictly follow the recommendations set
out by <spanx style="verb">"hotlink": true</spanx>. This attribute is explicitly only specified as
a server-side recommendation for clients, not a recommendation that
clients should necessarily follow. Clients <bcp14>MUST</bcp14> consider the privacy
concerns described above carefully and weigh them against the benefits
of hotlinking, such as decreased storage requirements for the web site,
and faster button updates. When in doubt, clients <bcp14>SHOULD</bcp14> err on the side
of caution and not use hotlinking.</t>

</section>
</section>
<section anchor="Security"><name>Security Considerations</name>

<section anchor="security-image-rendering"><name><spanx style="verb">imageRendering</spanx> CSS Injection</name>

<t>The <spanx style="verb">imageRendering</spanx> property may be set to an arbitrary string by a
malicious web site operator. Clients which use the property without
additional checks as part of the button's CSS properties (whether in
stylesheets or inline <spanx style="verb">style</spanx> in HTML), are subsequently vulnerable to
CSS or HTML injection attacks. Therefore, clients <bcp14>MUST NOT</bcp14> use this
property without validating it, and reject any unknown values.</t>

</section>
<section anchor="hotlink-security"><name>Denial-of-Service Concerns Due To Hotlinking</name>

<t>Hotlinking buttons imposes an additional load on the server, as it has
to serve the button to every visitor of a client's web page, not just
its own page(s). Therefore, usage of the <spanx style="verb">"hotlink": true</spanx> setting
should be carefully evaluated, as even well-intentioned clients may
cause increased load on the server if their pages receive many views.</t>

<t>Malicious or careless clients may ignore the <spanx style="verb">hotlink</spanx> attribute and
always hotlink the button image. This scenario is no different from
ordinary HTTP Denial-of-Service attacks and should be addressed
similarly. For instance, the Referer header <xref section="10.1.3" sectionFormat="parens" target="RFC9110"/> may be used to determine which requests for the images are
being sent from a third-party web page, and block those requests
accordingly.</t>

</section>
</section>


  </middle>

  <back>


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

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

<reference anchor="JSON-Schema" target="https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-01">
  <front>
    <title>JSON Schema, Internet-Draft 01</title>
    <author initials="A." surname="Wright" fullname="Austin Wright">
      <organization></organization>
    </author>
    <author initials="H." surname="Andrews" fullname="Henry Andrews">
      <organization></organization>
    </author>
    <author initials="B." surname="Hutton" fullname="Ben Hutton">
      <organization></organization>
    </author>
    <author initials="G." surname="Dennis" fullname="Greg Dennis">
      <organization></organization>
    </author>
    <author >
      <organization>JSON Schema</organization>
    </author>
    <date year="2022" month="June" day="10"/>
  </front>
</reference>
<reference anchor="image-rendering" target="https://drafts.csswg.org/css-images/#the-image-rendering">
  <front>
    <title>CSS Images Module Level 3 Editor's Draft: 5.2: The 'image-rendering' property</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="SPDX-license-expressions" target="https://spdx.github.io/spdx-spec/v3.0.1/annexes/spdx-license-expressions/">
  <front>
    <title>SPDX Specification 3.0.1 Annex B: SPDX license expressions</title>
    <author >
      <organization>The Linux Foundation</organization>
    </author>
    <date year="2024" month="February"/>
  </front>
</reference>
<reference anchor="Unicode" target="https://www.unicode.org/versions/Unicode17.0.0/">
  <front>
    <title>The Unicode Standard, Version 17.0.0</title>
    <author >
      <organization>Unicode, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="prefers-color-scheme" target="https://www.w3.org/TR/mediaqueries-5/#descdef-media-prefers-color-scheme">
  <front>
    <title>CSS Media Queries Level 5 Working Draft: 12.5: The 'prefers-color-scheme' feature</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="WCAG-contrast" target="https://www.w3.org/TR/WCAG22/#contrast-minimum">
  <front>
    <title>Web Content Accessibility Guidelines 2.2: 1.4.3 Contrast (Minimum)</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2024" month="December"/>
  </front>
</reference>
<reference anchor="IANA-well-known" target="https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml">
  <front>
    <title>Well-Known URIs Registry</title>
    <author >
      <organization>Internet Assigned Numbers Authority</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</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="RFC3629">
  <front>
    <title>UTF-8, a transformation format of ISO 10646</title>
    <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
    <date month="November" year="2003"/>
    <abstract>
      <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="63"/>
  <seriesInfo name="RFC" value="3629"/>
  <seriesInfo name="DOI" value="10.17487/RFC3629"/>
</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="RFC5646">
  <front>
    <title>Tags for Identifying Languages</title>
    <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
    <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
    <date month="September" year="2009"/>
    <abstract>
      <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. 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="47"/>
  <seriesInfo name="RFC" value="5646"/>
  <seriesInfo name="DOI" value="10.17487/RFC5646"/>
</reference>
<reference anchor="RFC6234">
  <front>
    <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="May" year="2011"/>
    <abstract>
      <t>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>
<reference anchor="RFC9111">
  <front>
    <title>HTTP Caching</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
      <t>This document obsoletes RFC 7234.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="98"/>
  <seriesInfo name="RFC" value="9111"/>
  <seriesInfo name="DOI" value="10.17487/RFC9111"/>
</reference>
<reference anchor="RFC8246">
  <front>
    <title>HTTP Immutable Responses</title>
    <author fullname="P. McManus" initials="P." surname="McManus"/>
    <date month="September" year="2017"/>
    <abstract>
      <t>The immutable HTTP response Cache-Control extension allows servers to identify resources that will not be updated during their freshness lifetime. This ensures that a client never needs to revalidate a cached fresh resource to be certain it has not been modified.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8246"/>
  <seriesInfo name="DOI" value="10.17487/RFC8246"/>
</reference>



    </references>

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

<reference anchor="Tekeye" target="https://www.tekeye.uk/computer_history/powered-by">
  <front>
    <title>Remembering Powered By and 88×31</title>
    <author initials="D." surname="Fowler" fullname="Daniel Fowler">
      <organization></organization>
    </author>
    <date year="2012" month="March" day="27"/>
  </front>
</reference>
<reference anchor="SVG" target="https://www.w3.org/TR/SVG2/">
  <front>
    <title>Scalable Vector Graphics (SVG) 2</title>
    <author initials="A." surname="Bellamy-Royds" fullname="Amelia Bellamy-Royds">
      <organization></organization>
    </author>
    <author initials="B." surname="Brinza" fullname="Bogdan Brinza">
      <organization></organization>
    </author>
    <author initials="C." surname="Lilley" fullname="Chris Lilley">
      <organization></organization>
    </author>
    <author initials="D." surname="Schulze" fullname="Dirk Schulze">
      <organization></organization>
    </author>
    <author initials="D." surname="Storey" fullname="David Storey">
      <organization></organization>
    </author>
    <author initials="E." surname="Willigers" fullname="Eric Willigers">
      <organization></organization>
    </author>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2018" month="October" day="04"/>
  </front>
</reference>
<reference anchor="AVIF" target="https://aomediacodec.github.io/av1-avif/v1.2.0.html">
  <front>
    <title>AV1 Image File Format (AVIF)</title>
    <author initials="Y." surname="Guyon" fullname="Yannis Guyon">
      <organization></organization>
    </author>
    <author initials="L." surname="Barnes" fullname="Leo Barnes">
      <organization></organization>
    </author>
    <author initials="W.-T." surname="Chang" fullname="Wan-Teh Chang">
      <organization></organization>
    </author>
    <author initials="C." surname="Concolato" fullname="Cyril Concolato">
      <organization></organization>
    </author>
    <author initials="P." surname="Kerr" fullname="Paul Kerr">
      <organization></organization>
    </author>
    <author initials="A." surname="Klements" fullname="Anders Klements">
      <organization></organization>
    </author>
    <author >
      <organization>Alliance for Open Media</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="PNG" target="https://www.w3.org/TR/png-3/">
  <front>
    <title>Portable Network Graphics Specification (Third Edition)</title>
    <author initials="C." surname="Blume" fullname="Chris Blume">
      <organization></organization>
    </author>
    <author initials="P.-A." surname="Lemieux" fullname="Pierre-Anthony Lemieux">
      <organization></organization>
    </author>
    <author initials="C." surname="Lilley" fullname="Chris Lilley">
      <organization></organization>
    </author>
    <author initials="C." surname="Needham" fullname="Chris Needham">
      <organization></organization>
    </author>
    <author initials="L." surname="Rosenthol" fullname="Leonard Rosenthol">
      <organization></organization>
    </author>
    <author initials="C. A." surname="Seeger" fullname="Chris Arley Seeger">
      <organization></organization>
    </author>
    <author initials="S." surname="Thompson" fullname="Simon Thompson">
      <organization></organization>
    </author>
    <author initials="C." surname="Truta" fullname="Cosmin Truta">
      <organization></organization>
    </author>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="GIF" target="https://www.w3.org/Graphics/GIF/spec-gif87.txt">
  <front>
    <title>Graphics Interchange Format</title>
    <author >
      <organization>CompuServe Incorporated</organization>
    </author>
    <date year="1987"/>
  </front>
</reference>
<reference anchor="html-title" target="https://html.spec.whatwg.org/multipage/dom.html#the-title-attribute">
  <front>
    <title>HTML: 3.2.6.1: The 'title' attribute</title>
    <author >
      <organization>WHATWG</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CC" target="https://creativecommons.org/cc-licenses/">
  <front>
    <title>Creative Commons Licenses</title>
    <author >
      <organization>Creative Commons</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CC0" target="https://creativecommons.org/publicdomain/zero/1.0/">
  <front>
    <title>CC0 1.0 Universal</title>
    <author >
      <organization>Creative Commons</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="Unlicense" target="https://unlicense.org/">
  <front>
    <title>The Unlicense</title>
    <author initials="A." surname="Bendiken" fullname="Arto Bendiken">
      <organization></organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
<reference anchor="image-animation" target="https://drafts.csswg.org/css-image-animation-1">
  <front>
    <title>CSS Image Animation Editor’s Draft: 2: The 'image-animation' property</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="RFC9649">
  <front>
    <title>WebP Image Format</title>
    <author fullname="J. Zern" initials="J." surname="Zern"/>
    <author fullname="P. Massimino" initials="P." surname="Massimino"/>
    <author fullname="J. Alakuijala" initials="J." surname="Alakuijala"/>
    <date month="November" year="2024"/>
    <abstract>
      <t>This document defines the WebP image format and registers a media type supporting its use.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9649"/>
  <seriesInfo name="DOI" value="10.17487/RFC9649"/>
</reference>
<reference anchor="RFC9309">
  <front>
    <title>Robots Exclusion Protocol</title>
    <author fullname="M. Koster" initials="M." surname="Koster"/>
    <author fullname="G. Illyes" initials="G." surname="Illyes"/>
    <author fullname="H. Zeller" initials="H." surname="Zeller"/>
    <author fullname="L. Sassman" initials="L." surname="Sassman"/>
    <date month="September" year="2022"/>
    <abstract>
      <t>This document specifies and extends the "Robots Exclusion Protocol" method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers. Specifically, it adds definition language for the protocol, instructions for handling errors, and instructions for caching.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9309"/>
  <seriesInfo name="DOI" value="10.17487/RFC9309"/>
</reference>



    </references>

</references>


<?line 1028?>

<section anchor="button-json-schema"><name>JSON Schema for <spanx style="verb">button.json</spanx></name>

<t>The following is the JSON Schema <xref target="JSON-Schema"/> file for
<spanx style="verb">/.well-known/button.json</spanx>. This JSON Schema is <strong>normative</strong>; all
<spanx style="verb">/.well-known/button.json</spanx> implementations <bcp14>MUST</bcp14> conform to this schema.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-01.schema.json",
  "title": ".well-known 88x31 Button JSON Schema",
  "type": "object",
  "properties": {
    "$schema": {
      "title": "The URI of the schema used by this document.",
      "type": "string",
      "format": "uri"
    },
    "default": {
      "title": "The id of the button to use as the default.",
      "type": "string"
    },
    "buttons": {
      "type": "array",
      "items": {
        "title": "An 88x31 button available from the web site",
        "type": "object",
        "properties": {
          "id": {
            "title": "The ID of the button",
            "type": "string"
          },
          "uri": {
            "title": "The canonical uri of the image file",
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "alt": {
            "title": "Alt text for the image",
            "type": "string"
          },
          "lang": {
            "title": "Language of all text in this button’s specification",
            "type": "string"
          },
          "caption": {
            "title": "Image caption or title",
            "type": "string"
          },
          "link": {
            "title": "Where the image should link to if used on another web site",
            "type": "string",
            "format": "uri"
          },
          "hotlink": {
            "title": "Whether image should be hotlinked",
            "type": "boolean",
            "default": false
          },
          "sha256": {
            "title": "SHA256 hash of the current version of the image file",
            "type": "string",
            "format": "regex",
            "pattern": "^[A-Fa-f0-9]{64}$"
          },
          "license": {
            "title": "SPDX license expression specifying the license for the image file",
            "type": "string"
          },
          "licenseText": {
            "title": "Additional license information to augment the license property",
            "type": "string"
          },
          "groupId": {
            "title": "A group of interchangeable versions of a button with different accessibility properties",
            "type": "string"
          },
          "colorScheme": {
            "title": "What color scheme does this button version match",
            "type": "string",
            "enum": ["light", "dark", "other"],
            "default": "other"
          },
          "animations": {
            "title": "Whether this button version is animated, and to what degree",
            "type": "string",
            "enum": ["none", "minimal", "high"]
          },
          "contrast": {
            "title": "The contrast level of this button version",
            "type": "string",
            "enum": ["standard", "more", "less"],
            "default": "standard"
          },
          "imageRendering": {
            "title": "Image rendering algorithm",
            "description": "Which scaling algorithm to use for the image if it is not displayed at native resolution, recommended: 'smooth', 'auto' or 'pixelated'",
            "type": "string",
            "default": "auto"
          }
        },
        "required": ["id", "uri", "alt"]
      }
    }
  },
  "required": ["$schema", "buttons"]
}
]]></sourcecode></figure>

</section>
<section anchor="migrating-from-earlier-versions-of-this-specification"><name>Migrating from earlier versions of this specification</name>

<section anchor="migrating-from-draft-2024-05"><name>Migrating from draft 2024-05</name>

<t>At a basic level, this can be done easily with
<eref target="https://github.com/jqlang/jq">jq</eref>:</t>

<figure><sourcecode type="sh"><![CDATA[
jq '{ "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-01.schema.json", "buttons": . }' $old_filename > $new_filename
]]></sourcecode></figure>

<t>You will no longer need special logic for your web server, instead the
new path for the file is <spanx style="verb">/.well-known/button.json</spanx>.</t>

<t>You may add a copy of the schema version matching your file in
<spanx style="verb">/.well-known/button.schema.json</spanx>.</t>

<t>You might want to add a <spanx style="verb">default</spanx> property, especially if you provide
multiple buttons.</t>

<t>You should consider adding the extra accessibility properties where the
default values aren't sufficient (especially <spanx style="verb">animations</spanx>).</t>

</section>
<section anchor="migrating-from-draft-2024-06"><name>Migrating from draft 2024-06</name>

<t>The current schema is backwards-compatible with the 2024-06 one, adding
only optional properties.</t>

<t>You should consider adding the new properties where applicable,
especially <spanx style="verb">license</spanx>.</t>

</section>
</section>
<section numbered="false" anchor="Acknowledgements"><name>Acknowledgements</name>

<t>This specification would not have been possible without the many
excellent ideas from various beings, most of which are listed under
<xref target="contributors"/>. The authors thank <contact fullname="Arch Retriever"/> in particular
for the original <spanx style="verb">./well-known/button.json</spanx> idea.</t>

<!-- vim: set textwidth=72 shiftwidth=2 expandtab filetype=markdown: -->

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="A." surname="Retriever" fullname="Arch Retriever">
      <organization></organization>
      <address>
        <uri>https://arch.dog</uri>
      </address>
    </contact>
<t>Arch came up with the idea and created the original version of this specification.</t>

    <contact initials="" surname="Reina" fullname="Reina">
      <organization></organization>
      <address>
      </address>
    </contact>
<t>Reina contributed the idea of an alt text property.</t>

    <contact initials="" surname="Sugar" fullname="Sugar">
      <organization></organization>
      <address>
      </address>
    </contact>
<t>Sugar contributed ideas on how to make this specification more accessible to people using shared hosting services.</t>

    <contact initials="" surname="Seirdy" fullname="Seirdy">
      <organization></organization>
      <address>
      </address>
    </contact>
<t>Seirdy contributed the idea of multiple versions of a button with different accessibility properties.</t>

    <contact initials="S. O." surname="Xaselgio" fullname="Soblow Opale Xaselgio">
      <organization></organization>
      <address>
        <postal>
          <country>FR</country>
        </postal>
        <email>soblowdragon@gmail.com</email>
        <uri>https://xaselgio.net</uri>
      </address>
    </contact>
<t>Soblow contributed examples and correction to the 2024 second draft, as well as the hotlink attribute.</t>

    <contact initials="" surname="Natty" fullname="Natty">
      <organization></organization>
      <address>
        <uri>https://natty.sh</uri>
      </address>
    </contact>
<t>Natty contributed the idea of a caption property distinct from the alt property.</t>

    </section>

  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9V92XYbR5bge35FNFVzJHqQIMGd9NJNUbKtKW0tymXX0XE3
A5kBIK1EJpwLKZijOvMXc+atv2I+oPtP5kvmbrFkAqCWcs10dZ22CCAz4saN
G3e/N+I4jupGF+m/6rwszJlqqtZE2aKiv+pmb3f3dHcvSnRzprJiUkZ1O55n
dZ2VRbNcwPNPHr/+NrqZwh9FY6rCNOpxMc0KY6qsmKrXun6rvi2rxERRWiaF
nsMraaUnTTzJ8nlVmjxPZqaI87bQVXwDH+O3RXlTxOO2acoi3h1FUZM1Obz2
embUj/CA+iM+oB7SAzDtpKzmugGA1OXCJNkkS+hTpMfjylyfrb4z/KWGn3Nd
ANSmiN7enEVKxer7169f0h9DDwZ9fjLXUxPptpmV1VkUAx7qM/Utgv8f/5vB
h8d4aW9zA2uvV35NyrZoquWZevQYPpm5znL38H/NTDP5pw46hqaFx9oqO1Oz
plnUZzs7K78LHE8RcY+TPFvUxoFBXyr/rZv+5VM/PaL8nwjvhh8c/gYU0J93
9YEEtr7KYH8YGzzjeZXM1CsDP5hrU/UH0fDrMC2nBIq8DVt0pv47fKP45QTG
Ue1C3WTNTDWw11lqtALKVElldGNS+rKsMqAunSuYBYlQlRP4PqtVHe790MH1
ClCsN0xLv/lfZAaaFkbVhdJ5oxrzrlGLqlyYqln6cS/bqa42jEu/dcbFMWsF
0M7KG9WUaq7fmjVgq3lZGaWTxMABG+cGH12YcgF/tTUep3oGe5HCKHVDH011
ncHDAVgmq9LlJrjox40Lnrd5k+FcgtqasKD4IPK2pNlkYipTNA7ILM+apcVP
1gGlHOew2hcLDUP+pGuTT7OyTxjv5PshMI6QTr995em0poGAaUzL4p+m+N0w
Keeb1sizhms07/QcllUzLZUVUDMhG5CLy9/b3TsATMIbKXOmgYK9QhaA/+IT
s7LJs+Kt0o2M6Rf5HL5b9hdV4JfDerYBRHpnM9nBQVgQfJboAOu43UmjJlU5
p4eRMD1NRgVzwGuDjOy/Xb54Hl8Cl5jrM5pP2Cd+r/j7gWPW8SNcsQIuS0/q
amoav5BUN7qpdPLWVENkUsOymu4AG9+ZNfN8h9n4eMaMGnlqXNPwsQxnOSb+
7fhEi2tRP8IxnjWdX743RbVU50VamZu688tDU6jvaZbO199VZqoemaLI7OMA
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
Q0+JKSFQT14qeIuCl5+4nh0XNrPNDYmCfsAJXiOJUsUh3gXq29Xe9lu/vg+7
2Q58V1zXc4OSIrCFSWbLkfD04rCsltuevL5L7LaFyjuS0SvK9CaNsPD0WxBB
qw52BnTAaVa4JsqPyZeO9COt2UmYxyjMl9w/h+838go08nUGpNM9kEw/Ditp
twzpyWhcu/CoM/3Aho+XqteelG8Vqq7YLhWfRtBhm+9z7YEqqoekHpEzP5yN
T43cnSbLImwNbJesjGuaOWzFAiSruhSEyyeYAjobRIQ/5KiyvX24njSsvNwB
WtQDbWUUFlXMdjnoHXYydT0NIx/YoBaStjRTooG2GTJtTSlOoP5Ugwj5jBQ7
4l1PdNUbS3nhCszoSU1M0JBNWC0O2qFSpJSJ0Xkc1scSg+4Dri4vqBntNikm
czba1KXYkoC7dgA+BMeLA23eqVRHLjxBHaB7/ZDJQmEguRpV958gF5Rdh1h/
YRCLl9Frl+Pq+Tl0yT2kbbPpfsuUoP8zeYiwYyKbDJSVVLOfbWwKMMibGhMW
w5w7K46ttMBrk8qKWxGuuEi83jegrgUTTW4cIS0x4ofqR8xCwEs3sKp9ZRfB
vne9tWGRCBBwBecVQCwij/BAksS2rbFXrWD7y3tivitRVeyf8aT4RdyUt/c2
9u+0twFu6iUqB0Qannd6D0loGgOgkZfUrsGYFc5+l/kA2zJ6N4XrZ+P72icz
k7wlyyW8DsYZe73WqQ9s13845tR8EZQB01C3m6ygBo1X9DU50zCVbpvv9enc
93bd5oWxVhc1Z4XXJbvQ4hHODwgPbkW0NvKPZ5XXB6ZTf4Gunzf1B2S1Vu57
RKdQW7B3z1fL3lOPTJHpPC4nMUbCMIB2Yc/Do9ao1+V6IVt74gh+d20Y5qyB
4WbedZWAvXdgBvyAPMfVdSc7zbWWJjbPBpT2/cxspimziF/wLlfklbhE/PoB
9uwN8EhJFa5tzUqbdSBA6jx4ZwN4gpiyQkh/4e6VfIOS3SZUlyTLw7VWXl26
tKrIxO+A7M2gpTHHjbrOzA3uzzOvnVYEDSXUBhOpbFqUle2OYS8R8EwYg37S
1WdNsiQdSetJAj0er+2W5he+pxZpblSBjyeSJPAqzQjZ8vVwDn9WeKeRBL6w
f9m3dGa4NzWrmqJy3BX5Gu1KfNFyC6c792S36D+esUoeHLaRGhvKN7OL6qlc
nphwEazassFvx4xcK4Ic2wXFcUzZl8hFQ28ptVnsqLS3a5y57/t2sdynEY7U
v/vc3jR4V5IA72Y4Cnz84guX3v/FF19S65i74gH9enwRnRy8LcX3Ze/t/stf
/qLurOoNFk0mI5Xo7uzt7u3Go70deZ7qaP/AlTP/icqBKf0XYQqQJbmUEuAJ
MC2vLBdcS0XZaPydlyTwC9cJBZhyhUNuNqQMDGZ0r2n317OTm0/uZ/flJ3Zm
lpr+e46n4C9YZRSWLAXlzuuByNKen4fbT1uHn7y+GYbOZL5M+rb/uK4qvQzK
sBrQW4PnQrDO7QZYX59zULiKk5XqpPXbIr+s2ZywkCv8po+eJ4+66AmG3YgN
/r/34ZNS/XXXTD4UAs+uXqzxgYl7v3YJovfjgjxaVO31L/YkboZcd4hnZa9y
aSHW4cafiyVsWnfHZE+D9q7UIoQvllD9WyA7XvvPhcXXxG0Chy+s7V/R8dlr
Z01l02Q/2su/bA4yy2AW+CXqGq29Y04C82vOyDqA7qScjdB61eoOgFmfDsEN
b4PaBJfcytX/2TMyX4i8DjJXprgJMLnUJry/xvqYe62a/vrTV5mpeXfX+Xtz
Hn+r48lufPrz7dHB+z/cRR+2sHHjwoIe5kEn6pX7U+WJzon9mFV+CDQpqdzI
KgI7wXV+9pkA5Midzm0hYi/StPxc2Hyd+Ua4Nrdg3tz31WvPm/qafjbf6RRs
bz5d/eaZFBUMywQtMc8xO+rTCNgU7Rx7ndg+GraRga0f/3nj2ZQHNkuTsHr3
Q6xj3Woy27qQLLWCTATqJIr3D5hPPKhundyLISgnlmL4n+/YJlcdf6dUt/2r
OD/Z3mTSXdRnAu2L8m3LCDiKQIt3bY97Z+PCVgrk7xZ//iIGdzvvKud2lzLz
7qIZZ28lcW9ZxbPLlrKJZA+j/e/vI4X9loaN/obvQVgndKbuc0b//YG6jwGi
+yig77t8/vufhvMAg9QeI8Se+zvA45aN/NNGZbRFpImxPmXJit/F/9K73bes
+TDwerWvM1fPsmml/WWRBkxvvL865FirGQzkD+q9SQYUFbnFu4d0dYvGIvMs
YZIdKOlYzF3nMdkG65mkOCl688uvPz+wSuQUvmnHVLr3y6+oy8E/21wKCApA
9Muv6v7tf8a2UKHhMlTv76s/lHn6rygRsQ5GfaP+UJgb95l3AHtRUFymKFXO
yRUUNJMseO5STcRMbSl8sG3gOuuhFx9vr+cbXoXsyQMACL+zSgAnRzeJTlPJ
e+gZkh3ej1tNQPDYG4LvAUbcFJRMcaPlamGabLVoo1NGB+cVprLZFSv9zmVg
0QZ9893UhadAh6j05mbh/g5cG333Vz8V9xtODkwoX/9BAFbYqliq3+44Bkfs
ubFaYe28LOgMojKRmPJrGirrc/m+8jLGmQeypIiiIlxVr/NgIR9GBFFGf+Fy
IwNeUhCFy7NZHuTwP09wY3OTTiUEcXuv/9X76PZMyodM+vUWadRb5LBaSTnj
Rp7Ifv3Nh66BRdiUHP2aEd4onlMDWFiPlngWXjiELk5yz9UDvnUNCJYdeuhF
zymlSup4b29JaqJ/s6xqmz9qbyTC8tK36vb29hw0NfVKygOq9+/foynoSyvc
lWQcDQTsXw13NjrEAFjA3Vf/EMfqOpufcawCaJHqSb8+3oOdyibyaQ+VaxCj
jR7TkULR8TW2ycQEtTMVx99E/xcOQyHGsLsAAA==

-->

</rfc>

