<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.34 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-07" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-07"/>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <author initials="B. G." surname="Peabody" fullname="Brad G. Peabody">
      <organization>Uncloud</organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>
    <author initials="P." surname="Leach" fullname="P. Leach">
      <organization>University of Washington</organization>
      <address>
        <email>pjl7@uw.edu</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword>
    <abstract>
      <?line 247?>

<t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and is intended to guarantee
uniqueness across space and time.  UUIDs were originally used in the
Apollo Network Computing System and later in the Open Software
Foundation's (OSF) Distributed Computing Environment (DCE), and then
in Microsoft Windows platforms.</t>
      <t>This specification is derived from the DCE specification with the
kind permission of the OSF (now known as The Open Group).
Information from earlier versions of the DCE specification have been
incorporated into this document. This document obsoletes RFC4122.</t>
    </abstract>
  </front>
  <middle>
    <?line 261?>

<section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and requires no central
registration process.</t>
      <t>The use of UUIDs is extremely pervasive in computing.  They comprise
the core identifier infrastructure for many operating systems
such as Microsoft Windows and applications such as the Mozilla Web browser and in
many cases, become exposed in many non-standard ways.</t>
      <t>This specification attempts to standardize that practice as openly as
possible and in a way that attempts to benefit the entire Internet.
The information here is meant to be a concise guide for those wishing
to implement services using UUIDs, UUIDs in combination with URNs <xref target="RFC8141"/>, or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.  In addition, a global registration function is being
provided by the Telecommunications Standardization Bureau of ITU-T;
for details see <eref target="https://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx"/>.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although one format uses
IEEE 802 node identifiers, others do not).  As a result, generation
on demand can be completely automated and used for a variety of
purposes.  The UUID generation algorithm described here supports very
high allocation rates of 10 million per second per machine or more if
necessary, so that they could even be used as transaction IDs.</t>
      <t>UUIDs are of a fixed size (128 bits), which is reasonably small
compared to other alternatives.  This lends itself well to sorting,
ordering, and hashing of all sorts, storing in databases, simple
allocation, and ease of programming in general.</t>
      <t>Since UUIDs are unique and persistent, they make excellent Uniform
Resource Names.  The unique ability to generate a new UUID without a
registration process allows for UUIDs to be one of the URNs with the
lowest minting cost.</t>
      <section anchor="update-motivation">
        <name>Update Motivation</name>
        <t>Many things have changed in the time since UUIDs were originally created.
Modern applications have a need to create and utilize UUIDs as the primary
identifier for a variety of different items in complex computational systems,
including but not limited to database keys, file names, machine or system
names, and identifiers for event-driven transactions.</t>
        <t>One area in which UUIDs have gained popularity is as database keys.
This stems from the increasingly distributed nature of modern applications.
In such cases, "auto increment" schemes often used by databases do not work
well, as the effort required to coordinate sequential numeric identifiers across
a network can easily become a burden.
The fact that UUIDs can be used to create unique, reasonably short values
in distributed systems without requiring coordination makes them a good
alternative, but UUID versions 1-5 lack certain other desirable characteristics:</t>
        <ol spacing="normal" type="1"><li>Non-time-ordered UUID versions such as UUIDv4 (described in <xref target="uuidv4"/>) have poor database index
  locality.
  This means that new values created in succession are not close to each other in
  the index and thus require inserts to be performed at random
  locations.
  The negative performance effects of which on common structures used for
  this (B-tree and its variants) can be dramatic.</li>
          <li>The 100-nanosecond Gregorian epoch used in UUIDv1 (described in <xref target="uuidv1"/>) timestamps is uncommon
  and difficult to represent accurately using a standard number format such
  as <xref target="IEEE754"/>.</li>
          <li>Introspection/parsing is required to order by time sequence, as opposed to
  being able to perform a simple byte-by-byte comparison.</li>
          <li>Privacy and network security issues arise from using a MAC address in the
  node field of Version 1 UUIDs.
  Exposed MAC addresses can be used as an attack surface to locate machines
  and reveal various other
  information about such machines (minimally manufacturer, potentially other
  details). Additionally, with the advent of virtual machines and containers,
  MAC address uniqueness is no longer guaranteed.</li>
          <li>Many of the implementation details specified in RFC4122 involved trade
  offs that are neither possible to specify for all applications nor
  necessary to produce interoperable implementations.</li>
          <li>RFC4122 did not distinguish between the requirements for generation
  of a UUID versus an application that simply stores one, which are often
  different.</li>
        </ol>
        <t>Due to the aforementioned issues, many widely distributed database applications
and large application vendors have sought to solve the problem of creating
a better
time-based, sortable unique identifier for use as a database key. This has
lead to numerous implementations
over the past 10+ years solving the same problem in slightly different ways.</t>
        <t>While preparing this specification, the following 16 different implementations
were analyzed for trends in total ID length, bit layout, lexical formatting/encoding,
timestamp type, timestamp format, timestamp accuracy, node format/components,
collision handling, and multi-timestamp tick generation sequencing:</t>
        <ol spacing="compact" type="1"><li>
            <xref target="ULID"/> by A. Feerasta</li>
          <li>
            <xref target="LexicalUUID"/> by Twitter</li>
          <li>
            <xref target="Snowflake"/> by Twitter</li>
          <li>
            <xref target="Flake"/> by Boundary</li>
          <li>
            <xref target="ShardingID"/> by Instagram</li>
          <li>
            <xref target="KSUID"/> by Segment</li>
          <li>
            <xref target="Elasticflake"/> by P. Pearcy</li>
          <li>
            <xref target="FlakeID"/> by T. Pawlak</li>
          <li>
            <xref target="Sonyflake"/> by Sony</li>
          <li>
            <xref target="orderedUuid"/> by IT. Cabrera</li>
          <li>
            <xref target="COMBGUID"/> by R. Tallent</li>
          <li>
            <xref target="SID"/> by A. Chilton</li>
          <li>
            <xref target="pushID"/> by Google</li>
          <li>
            <xref target="XID"/> by O. Poitrey</li>
          <li>
            <xref target="ObjectID"/> by MongoDB</li>
          <li>
            <xref target="CUID"/> by E. Elliott</li>
        </ol>
        <t>An inspection of these implementations and the issues described above has
led to this document which intends to adapt UUIDs to address these issues.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <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="acronyms">
        <name>Abbreviations</name>
        <t>The following abbreviations are used in this document:</t>
        <dl indent="14">
          <dt>UUID</dt>
          <dd>
            <t>Universally Unique Identifier</t>
          </dd>
          <dt>URN</dt>
          <dd>
            <t>Uniform Resource Names</t>
          </dd>
          <dt>ABNF</dt>
          <dd>
            <t>Augmented Backus-Naur Form</t>
          </dd>
          <dt>CSPRNG</dt>
          <dd>
            <t>Cryptographically Secure Pseudo-Random Number Generator</t>
          </dd>
          <dt>MAC</dt>
          <dd>
            <t>Media Access Control</t>
          </dd>
          <dt>MSB</dt>
          <dd>
            <t>Most Significant Bit</t>
          </dd>
          <dt>DBMS</dt>
          <dd>
            <t>Database Management System</t>
          </dd>
          <dt>IEEE</dt>
          <dd>
            <t>Institute of Electrical and Electronics Engineers, Inc.</t>
          </dd>
          <dt>ITU</dt>
          <dd>
            <t>International Telecommunication Union</t>
          </dd>
          <dt>MD5</dt>
          <dd>
            <t>Message Digest 5</t>
          </dd>
          <dt>SHA</dt>
          <dd>
            <t>Secure Hash Algorithm</t>
          </dd>
          <dt>SHA-1</dt>
          <dd>
            <t>Secure Hash Algorithm 1 with message digest of 160 bits</t>
          </dd>
          <dt>SHA-224</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 224 bits</t>
          </dd>
          <dt>SHA-256</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 256 bits</t>
          </dd>
          <dt>SHA-512</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 512 bits</t>
          </dd>
          <dt>SHA-3</dt>
          <dd>
            <t>Secure Hash Algorithm 3</t>
          </dd>
          <dt>SHAKE</dt>
          <dd>
            <t>Secure Hash Algorithm 3 based on KECCAK algorithm</t>
          </dd>
          <dt>UTC</dt>
          <dd>
            <t>Coordinated Universal Time</t>
          </dd>
          <dt>OID</dt>
          <dd>
            <t>Object Identifier</t>
          </dd>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>Changelog</name>
        <t>draft-07</t>
        <ul spacing="compact">
          <li>Even more grammar tweaks! #109</li>
          <li>Remove unnecessary "32 bit" in UUIDv7 example #108</li>
          <li>Change "fixed millisecond" -&gt; "millisecond by default" relating to v7... #110</li>
          <li>Revert Max UUID Naming #107</li>
          <li>Author Changes</li>
        </ul>
        <t>draft-06</t>
        <ul spacing="compact">
          <li>More Grammar edits! #102</li>
          <li>Tweak v7 description to de-emphasize optional components #103</li>
          <li>Better Clarify Case in ABNF #104</li>
          <li>Verbiage change in 6.2 #105</li>
        </ul>
        <t>draft-05</t>
        <ul spacing="compact">
          <li>Changed Max UUID to Max UUID to better complement Latin Nil UUID verbiage. #95</li>
          <li>Align Method 3 text with the 12 bits limitation #96</li>
          <li>Make Version/version casing consistent across 5. UUID Layouts #97</li>
          <li>Cite MS COM GUID as little-endian #95</li>
        </ul>
        <t>draft-04</t>
        <ul spacing="compact">
          <li>Remove extra words #82, #88, and #93</li>
          <li>Punctuation and minor style fixes #84</li>
          <li>Change rounding mode of Method 4 Section 6.2 #90 (from #86)</li>
          <li>Add verbal description of v7 generation to 5.7. UUID Version 7 #91</li>
          <li>Remove Re-randomize Until Monotonic (Method 3) from Monotonicity and Counters #92</li>
          <li>Fix ambiguous text around UUIDv6 clock sequence #89</li>
          <li>Move endianness statement from layout to format section #85</li>
          <li>Further modified abstract to separate URN topic from UUID definition #83</li>
          <li>Provided three more UUID format examples #83</li>
          <li>Added text further clarifying version construct is for the variant in this doc #83</li>
          <li>Provided further clarification for local/global bit vs multicast bit #83</li>
        </ul>
        <t>draft-03</t>
        <ul spacing="compact">
          <li>Revised IANA Considerations #71</li>
          <li>Fix "integral numbers of octets" verbiage #67</li>
          <li>Transpose UUID Namespaces to match UUID Hashspaces #70</li>
          <li>Reference all Hash Algorithms. #69</li>
          <li>Normalize SHA abbreviation formats #66</li>
          <li>Add other Hash Abbreviations #65</li>
          <li>Remove URN from title #73</li>
          <li>Move Community Considerations to Introduction #68</li>
          <li>Move some Normative Reference to Informative #74</li>
          <li>Misc formatting changes to address IDNITS feedback</li>
          <li>Downgrade <bcp14>MUST NOT</bcp14> to <bcp14>SHOULD NOT</bcp14> for guessability of UUIDs #75</li>
          <li>Misc. text formatting, typo fixes #78</li>
          <li>Misc. text clarifications #79</li>
          <li>Misc. <bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> adjustments #80</li>
          <li>Method 3 and 4 added to monotonic section #81</li>
        </ul>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>Change md5_high in SHA-1 section to sha1_mid #59</li>
          <li>Describe Nil/Max UUID in variant table #16</li>
          <li>Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49</li>
          <li>Appendix B, consistent naming #55</li>
          <li>Remove duplicate ABNF from IANA considerations #56</li>
          <li>Monotonic Error Checking missing newline #57</li>
          <li>More Security Considerations Randomness #26</li>
          <li>SHA-256 UUID Generation #50</li>
          <li>Expand multiplexed fields within v1 and v6 bit definitions #43</li>
          <li>Clean up text in UUIDs that Do Not Identify the Host #61</li>
          <li>Revise UUID Generator States section #47</li>
          <li>Expand upon why unix epoch rollover is not a problem #44</li>
          <li>Delete Sample Code Appendix #62</li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>Mixed Case Spelling error #18</li>
          <li>Add "UUIDs that Do Not Identify the Host as well" reference to security considerations #19</li>
          <li>Out of Place Distributed node text #20</li>
          <li>v6 clock_seq and node usage ambiguity #21</li>
          <li>Figure 2 and 3 Fix Title #22</li>
          <li>Move Namespace Registration Template to IANA Considerations #23</li>
          <li>Verify ABNF formatting against RFC5234 #24</li>
          <li>Bump ABNF reference to RFC 5234 #25</li>
          <li>Modify v8 <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> #27</li>
          <li>Remove "time-based" constraint from version 8 UUID #29</li>
          <li>Further clarify v7 field description #125 #30</li>
          <li>Typo: Section 4.2, Version Field, "UUID from in this" #33</li>
          <li>Create better ABNF to represent Hex Digit #39</li>
          <li>Break Binary form of UUID into two lines. #40</li>
          <li>Move octet text from section 4 to section 5 #41</li>
          <li>Add forward reference to UUIDv1 and UUIDv4 in Section 2 #42</li>
          <li>Erroneous reference to v1 in monotonicity #45</li>
          <li>Add Label for "Monotonic Error Checking" paragraph to frame the topic #46</li>
          <li>Remove IEEE paragraph from "uuids that do not identify the host" #48</li>
          <li>Grammar Review #52</li>
        </ul>
        <t>draft-00</t>
        <ul spacing="compact">
          <li>Merge RFC4122 with draft-peabody-dispatch-new-uuid-format-04.md</li>
          <li>Change: Reference RFC1321 to RFC6151</li>
          <li>Change: Reference RFC2141 to RFC8141</li>
          <li>Change: Reference RFC2234 to RFC5234</li>
          <li>Change: Reference FIPS 180-1 to FIPS 180-4 for SHA-1</li>
          <li>Change: Converted UUIDv1 to match UUIDv6 section from Draft 04</li>
          <li>Change: Trimmed down the ABNF representation</li>
          <li>Change: http websites to https equivalent</li>
          <li>Errata: Bad Reference to RFC1750 | 3641 #4</li>
          <li>Errata: Change MD5 website to example.com | 3476 #6 (Also Fixes Errata: Fix uuid_create_md5_from_name() | 1352 #2)</li>
          <li>Errata: Typo in code comment | 6665 #11</li>
          <li>Errata: Fix BAD OID acronym | 6225 #9</li>
          <li>Errata: Incorrect Parenthesis usage Section 4.3 | 184 #5</li>
          <li>Errata: Lexicographically Sorting Paragraph Fix | 1428 #3</li>
          <li>Errata: Fix 4.1.3 reference to the correct bits | 1957 #13</li>
          <li>Errata: Fix reference to variant in octet 8 | 4975 #7</li>
          <li>Errata: Further clarify 3rd/last bit of Variant for spec | 5560 #8</li>
          <li>Errata: Fix clock_seq_hi_and_reserved most-significant bit verbiage | 4976 #10</li>
          <li>Errata: Better Clarify network byte order when referencing most significant bits | 3546 #12</li>
          <li>Draft 05: B.2. Example of a UUIDv7 Value two "var" in table #120</li>
          <li>Draft 05: <bcp14>MUST</bcp14> verbiage in Reliability of 6.1 #121</li>
          <li>Draft 05: Further discourage centralized registry for distributed UUID Generation.</li>
          <li>New: Further Clarity of exact octet and bit of var/ver in this spec</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv4</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv3</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv5</li>
          <li>New: Add MD5 Security Considerations reference, RFC6151</li>
          <li>New: Add SHA-1 Security Considerations reference, RFC6194</li>
        </ul>
      </section>
    </section>
    <section anchor="format">
      <name>UUID Format</name>
      <t>The UUID format is 16 octets (128 bits); the variant bits in conjunction with the version
bits described in the next sections in determine finer structure. While discussing UUID formats and layout, bit definitions start at 0 and end at 127 while octet definitions start at 0 and end at 15.</t>
      <t>In the absence of explicit application or presentation protocol
specification to the contrary, each field is encoded with the Most
Significant Byte first (known as network byte order).</t>
      <t>Saving UUIDs to binary format is done by sequencing all fields in big-endian format.
However there is a known caveat that Microsoft's Component Object Model (COM) GUIDs leverage little-endian when saving GUIDs.
The discussion of this <xref target="MS_COM_GUID"/> is outside the scope of this specification.</t>
      <t>UUIDs <bcp14>MAY</bcp14> be represented as binary data or integers.
When in use with URNs or as text in applications, any given UUID <bcp14>SHOULD</bcp14>
be represented by the "hex-and-dash" string format consisting of multiple
groups of upper or lowercase alphanumeric hexadecimal characters separated by single dashes/hyphens.
When used with databases please refer to <xref target="database_considerations"/>.</t>
      <t>The formal definition of the UUID string representation is provided by the following (ABNF) <xref target="RFC5234"/>.</t>
      <sourcecode type="abnf"><![CDATA[
UUID     = 4hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           6hexOctet
hexOctet = HEXDIG HEXDIG
DIGIT    = %x30-39
HEXDIG   = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
]]></sourcecode>
      <t>Note that the alphabetic characters may be all uppercase, all lowercase, or mixed case, as per <xref section="2.3" sectionFormat="comma" target="RFC5234"/>.
An example UUID using this textual representation from the above ABNF is shown in <xref target="sampleStringUUID"/>.</t>
      <figure anchor="sampleStringUUID">
        <name>Example String UUID format</name>
        <artwork><![CDATA[
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>The same UUID from <xref target="sampleStringUUID"/> is represented in Binary <xref target="sampleBinaryUUID"/>, Integer <xref target="sampleIntegerUUID"/> and as a URN <xref target="sampleURNUUID"/> defined by <xref target="RFC8141"/>.</t>
      <figure anchor="sampleBinaryUUID">
        <name>Example Binary UUID</name>
        <artwork><![CDATA[
111110000001110101001111101011100111110111101100000100011101000\
01010011101100101000000001010000011001001000111100110101111110110
]]></artwork>
      </figure>
      <figure anchor="sampleIntegerUUID">
        <name>Example Integer UUID (shown as a decimal number)</name>
        <artwork><![CDATA[
329800735698586629295641978511506172918
]]></artwork>
      </figure>
      <figure anchor="sampleURNUUID">
        <name>Example URN UUID</name>
        <artwork><![CDATA[
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>There are many other ways to define a UUID format; some examples are detailed below.
Please note that this is not an exhaustive list and is only provided for informational purposes.</t>
      <ul spacing="compact">
        <li>Some UUID implementations, such as those found in <xref target="Python"/> and <xref target="Microsoft"/>, will output UUID with the string format, including dashes, enclosed in curly braces.</li>
        <li>
          <xref target="X667"/> provides UUID format definitions for use of UUID with an OID.</li>
        <li>The legacy <xref target="IBM_NCS"/> implementation produces a unique UUID format compatible with Variant 0xx of <xref target="table1"/></li>
      </ul>
      <section anchor="variant_field">
        <name>Variant Field</name>
        <t>The variant field determines the layout of the UUID.  That is, the
interpretation of all other bits in the UUID depends on the setting
of the bits in the variant field.  As such, it could more accurately
be called a type field; we retain the original term for
compatibility.  The variant field consists of a variable number of
the most significant bits of octet 8 of the UUID.</t>
        <t><xref target="table1"/> lists the contents of the variant field, where
the letter "x" indicates a "don't-care" value.</t>
        <table anchor="table1">
          <name>UUID Variants</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">Reserved, NCS backward compatibility and includes Nil UUID as per <xref target="niluuid"/>.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">The variant specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">Reserved, Microsoft Corporation backward compatibility.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">Reserved for future definition and includes Max UUID as per <xref target="maxuuid"/>.</td>
            </tr>
          </tbody>
        </table>
        <t>Interoperability, in any form, with variants other than the one
defined here is not guaranteed but is not likely to be an issue in
practice.</t>
        <t>Specifically for UUIDs in this document bits 64 and 65 of the UUID (bits 0 and 1 of octet 8) <bcp14>MUST</bcp14> be set to 1 and 0 as specified in row 2 of <xref target="table1"/>.
Accordingly, all bit and field layouts avoid the use of these bits.</t>
      </section>
      <section anchor="version_field">
        <name>Version Field</name>
        <t>The version number is in the most significant 4 bits of octet 6
(bits 48 through 51 of the UUID).</t>
        <t><xref target="table2"/> lists all of the versions for this UUID variant 10x specified in this document.</t>
        <table anchor="table2">
          <name>UUID variant 10x versions defined by this specification</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Msb3</th>
              <th align="left">Version</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">Unused</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">The Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">2</td>
              <td align="left">Reserved for DCE Security version, with embedded POSIX UUIDs.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">3</td>
              <td align="left">The name-based version specified in this document that uses MD5 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">4</td>
              <td align="left">The randomly or pseudo-randomly generated version specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">5</td>
              <td align="left">The name-based version specified in this document that uses SHA-1 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">6</td>
              <td align="left">Reordered Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">7</td>
              <td align="left">Unix Epoch time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">8</td>
              <td align="left">Reserved for custom UUID formats specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">9</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">10</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">11</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">12</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">13</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">14</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">15</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
          </tbody>
        </table>
        <t>An example version/variant layout for UUIDv4 follows the table
where M represents the version placement for the hexadecimal representation of 4 (0100)
and the N represents the variant placement for one of the four possible hexadecimal representation of variant 10x:
8 (1000), 9 (1001), A (1010), B (1011)</t>
        <figure>
          <name>UUIDv4 Variant Examples</name>
          <artwork><![CDATA[
00000000-0000-4000-8000-000000000000
00000000-0000-4000-9000-000000000000
00000000-0000-4000-A000-000000000000
00000000-0000-4000-B000-000000000000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
]]></artwork>
        </figure>
        <t>It should be noted that the other remaining UUID variants found in <xref target="table1"/> leverage different sub-typing/versioning mechanisms.
The recording and definition of the remaining UUID variant and sub-typing combinations are outside of the scope of this document.</t>
      </section>
    </section>
    <section anchor="layout">
      <name>UUID Layouts</name>
      <t>To minimize confusion about bit assignments within octets and among differing versions, the UUID record definition is provided as a grouping of fields within bit layout consisting four octets to a row.
The fields are presented with the most significant one first.</t>
      <section anchor="uuidv1">
        <name>UUID Version 1</name>
        <t>UUID version 1 is a time-based UUID featuring a 60-bit timestamp
represented by Coordinated Universal Time (UTC) as a count of 100-
nanosecond intervals since 00:00:00.00, 15 October 1582 (the date of
Gregorian reform to the Christian calendar).</t>
        <t>UUIDv1 also features a clock sequence field which is used to help avoid
duplicates that could arise when the clock is set backwards in time
or if the node ID changes.</t>
        <t>The node field consists of an IEEE 802 MAC
address, usually the host address.  For systems with multiple IEEE
802 addresses, any available one <bcp14>MAY</bcp14> be used.  The lowest addressed
octet (octet number 10) contains the global/local bit and the
unicast/multicast bit, and is the first octet of the address
transmitted on an 802.3 LAN.</t>
        <figure>
          <name>UUIDv1 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_high       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_low:</dt>
          <dd>
            <t>The least significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0001.
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>time_high:</dt>
          <dd>
            <t>12 bits that will contain the most significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14-bits containing the clock sequence.
  Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>For systems that do not have UTC available, but do have the local
time, they may use that instead of UTC, as long as they do so
consistently throughout the system.  However, this is not recommended
since generating the UTC from local time only needs a time zone
offset.</t>
        <t>If the clock is set backwards, or might have been set backwards
(e.g., while the system was powered off), and the UUID generator can
not be sure that no UUIDs were generated with timestamps larger than
the value to which the clock was set, then the clock sequence <bcp14>MUST</bcp14>
be changed.  If the previous value of the clock sequence is known, it
<bcp14>MAY</bcp14> be incremented; otherwise it <bcp14>SHOULD</bcp14> be set to a random or
high-quality pseudo-random value.</t>
        <t>Similarly, if the node ID changes (e.g., because a network card has
been moved between machines), setting the clock sequence to a random
number minimizes the probability of a duplicate due to slight
differences in the clock settings of the machines.  If the value of
clock sequence associated with the changed node ID were known, then
the clock sequence <bcp14>MAY</bcp14> be incremented, but that is unlikely.</t>
        <t>The clock sequence <bcp14>MUST</bcp14> be originally (i.e., once in the lifetime of
a system) initialized to a random number to minimize the correlation
across systems.  This provides maximum protection against node
identifiers that may move or switch from system to system rapidly.
The initial value <bcp14>MUST NOT</bcp14> be correlated to the node identifier.</t>
        <t>For systems with no IEEE address, a randomly or pseudo-randomly
generated value may be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such the definition of these UUIDs is outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0011</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>UUID version 4 is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random data which is
used to fill out the UUID fields in <xref target="uuidv4fields"/>. The UUID version
and variant then replace the respective bits as defined by <xref target="version_field"/>
and <xref target="variant_field"/>.</t>
        <t>Alternatively, an implementation <bcp14>MAY</bcp14> choose to randomly generate the exact required number of bits for
random_a, random_b, and random_c (122 bits total), and then concatenate the version and variant in the required position.</t>
        <t>For guidelines on random data generation see <xref target="unguessability"/>.</t>
        <figure anchor="uuidv4fields">
          <name>UUIDv4 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          random_a             |  ver  |       random_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>random_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled with random data as specified in <xref target="unguessability"/></t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0100</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/></t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This SHA-1 value is then used to populate all 128 bits of the UUID layout. Excess bits beyond 128 are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="v8"/>.
For implementation guidance around utilizing UUIDv8 for name-based UUIDs refer to the sub-section of <xref target="name_based_uuid_generation"/>.</t>
        <t>For more information on SHA-1 security considerations see <xref target="RFC6194"/>.</t>
        <figure>
          <name>UUIDv5 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         sha1_high             |  ver  |      sha1_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>sha1_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed SHA-1 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>sha1_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following sha1_high
from the computed SHA-1 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>sha1_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled by skipping the 2 most significant, left-most bits of the remaining SHA-1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA-1 bits are discarded and unused.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv6">
        <name>UUID Version 6</name>
        <t>UUID version 6 is a field-compatible version of UUIDv1, reordered for improved
DB locality.
It is expected that UUIDv6 will primarily be used in contexts where there
are existing v1 UUIDs.
Systems that do not involve legacy UUIDv1 <bcp14>SHOULD</bcp14> use UUIDv7 instead.</t>
        <t>Instead of splitting the timestamp into the low, mid, and high sections from
UUIDv1, UUIDv6 changes this sequence so timestamp bytes are stored from most
to least significant.
That is, given a 60 bit timestamp value as specified for UUIDv1 in <xref target="uuidv1"/>,
for UUIDv6, the first 48 most significant bits are stored
first, followed by the 4 bit version (same position), followed by the remaining
12 bits of the original 60 bit timestamp.</t>
        <t>The clock sequence  and node bits remain unchanged from their position in <xref target="uuidv1"/>.</t>
        <t>The clock sequence and node bits <bcp14>SHOULD</bcp14> be reset to a pseudo-random value for each new UUIDv6 generated; however, implementations <bcp14>MAY</bcp14> choose to retain the old clock sequence and MAC address behavior from <xref target="uuidv1"/>. For more information on MAC address usage within UUIDs see the <xref target="Security"/>.</t>
        <t>The format for the 16-byte, 128 bit UUIDv6 is shown in <xref target="v6layout"/>.</t>
        <figure anchor="v6layout">
          <name>UUIDv6 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_low        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_high:</dt>
          <dd>
            <t>The most significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0110.
Occupies bits 48 through 51 of Octet 6.</t>
          </dd>
          <dt>time_low:</dt>
          <dd>
            <t>12 bits that will contain the least significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14 bits containing the clock sequence.
Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>With UUIDv6 the steps for splitting the timestamp into time_high and time_mid
are <bcp14>OPTIONAL</bcp14>
since the 48 bits of time_high and time_mid will remain in the same order.
An extra step of splitting the first 48 bits of the timestamp into the most
significant
32 bits and least significant 16 bits proves useful when reusing an existing
UUIDv1 implementation.</t>
      </section>
      <section anchor="v7">
        <name>UUID Version 7</name>
        <t>UUID version 7 features a time-ordered value field derived from the widely
implemented and well known Unix Epoch timestamp source, the number of milliseconds
since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUIDv7 generally has improved entropy characteristics over UUIDv1 or UUIDv6.</t>
        <t>UUIDv7 values are created by allocating a Unix timestamp in milliseconds in the most significant 48 bits and filling the remaining 74 bits, excluding the required version and variant bits, with random bits for each new UUIDv7 generated to provide uniqueness as per <xref target="unguessability"/>. Alternatively, implementations <bcp14>MAY</bcp14> fill the 74 bits, jointly, with a combination of the following subfields, in this order from the most significant bits to the least, to guarantee additional monotonicity within a millisecond:</t>
        <ol spacing="normal" type="1"><li>An <bcp14>OPTIONAL</bcp14> sub-millisecond timestamp fraction (12 bits at maximum) as per <xref target="monotonicity_counters"/> (Method 3).</li>
          <li>An <bcp14>OPTIONAL</bcp14> carefully seeded counter as per <xref target="monotonicity_counters"/> (Method 1 or 2).</li>
          <li>Random data for each new UUIDv7 generated for any remaining space.</li>
        </ol>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUIDv7 instead of UUIDv1 and UUIDv6 if
possible.</t>
        <figure>
          <name>UUIDv7 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           unix_ts_ms                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          unix_ts_ms           |  ver  |       rand_a          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>unix_ts_ms:</dt>
          <dd>
            <t>48 bit big-endian unsigned number of Unix epoch timestamp in milliseconds as per <xref target="timestamp_considerations"/>.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>4 bit UUIDv7 version set as per <xref target="version_field"/></t>
          </dd>
          <dt>rand_a:</dt>
          <dd>
            <t>12 bits pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or optional constructs to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>rand_b:</dt>
          <dd>
            <t>The final 62 bits of pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or an optional counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="v8">
        <name>UUID Version 8</name>
        <t>UUID version 8 provides an RFC-compatible format for experimental or vendor-specific
use cases.
The only requirement is that the variant and version bits <bcp14>MUST</bcp14> be set as
defined in <xref target="variant_field"/> and <xref target="version_field"/>.
UUIDv8's uniqueness will be implementation-specific and <bcp14>MUST NOT</bcp14> be assumed.</t>
        <t>The only explicitly defined bits are the version and variant, leaving 122
bits
for implementation specific UUIDs. To be clear:
UUIDv8 is not a replacement for UUIDv4 where all 122 extra bits are
filled with random data.</t>
        <t>Some example situations in which UUIDv8 usage could occur:</t>
        <ul spacing="normal">
          <li>An implementation would like to embed extra information
within the UUID other than what is defined in this document.</li>
          <li>An implementation has other application/language restrictions which
inhibit the use of one of the current UUIDs.</li>
        </ul>
        <figure>
          <name>UUIDv8 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          custom_a             |  ver  |       custom_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>custom_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled as an implementation sees
fit.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>custom_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled as an implementation sees fit.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>custom_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled as an implementation sees fit.</t>
          </dd>
        </dl>
      </section>
      <section anchor="niluuid">
        <name>Nil UUID</name>
        <t>The nil UUID is special form of UUID that is specified to have all
128 bits set to zero.</t>
        <figure>
          <name>Nil UUID Format</name>
          <artwork><![CDATA[
00000000-0000-0000-0000-000000000000
]]></artwork>
        </figure>
        <t>A Nil UUID value can be useful to communicate the absence of any other UUID value in situations that otherwise require or use a 128-bit UUID.  A Nil UUID can express the concept "no such value here". Thus it is reserved for such use as needed for implementation-specific situations.</t>
      </section>
      <section anchor="maxuuid">
        <name>Max UUID</name>
        <t>The Max UUID is special form of UUID that is specified to have all 128 bits
set to 1. This UUID can be thought of as the inverse of Nil UUID defined
in <xref target="niluuid"/>.</t>
        <figure>
          <name>Max UUID Format</name>
          <artwork><![CDATA[
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
]]></artwork>
        </figure>
        <t>A Max UUID value can be used as a sentinel value in situations where a 128-bit UUID is required but a concept such as "end of UUID list" needs to be expressed, and is reserved for such use as needed for implementation-specific situations.</t>
      </section>
    </section>
    <section anchor="uuid_best_practices">
      <name>UUID Best Practices</name>
      <t>The minimum requirements for generating UUIDs are
described in this document for each version.
Everything else is an implementation detail and
up to the implementer to decide what is appropriate for a given
implementation. Various relevant factors are covered
below to help guide an implementer through the different trade-offs among
differing UUID implementations.</t>
      <section anchor="timestamp_considerations">
        <name>Timestamp Considerations</name>
        <t>UUID timestamp source, precision, and length was the topic of great debate
while creating UUIDv7 for this specification. Choosing the right timestamp for
your application is a very important topic. This section will detail some
of the most common points on this topic.</t>
        <dl newline="true">
          <dt>Reliability:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> use the current timestamp from a reliable source to
provide values that are time-ordered and continually increasing.
Care <bcp14>SHOULD</bcp14> be taken to ensure that timestamp changes from the environment
or operating system are handled in a way that is consistent with implementation
requirements.
For example, if it is possible for the system clock to move backward due
to either manual adjustment or corrections from a time synchronization protocol,
implementations need to determine how to handle such cases. (See Altering, Fuzzing,
or Smearing below.)</t>
          </dd>
          <dt>Source:</dt>
          <dd>
            <t>UUID version 1 and 6 both utilize a Gregorian epoch timestamp while UUIDv7
utilizes a Unix Epoch timestamp. If other timestamp sources or a custom timestamp
epoch are required, UUIDv8 <bcp14>MUST</bcp14> be used.</t>
          </dd>
          <dt>Sub-second Precision and Accuracy:</dt>
          <dd>
            <t>Many levels of precision exist for timestamps: milliseconds, microseconds,
nanoseconds, and beyond.
Additionally fractional representations of sub-second precision may be desired
to mix various levels of precision in a time-ordered manner.
Furthermore, system clocks themselves have an underlying granularity and
it is frequently less than the precision offered by the operating system.
With UUID version 1 and 6, 100-nanoseconds of precision are present while
UUIDv7 features millisecond level of precision by default within the Unix epoch
that does not exceed the granularity capable in most modern systems.
For other levels of precision UUIDv8 <bcp14>SHOULD</bcp14> be utilized.
Similar to <xref target="monotonicity_counters"/>, with UUIDv1 or UUIDv6,
a high resolution timestamp can be simulated by keeping a count of
the number of UUIDs that have been generated with the same value of
the system time, and using it to construct the low order bits of the
timestamp.  The count will range between zero and the number of
100-nanosecond intervals per system time interval.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The length of a given timestamp directly impacts how long a given UUID will
be valid.
That is, how many timestamp ticks can be contained in a UUID before the maximum
value for the timestamp field is reached.
Care <bcp14>SHOULD</bcp14> be given to ensure that the proper length is selected for a given
timestamp.
UUID version 1 and 6 utilize a 60 bit timestamp valid until 5623 AD and UUIDv7 features a 48
bit timestamp valid until the year 10889 AD.</t>
          </dd>
          <dt>Altering, Fuzzing, or Smearing:</dt>
          <dd>
            <t>Implementations <bcp14>MAY</bcp14> alter the actual timestamp. Some examples include security
considerations around providing a real clock value within a UUID, to correct
inaccurate clocks, or to handle leap seconds. This specification makes no
requirement or guarantee about how close the clock value needs to be to the actual
time.
If UUIDs do not need to be frequently generated, the UUIDv1 or UUIDv6 timestamp can
simply be the system time multiplied by the number of 100-nanosecond
intervals per system time interval.</t>
          </dd>
          <dt>Padding:</dt>
          <dd>
            <t>When timestamp padding is required, implementations <bcp14>MUST</bcp14> pad the most significant
bits (left-most) bits with zeros. An example is padding the most significant,
left-most bits of a Unix timestamp with zeros to fill out the 48
bit timestamp in UUIDv7.</t>
          </dd>
          <dt>Truncating:</dt>
          <dd>
            <t>When timestamps need to be truncated, the lower, least significant
bits <bcp14>MUST</bcp14> be used. An example would be truncating a 64 bit Unix timestamp
to the least significant, right-most 48 bits for UUIDv7.</t>
          </dd>
          <dt>Error Handling:</dt>
          <dd>
            <t>If a system overruns the generator by requesting too many UUIDs
within a single system time interval, the UUID service <bcp14>SHOULD</bcp14> either
return an error, or stall the UUID generator until the system clock
catches up, and <bcp14>MUST NOT</bcp14> return knowingly duplicate values.
Note that if the processors overrun the UUID generation frequently,
additional node identifiers can be allocated to the system, which
will permit higher speed allocation by making multiple UUIDs
potentially available for each time stamp value.
Similar techniques are discussed in <xref target="distributed_shared_knowledge"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="monotonicity_counters">
        <name>Monotonicity and Counters</name>
        <t>Monotonicity (each subsequent value being greater than the last) is the backbone of time-based sortable UUIDs. Normally, time-based
UUIDs from this document will be monotonic due to an embedded timestamp; however,
implementations can guarantee additional monotonicity via the concepts covered
in this section.</t>
        <t>Care <bcp14>SHOULD</bcp14> be taken to ensure UUIDs generated in batches are
also monotonic. That is, if one thousand UUIDs are generated for the same
timestamp, there <bcp14>SHOULD</bcp14> be sufficient logic for organizing the creation order of
those one thousand UUIDs.
Batch UUID creation implementations <bcp14>MAY</bcp14> utilize a monotonic counter that
<bcp14>SHOULD</bcp14> increment for each UUID created during a given timestamp.</t>
        <t>For single-node UUID implementations that do not need to create batches of
UUIDs, the embedded timestamp within UUID version 6 and 7 can provide
sufficient monotonicity guarantees by simply ensuring that timestamp increments
before creating a new UUID. Distributed nodes are discussed in
<xref target="distributed_shared_knowledge"/>.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> employ the following methods for single-node UUID implementations
that require batch UUID creation, or are otherwise concerned about monotonicity
with high frequency UUID generation.</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Bits (Method 1):</dt>
          <dd>
            <t>Some implementations allocate a specific number of bits in the
UUID layout to the sole purpose of tallying the total number of UUIDs created
during a given UUID timestamp tick.
A fixed bit-length counter, if present, <bcp14>SHOULD</bcp14> be positioned immediately after the
embedded timestamp. This promotes sortability and allows random data generation
for each counter increment.
With this method, the rand_a section of UUIDv7 <bcp14>SHOULD</bcp14> be used as fixed-length
dedicated counter bits that are incremented by one for every UUID generation.
The trailing random bits generated for each new UUID in rand_b can help produce
unguessable UUIDs. In the event more counter bits are required, the most significant
(left-most) bits of rand_b <bcp14>MAY</bcp14> be used as additional counter bits.</t>
          </dd>
          <dt>Monotonic Random (Method 2):</dt>
          <dd>
            <t>With this method, the random data is extended to also function as a counter.
This monotonic value can be thought of as a "randomly seeded counter" which
<bcp14>MUST</bcp14> be incremented in the least significant position for each UUID created
on a given timestamp tick.
UUIDv7's rand_b section <bcp14>SHOULD</bcp14> be utilized with this method to handle batch
UUID generation during a single timestamp tick.
The increment value for every UUID generation <bcp14>SHOULD</bcp14> be a random integer
of any desired length larger than zero. It ensures the UUIDs retain the required
level of unguessability provided by the underlying entropy.
The increment value <bcp14>MAY</bcp14> be one when the number of UUIDs generated in a particular
period of time is important and guessability is not an issue. However, it
<bcp14>SHOULD NOT</bcp14> be used by implementations that favor unguessablity, as the resulting
values are easily guessable.</t>
          </dd>
          <dt>Replace Left-Most Random Bits with Increased Clock Precision (Method 3):</dt>
          <dd>
            <t>For UUIDv7, which has millisecond timestamp precision, it is possible
to use additional clock precision available on the system to substitute
for up to 12 random bits immediately following the timestamp.  This can provide
values that are time-ordered with sub-millisecond precision, using
however many bits are appropriate in the implementation environment.
With this method, the additional time precision bits <bcp14>MUST</bcp14> follow the
timestamp as the next available bit, in the rand_a field for UUIDv7.
</t>
            <t>To calculate this value, start with the portion of the timestamp
expressed as a fraction of clock's tick value (fraction of a millisecond
for UUIDv7).  Compute the count of possible values that can be represented in
the available bit space, 4096 for the UUIDv7 rand_a field.
Using floating point math, multiply this fraction of a millisecond
value by 4096 and round down (toward zero) to an integer result to arrive at a number
between 0 and the maximum allowed for the indicated bits
which is sorts monotonically based on time. Each increasing fractional
value will result in an increasing bit field value, to the
precision available with these bits.</t>
            <t>For example, let's assume a system timestamp of 1 Jan 2023 12:34:56.1234567.
Taking the precision greater than 1ms gives us a value of 0.4567, as a
fraction of a millisecond.  If we wish to encode this as 12 bits, we can
take the count of possible values that fit in those bits (4096, or 2 to the 12th power)
and multiply it by our millisecond fraction value of 0.4567 and truncate the result to
an integer, which gives an integer value of 1870. Expressed as hexadecimal it is
0x74E, or the binary bits 011101001110.  One can then use those 12 bits
as the most significant (left-most) portion of the random section of the UUID
(e.g., the rand_a field in UUIDv7).
This works for any desired bit length that fits into a UUID, and applications
can decide the appropriate length based on available clock precision, but for
UUIDv7, it is limited to 12 bits at maximum to reserve sufficient space for
random bits.</t>
            <t>The main benefit to encoding additional timestamp precision
is that it utilizes additional time precision already available in the system clock
to provide values that are more likely to be unique, and thus may simplify
certain implementations. This technique can also be used in conjunction with one
of the other methods, where this additional time precision would immediately
follow the timestamp, and then if any bits are to be used as clock sequence
they would follow next.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover topics related solely with creating reliable
fixed-length dedicated counters:</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Seeding:</dt>
          <dd>
            <t>Implementations utilizing the fixed-length counter method <bcp14>SHOULD</bcp14> randomly initialize
the counter with each new timestamp tick.
However, when the timestamp has not incremented, the counter <bcp14>SHOULD</bcp14> be frozen
and incremented via the desired increment logic.
When utilizing a randomly seeded counter alongside Method 1, the random value <bcp14>MAY</bcp14>
be regenerated with each counter increment without impacting sortability.
The downside is that Method 1 is prone to overflows if a counter of adequate
length is not selected or the random data generated leaves little room for
the required number of increments.
Implementations utilizing fixed-length counter method <bcp14>MAY</bcp14> also choose to
randomly initialize a portion counter rather than the entire counter. For
example, a 24 bit counter could have the 23 bits in least-significant, right-most,
position randomly initialized. The remaining most significant, left-most
counter bits are initialized as zero for the sole purpose of guarding against
counter rollovers.</t>
          </dd>
          <dt>Fixed-Length Dedicated Counter Length:</dt>
          <dd>
            <t>Select a counter bit-length that can properly handle
the level of timestamp precision in use.
For example, millisecond precision generally requires a larger counter than a
timestamp with nanosecond precision.
General guidance is that the counter <bcp14>SHOULD</bcp14> be at least 12 bits but no longer
than 42 bits.
Care <bcp14>SHOULD</bcp14> also be given to ensure that the counter length selected leaves
room for sufficient entropy in the random portion of the UUID after the counter.
This entropy helps improve the unguessability characteristics of UUIDs created
within the batch.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover rollover handling with either type of counter
method:</t>
        <dl newline="true">
          <dt>Counter Rollover Guards:</dt>
          <dd>
            <t>The technique from Fixed-Length Dedicated Counter Seeding that describes
allocating a segment of the fixed-length counter as a rollover guard is also
helpful to mitigate counter rollover issues.
This same technique can be used with monotonic random counter methods
by ensuring the total length of a possible increment in the least significant,
right most position is less than the total length of the random being incremented.
As such the most significant, left-most, bits can be incremented as rollover
guarding.</t>
          </dd>
          <dt>Counter Rollover Handling:</dt>
          <dd>
            <t>Counter rollovers <bcp14>SHOULD</bcp14> be handled by the application to avoid sorting issues.
The general guidance is that applications that care about absolute monotonicity
and sortability <bcp14>SHOULD</bcp14> freeze the counter and wait for the timestamp to advance
which ensures monotonicity is not broken.
Alternatively, implementations <bcp14>MAY</bcp14> increment the timestamp ahead of the actual
time and reinitialize the counter.</t>
          </dd>
        </dl>
        <t>Implementations <bcp14>MAY</bcp14> use the following logic to ensure UUIDs featuring embedded
counters are monotonic in nature:</t>
        <ol spacing="normal" type="1"><li>Compare the current timestamp against the previously stored timestamp.</li>
          <li>If the current timestamp is equal to the previous timestamp, increment the
  counter according to the desired method.</li>
          <li>If the current timestamp is greater than the previous timestamp, re-initialize
  the desired counter method to the new timestamp and generate new random bytes
  (if the bytes were frozen or being used as the seed for a monotonic counter).</li>
        </ol>
        <dl newline="true">
          <dt>Monotonic Error Checking:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> check if the currently generated UUID is greater
than the previously generated UUID. If this is not the case then any number
of things could have occurred, such as clock rollbacks,
leap second handling, and counter rollovers. Applications <bcp14>SHOULD</bcp14> embed sufficient
logic to catch these scenarios and correct the problem to ensure that the next
UUID generated is greater than the previous, or at least report an appropriate error.
To handle this scenario, the
general guidance is that application <bcp14>MAY</bcp14> reuse the previous timestamp and
increment the previous counter method.</t>
          </dd>
        </dl>
      </section>
      <section anchor="generator_states">
        <name>UUID Generator States</name>
        <t>The (optional) UUID generator state only needs to be read from stable storage once at boot
time, if it is read into a system-wide shared volatile store (and
updated whenever the stable store is updated).</t>
        <t>This stable storage <bcp14>MAY</bcp14> be used to record various portions of the UUID generation
which prove useful for batch UUID generation purposes and monotonic error checking with UUIDv6 and UUIDv7.
These stored values include but are not limited to last known timestamp, clock sequence, counters, and random data.</t>
        <t>If an implementation does not have any stable store available, then
it <bcp14>SHOULD</bcp14> proceed with UUID generation as if this was the first UUID created within a batch.
This is the least desirable implementation because it will increase the frequency
of creation of values such as clock sequence, counters, or random data, which increases the
probability of duplicates.</t>
        <t>An implementation <bcp14>MAY</bcp14> also return an application error in the event that collision resistance is of the utmost concern.
The semantics of this error are up to the application and implementation.
See <xref target="collision_resistance"/> for more information on weighting collision tolerance in applications.</t>
        <t>For UUIDv1 and UUIDv6, if the node ID can never change (e.g., the network interface card
from which the node ID is derived is inseparable
from the system), or if any change also re-initializes the clock
sequence to a random value, then instead of keeping it in stable
store, the current node ID may be returned.</t>
        <t>For UUIDv1 and UUIDv6, the state does not always need to be written to stable store every
time a UUID is generated.  The timestamp in the stable store can be
periodically set to a value larger than any yet used in a UUID.  As
long as the generated UUIDs have timestamps less than that value, and
the clock sequence and node ID remain unchanged, only the shared
volatile copy of the state needs to be updated.  Furthermore, if the
timestamp value in stable store is in the future by less than the
typical time it takes the system to reboot, a crash will not cause a
re-initialization of the clock sequence.</t>
        <t>If it is too expensive to access shared state each time a UUID is
generated, then the system-wide generator can be implemented to
allocate a block of time stamps each time it is called; a per-
process generator can allocate from that block until it is exhausted.</t>
      </section>
      <section anchor="distributed_shared_knowledge">
        <name>Distributed UUID Generation</name>
        <t>Some implementations <bcp14>MAY</bcp14> desire to utilize multi-node, clustered, applications
which involve two or more
nodes independently generating UUIDs that will be stored in a common location.
While UUIDs already feature sufficient entropy to ensure that the chances
of collision are low, as the total number of UUID generating nodes increase; so does the likelihood
of a collision.</t>
        <t>This section will detail the two additional collision resistance approaches that have been observed by by multi-node
UUID implementations in distributed environments.</t>
        <t>It should be noted that although this section details two methods for the sake of completeness;
implementations <bcp14>SHOULD</bcp14> utilize the pseudo-random Node ID option if additional collision resistance for distributed UUID generation is a requirement.
Likewise, utilization of either method is not required for implementing UUID generation in distributed environments.</t>
        <dl newline="true">
          <dt>Node IDs:</dt>
          <dd>
            <t>With this method, a pseudo-random Node ID value is placed within the UUID
layout.
This identifier helps ensure the bit-space for a given node is unique, resulting
in UUIDs that do not conflict with any other UUID created by another node
with a different node id.
Implementations that choose to leverage an embedded node id <bcp14>SHOULD</bcp14> utilize
UUIDv8.
The node id <bcp14>SHOULD NOT</bcp14> be an IEEE 802 MAC address as per <xref target="Security"/>.
The location and bit length are left to implementations and are outside the
scope of this specification.
Furthermore, the creation and negotiation of unique node ids among nodes
is also out of scope for this specification.</t>
          </dd>
          <dt>Centralized Registry:</dt>
          <dd>
            <t>With this method all nodes tasked with creating UUIDs consult a central registry
and confirm the generated value is unique. As applications scale, the communication
with the central registry could become a bottleneck and impact UUID generation
in a negative way. Shared knowledge schemes with central/global
registries are outside the scope of this specification and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
          </dd>
        </dl>
        <t>Distributed applications generating UUIDs at a variety of hosts <bcp14>MUST</bcp14>
be willing to rely on the random number source at all hosts.</t>
      </section>
      <section anchor="name_based_uuid_generation">
        <name>Name-Based UUID Generation</name>
        <t>The concept of name and name space should be broadly construed and not
limited to textual names.  For example, some name spaces are the
domain name system, URLs, Object Identifiers (OIDs), X.500 Distinguished
Names (DNs), and reserved words in a programming language.  The
mechanisms or conventions used for allocating names and ensuring
their uniqueness within their name spaces are beyond the scope of
this specification.</t>
        <t>The requirements for name-based UUIDs are as follows:</t>
        <ul spacing="normal">
          <li>UUIDs generated at different times from the same name in the
same namespace <bcp14>MUST</bcp14> be equal.</li>
          <li>UUIDs generated from two different names in the same namespace
should be different (with very high probability).</li>
          <li>UUIDs generated from the same name in two different namespaces
should be different (with very high probability).</li>
          <li>If two UUIDs that were generated from names are equal, then they
were generated from the same name in the same namespace (with very
high probability).</li>
        </ul>
        <dl newline="true">
          <dt>A note on namespaces:</dt>
          <dd>
            <t>While <xref target="namespaces"/> details a few interesting namespaces; implementations <bcp14>SHOULD</bcp14> provide the ability to input a custom namespace.
For example, any other UUID <bcp14>MAY</bcp14> be generated and used as the desired namespace input for a given application context to
ensure all names created are unique within the newly created namespace.</t>
          </dd>
          <dt>Name-based UUIDs using version 8:</dt>
          <dd>
            <t>As per <xref target="uuidv5"/> name-based UUIDs that desire to use modern hashing algorithms <bcp14>MUST</bcp14> be created within the UUIDv8 space.
 These <bcp14>MAY</bcp14> leverage newer hashing protocols such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>, SHA-3 or SHAKE defined by <xref target="FIPS202"/>, or even protocols that have not been defined yet.
 To ensure UUIDv8 name-based UUID values of different hashing protocols can exist in the same bit space; this document defines various "hashspaces" in <xref target="hashspaces"/>.
 Creation of name-based version 8 UUIDs follows the same logic defined in <xref target="uuidv5"/>, but the hashspace should be used to as the starting point with the desired
 namespace and name concatenated to the end of the hashspace.
 Then an implementation may apply the desired hashing algorithm to the entire value after all have been converted to a canonical sequence of octets in network byte order.
 Ensure the version and variant and variant bits are modified as per <xref target="v8"/> bit layout, and finally trim any excess bits beyond 128.
 An important note for secure hashing algorithms that produce variable rate outputs, such as those found in SHAKE, the output hash <bcp14>MUST</bcp14> be 128 bits or larger.
 See <xref target="uuidv8_example_name"/> for a SHA-256 UUIDv8 example test vector.</t>
          </dd>
          <dt>Advertising the Hash Algorithm:</dt>
          <dd>
            <t>Name-based UUIDs utilizing UUIDv8 do not allocate any available bits to identifying the hashing algorithm.
As such where common knowledge about the hashing algorithm for a given UUIDv8 name-space UUID is required, sharing the Hash Space ID proves useful for identifying a the algorithm.
That is, to detail SHA-256 was used to create a given UUIDv8 name-based UUID an implementation may also share the "3fb32780-953c-4464-9cfd-e85dbbe9843d" hash space which uniquely identifies the SHA-256 hashing algorithm for the purpose of UUIDv8. Mind you that this need not be the only method of sharing the hashing algorithm; this is one example of how two systems could share knowledge.
The protocol of choice, communication channels, and actual method of sharing this data between systems are outside the scope of this specification.</t>
          </dd>
        </dl>
      </section>
      <section anchor="collision_resistance">
        <name>Collision Resistance</name>
        <t>Implementations <bcp14>SHOULD</bcp14> weigh the consequences of UUID collisions within their
application and when deciding between UUID versions that use entropy (randomness)
versus the other components such as those in <xref target="timestamp_considerations"/> and <xref target="monotonicity_counters"/>.
This is especially true for distributed node collision resistance as defined
by <xref target="distributed_shared_knowledge"/>.</t>
        <t>There are two example scenarios below which help illustrate the varying seriousness
of a collision within an application.</t>
        <dl newline="true">
          <dt>Low Impact:</dt>
          <dd>
            <t>A UUID collision generated a duplicate log entry which results in incorrect
statistics derived from the data. Implementations that are not negatively
affected by collisions may continue with the entropy and uniqueness provided
by the traditional UUID format.</t>
          </dd>
          <dt>High Impact:</dt>
          <dd>
            <t>A duplicate key causes an airplane to receive the wrong course which puts
people's lives at risk. In this scenario there is no margin for error. Collisions
<bcp14>MUST</bcp14> be avoided and failure is unacceptable. Applications dealing with this
type of scenario <bcp14>MUST</bcp14> employ as much collision resistance as possible within
the given application context.</t>
          </dd>
        </dl>
      </section>
      <section anchor="global_local_uniqueness">
        <name>Global and Local Uniqueness</name>
        <t>UUIDs created by this specification <bcp14>MAY</bcp14> be used to provide local uniqueness
guarantees.
For example, ensuring UUIDs created within a local application context are
unique within a database <bcp14>MAY</bcp14> be sufficient for some implementations where
global uniqueness outside of the application context, in other applications,
or around the world is not required.</t>
        <t>Although true global uniqueness is impossible to guarantee without a shared
knowledge scheme, a shared knowledge scheme is not required by UUID to provide
uniqueness for practical implementation purposes.
Implementations <bcp14>MAY</bcp14> implement a shared knowledge scheme introduced in <xref target="distributed_shared_knowledge"/> as they see fit to extend the uniqueness guaranteed by this specification.</t>
      </section>
      <section anchor="unguessability">
        <name>Unguessability</name>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize a cryptographically secure pseudo-random number
generator (CSPRNG) to provide values that are both difficult to predict ("unguessable")
and have a low likelihood of collision ("unique").
Care <bcp14>SHOULD</bcp14> be taken to ensure the CSPRNG state is properly reseeded upon
state changes, such as process forks, to ensure proper CSPRNG operation.
CSPRNG ensures the best of <xref target="collision_resistance"/> and <xref target="Security"/> are present in modern UUIDs.</t>
        <t>Further advice on generating cryptographic-quality random numbers can be found in <xref target="RFC4086"/> and in <xref target="RANDOM"/>.</t>
      </section>
      <section anchor="unidentifiable">
        <name>UUIDs That Do Not Identify the Host</name>
        <t>This section describes how to generate a UUIDv1 or UUIDv6 value if an IEEE
802 address is not available, or its use is not desired.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> obtain a 47-bit cryptographic-quality random
number as per <xref target="unguessability"/> and use it as the low 47 bits of the node ID.</t>
        <t>Implementations <bcp14>MUST</bcp14> set the least significant bit of the first octet of the node ID set to one to create a 48-bit node id.
This bit is the unicast/multicast bit, which will never be set in IEEE 802
addresses obtained from network cards.  Hence, there can never be a
conflict between UUIDs generated by machines with and without network
cards.</t>
        <t>For compatibility with earlier specifications, note that this
document uses the unicast/multicast bit, instead of the arguably more
correct local/global bit because MAC addresses with the local/global bit set or not are both possible in a network.
This is not the case with the unicast/multicast bit.
One node cannot have a MAC address that multicasts to multiple nodes.</t>
        <t>In addition, items such as the computer's name and the name of the
operating system, while not strictly speaking random, will help
differentiate the results from those obtained by other systems.</t>
        <t>The exact algorithm to generate a node ID using these data is system
specific, because both the data available and the functions to obtain
them are often very system specific.  A generic approach, however, is
to accumulate as many sources as possible into a buffer, use a
message digest such as MD5 <xref target="RFC1321"/> or SHA-1 <xref target="FIPS180-4"/>, take an arbitrary 6
bytes from the hash value, and set the multicast bit as described
above.</t>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>UUIDv6 and UUIDv7 are designed so that implementations that require sorting
(e.g., database indexes) <bcp14>SHOULD</bcp14> sort as opaque raw bytes, without need for
parsing or introspection.</t>
        <t>Time ordered monotonic UUIDs benefit from greater database index locality
because the new values are near each other in the index.
As a result objects are more easily clustered together for better performance.
The real-world differences in this approach of index locality vs random data
inserts can be quite large.</t>
        <t>UUIDs formats created by this specification <bcp14>SHOULD</bcp14> be lexicographically sortable
while in the textual representation.</t>
        <t>UUIDs created by this specification are crafted with big-endian byte order
(network byte order) in mind. If little-endian style is required a custom
UUID format <bcp14>SHOULD</bcp14> be created using UUIDv8.</t>
      </section>
      <section anchor="opacity">
        <name>Opacity</name>
        <t>UUIDs <bcp14>SHOULD</bcp14> be treated as opaque values and implementations <bcp14>SHOULD NOT</bcp14> examine
the bits in a UUID. However,
inspectors <bcp14>MAY</bcp14> refer to <xref target="variant_field"/> and <xref target="version_field"/> when required to determine UUID version and variant.</t>
        <t>As general guidance, we recommend not parsing UUID values unnecessarily,
and instead treating them as opaquely as possible.  Although application-specific
concerns could of course require some degree of introspection
(e.g., to examine the variant, version or perhaps the timestamp of a UUID),
the advice here is to avoid this or other parsing unless absolutely necessary.
Applications typically tend to be simpler, more interoperable, and perform better,
when this advice is followed.</t>
      </section>
      <section anchor="database_considerations">
        <name>DBMS and Database Considerations</name>
        <t>For many applications, such as databases, storing UUIDs as text is unnecessarily
verbose, requiring 288 bits to represent 128 bit UUID values.
Thus, where feasible, UUIDs <bcp14>SHOULD</bcp14> be stored within database applications
as the underlying 128 bit binary value.</t>
        <t>For other systems, UUIDs <bcp14>MAY</bcp14> be stored in binary form or as text, as appropriate.
The trade-offs to both approaches are:</t>
        <ul spacing="normal">
          <li>Storing as binary requires less space and may result in faster data access.</li>
          <li>Storing as text requires more space but may require less translation if the
resulting text form is to be used after retrieval and thus maybe simpler
to implement.</li>
        </ul>
        <t>DBMS vendors are encouraged to provide functionality to generate and store
UUID formats defined by this specification for use as identifiers or left
parts of identifiers such as, but not limited to, primary keys, surrogate
keys for temporal databases, foreign keys included in polymorphic relationships,
and keys for key-value pairs in JSON columns and key-value databases.
Applications using a monolithic database may find using database-generated
UUIDs (as opposed to client-generate UUIDs) provides the best UUID monotonicity.
In addition to UUIDs, additional identifiers <bcp14>MAY</bcp14> be used to ensure integrity
and feedback.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.
Further, at this time the authors and working group have concluded that IANA is not required to track UUIDs used for identifying items such as versions, variants, namespaces, or hashspaces.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> assume that UUIDs are hard to guess.
For example, they <bcp14>MUST NOT</bcp14> be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictability in a random number source will
result in a vulnerability.</t>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that it is easy to determine if a UUID has been
slightly transposed in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Michael Mealling,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="C309" target="https://pubs.opengroup.org/onlinepubs/9696999099/toc.pdf">
          <front>
            <title>DCE: Remote Procedure Call</title>
            <author>
              <organization/>
            </author>
            <date year="1994" month="August"/>
          </front>
          <seriesInfo name="ISBN" value="1-85912-041-5"/>
          <refcontent>Open Group CAE Specification C309</refcontent>
        </reference>
        <reference anchor="X667">
          <front>
            <title>Information Technology, "Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"</title>
            <author>
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-8:2004"/>
          <seriesInfo name="ITU-T Rec." value="X.667"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier.  With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance.  With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA).  This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 180-4"/>
        </reference>
        <reference anchor="FIPS202" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 202"/>
        </reference>
        <reference anchor="C311" target="https://pubs.opengroup.org/onlinepubs/9696989899/toc.pdf">
          <front>
            <title>DCE 1.1: Authentication and Security Services</title>
            <author>
              <organization/>
            </author>
            <date year="1997"/>
          </front>
          <refcontent>Open Group CAE Specification C311</refcontent>
        </reference>
        <reference anchor="RANDOM" target="https://peteroupc.github.io/random.html">
          <front>
            <title>Random Number Generator Recommendations for Applications</title>
            <author initials="P." surname="Occil" fullname="Peter Occil">
              <organization/>
            </author>
            <date year="2023"/>
          </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">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest">
              <organization/>
            </author>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.  This memo provides information for the Internet community.  It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach">
              <organization/>
            </author>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <author fullname="R. Salz" initials="R." surname="Salz">
              <organization/>
            </author>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier).  A UUID is 128 bits long, and can guarantee uniqueness across space and time.  UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group).  Information from earlier versions of the DCE specification have been incorporated into this document.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm.  It also updates the security considerations for HMAC-MD5.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="LexicalUUID" target="https://github.com/twitter-archive/cassie">
          <front>
            <title>A Scala client for Cassandra</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2012" month="November"/>
          </front>
          <seriesInfo name="commit" value="f6da4e0"/>
        </reference>
        <reference anchor="Snowflake" target="https://github.com/twitter-archive/snowflake/releases/tag/snowflake-2010">
          <front>
            <title>Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees.</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2014" month="May"/>
          </front>
          <seriesInfo name="Commit" value="b3f6a3c"/>
        </reference>
        <reference anchor="Flake" target="https://github.com/boundary/flake">
          <front>
            <title>Flake: A decentralized, k-ordered id generation service in Erlang</title>
            <author>
              <organization>Boundary</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="Commit" value="15c933a"/>
        </reference>
        <reference anchor="ShardingID" target="https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c">
          <front>
            <title>Sharding &amp; IDs at Instagram</title>
            <author>
              <organization>Instagram Engineering</organization>
            </author>
            <date year="2012" month="December"/>
          </front>
        </reference>
        <reference anchor="KSUID" target="https://github.com/segmentio/ksuid">
          <front>
            <title>K-Sortable Globally Unique IDs</title>
            <author>
              <organization>Segment</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Commit" value="bf376a7"/>
        </reference>
        <reference anchor="Elasticflake" target="https://github.com/ppearcy/elasticflake">
          <front>
            <title>Sequential UUID / Flake ID generator pulled out of elasticsearch common</title>
            <author initials="P." surname="Pearcy" fullname="Paul Pearcy">
              <organization/>
            </author>
            <date year="2015" month="January"/>
          </front>
          <seriesInfo name="Commit" value="dd71c21"/>
        </reference>
        <reference anchor="FlakeID" target="https://github.com/T-PWK/flake-idgen">
          <front>
            <title>Flake ID Generator</title>
            <author initials="T." surname="Pawlak" fullname="Tom Pawlak">
              <organization/>
            </author>
            <date year="2020" month="April"/>
          </front>
          <seriesInfo name="Commit" value="fcd6a2f"/>
        </reference>
        <reference anchor="Sonyflake" target="https://github.com/sony/sonyflake">
          <front>
            <title>A distributed unique ID generator inspired by Twitter's Snowflake</title>
            <author>
              <organization>Sony</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="Commit" value="848d664"/>
        </reference>
        <reference anchor="orderedUuid" target="https://itnext.io/laravel-the-mysterious-ordered-uuid-29e7500b4f8">
          <front>
            <title>Laravel: The mysterious "Ordered UUID"</title>
            <author initials="I. B." surname="Cabrera" fullname="Italo Baeza Cabrera">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="COMBGUID" target="https://github.com/richardtallent/RT.Comb">
          <front>
            <title>Creating sequential GUIDs in C# for MSSQL or PostgreSql</title>
            <author initials="R." surname="Tallent" fullname="Richard Tallent">
              <organization/>
            </author>
            <date year="2020" month="December"/>
          </front>
          <seriesInfo name="Commit" value="2759820"/>
        </reference>
        <reference anchor="ULID" target="https://github.com/ulid/spec">
          <front>
            <title>Universally Unique Lexicographically Sortable Identifier</title>
            <author initials="A." surname="Feerasta" fullname="Alizain Feerasta">
              <organization/>
            </author>
            <date year="2019" month="May"/>
          </front>
          <seriesInfo name="Commit" value="d0c7170"/>
        </reference>
        <reference anchor="SID" target="https://github.com/chilts/sid">
          <front>
            <title>sid : generate sortable identifiers</title>
            <author initials="A." surname="Chilton" fullname="Andrew Chilton">
              <organization/>
            </author>
            <date year="2019" month="June"/>
          </front>
          <seriesInfo name="Commit" value="660e947"/>
        </reference>
        <reference anchor="pushID" target="https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html">
          <front>
            <title>The 2^120 Ways to Ensure Unique Identifiers</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="XID" target="https://github.com/rs/xid">
          <front>
            <title>Globally Unique ID Generator</title>
            <author initials="O." surname="Poitrey" fullname="Olivier Poitrey">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="efa678f"/>
        </reference>
        <reference anchor="ObjectID" target="https://docs.mongodb.com/manual/reference/method/ObjectId/">
          <front>
            <title>ObjectId - MongoDB Manual</title>
            <author>
              <organization>MongoDB</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CUID" target="https://github.com/ericelliott/cuid">
          <front>
            <title>Collision-resistant ids optimized for horizontal scaling and performance.</title>
            <author initials="E." surname="Elliott" fullname="Eric Elliott">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="215b27b"/>
        </reference>
        <reference anchor="IEEE754" target="https://standards.ieee.org/ieee/754/6210/">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic.</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2019" month="July"/>
          </front>
          <seriesInfo name="Series" value="754-2019"/>
        </reference>
        <reference anchor="URNNamespaces" target="https://www.iana.org/assignments/urn-namespaces/urn-namespaces.xhtml">
          <front>
            <title>Uniform Resource Names (URN) Namespaces</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022" month="November" day="18"/>
          </front>
        </reference>
        <reference anchor="Python" target="https://docs.python.org/3/library/uuid.html">
          <front>
            <title>UUID objects according to RFC</title>
            <author>
              <organization>Python</organization>
            </author>
            <date year="2023" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="Microsoft" target="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/a66edeb1-52a0-4d64-a93b-2f5c833d7d92">
          <front>
            <title>curly braced GUID string</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2023" month="April" day="03"/>
          </front>
        </reference>
        <reference anchor="MS_COM_GUID" target="https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221">
          <front>
            <title>Why does COM express GUIDs in a mix of big-endian and little-endian? Why can’t it just pick a side and stick with it?</title>
            <author initials="R." surname="Chen" fullname="Raymond Chen">
              <organization/>
            </author>
            <date year="2022" month="September" day="28"/>
          </front>
        </reference>
        <reference anchor="IBM_NCS" target="https://www.ibm.com/docs/en/aix/7.1?topic=u-uuid-gen-command-ncs">
          <front>
            <title>uuid_gen Command (NCS)</title>
            <author>
              <organization>IBM</organization>
            </author>
            <date year="2023" month="March" day="23"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1856?>

<section anchor="namespaces">
      <name>Some Name Space IDs</name>
      <t>This appendix lists the name space IDs for some potentially interesting name spaces such those for
fully-qualified domain names (DNS), uniform resource locators (URLs), ISO OIDs, and X.500 distinguished names (DNs) in distinguished encoding rule (DER) or text format.</t>
      <sourcecode type="code"><![CDATA[
NameSpace_DNS  = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
NameSpace_URL  = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
NameSpace_OID  = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
NameSpace_X500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
]]></sourcecode>
    </section>
    <section anchor="hashspaces">
      <name>Some Hash Space IDs</name>
      <t>This appendix lists the hash space IDs for use with UUIDv8 name-based UUIDs.</t>
      <sourcecode type="code"><![CDATA[
SHA2_224     = "59031ca3-fbdb-47fb-9f6c-0f30e2e83145"
SHA2_256     = "3fb32780-953c-4464-9cfd-e85dbbe9843d"
SHA2_384     = "e6800581-f333-484b-8778-601ff2b58da8"
SHA2_512     = "0fde22f2-e7ba-4fd1-9753-9c2ea88fa3f9"
SHA2_512_224 = "003c2038-c4fe-4b95-a672-0c26c1b79542"
SHA2_512_256 = "9475ad00-3769-4c07-9642-5e7383732306"
SHA3_224     = "9768761f-ac5a-419e-a180-7ca239e8025a"
SHA3_256     = "2034d66b-4047-4553-8f80-70e593176877"
SHA3_384     = "872fb339-2636-4bdd-bda6-b6dc2a82b1b3"
SHA3_512     = "a4920a5d-a8a6-426c-8d14-a6cafbe64c7b"
SHAKE_128    = "7ea218f6-629a-425f-9f88-7439d63296bb"
SHAKE_256    = "2e7fc6a4-2919-4edc-b0ba-7d7062ce4f0a"
]]></sourcecode>
    </section>
    <section anchor="test_vectors">
      <name>Test Vectors</name>
      <t>Both UUIDv1 and UUIDv6 test vectors utilize the same 60 bit timestamp: 0x1EC9414C232AB00
(138648505420000000) Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00</t>
      <t>Both UUIDv1 and UUIDv6 utilize the same values in clock_seq,
and node. All of which have been generated with random data.</t>
      <t>The pseudocode used for converting from a 64 bit Unix timestamp to a 100ns Gregorian timestamp value
has been left in the document for reference purposes.</t>
      <figure>
        <name>Test Vector Timestamp Pseudo-code</name>
        <sourcecode type="code"><![CDATA[
# Gregorian to Unix Offset:
# The number of 100-ns intervals between the
# UUID epoch 1582-10-15 00:00:00
# and the Unix epoch 1970-01-01 00:00:00
# Greg_Unix_offset = 0x01b21dd213814000 or 122192928000000000

# Unix 64 bit Nanosecond Timestamp:
# Unix NS: Tuesday, February 22, 2022 2:22:22 PM GMT-05:00
# Unix_64_bit_ns = 0x16D6320C3D4DCC00 or 1645557742000000000

# Unix Nanosecond precision to Gregorian 100-nanosecond intervals
# Greg_100_ns = (Unix_64_bit_ns/100)+Greg_Unix_offset

# Work:
# Greg_100_ns = (1645557742000000000/100)+122192928000000000
# Unix_64_bit_ns = (138648505420000000-122192928000000000)*100

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   b10
clock_seq  14   b11, 0x3C8
node       48   0x9E6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   b10
md5_low   62   b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   b10
random_c  62   b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   b10
sha1_low   62   b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   b10
clock_seq   14   b11, 0x3C8
node        48   0x9E6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known Unix epoch timestamp with
millisecond precision to fill the first 48 bits.</t>
        <t>rand_a and rand_b are filled with random data.</t>
        <t>The timestamp is Tuesday, February 22, 2022 2:22:22.00 PM GMT-05:00 represented
as 0x17F22E279B0 or 1645557742000</t>
        <figure>
          <name>UUIDv7 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
unix_ts_ms  48   0x17F22E279B0
ver          4   0x7
rand_a      12   0xCC3
var          2   b10
rand_b      62   b01, 0x8C4DC0C0C07398F
-------------------------------------------
total       128
-------------------------------------------
final: 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example">
        <name>Example of a UUIDv8 Value (time-based)</name>
        <t>This example UUIDv8 test vector utilizes a well-known 64 bit Unix epoch timestamp with
nanosecond precision, truncated to the least-significant, right-most, bits
to fill the first 48 bits through version.</t>
        <t>The next two segments of custom_b and custom_c are are filled with random
data.</t>
        <t>Timestamp is Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00 represented
as 0x16D6320C3D4DCC00 or 1645557742000000000</t>
        <t>It should be noted that this example is just to illustrate one scenario for
UUIDv8. Test vectors will likely be implementation specific and vary greatly
from this simple example.</t>
        <figure>
          <name>UUIDv8 Example Time-based Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x320C3D4DCC00
ver        4   0x8
custom_b  12   0x75B
var        2   b10
custom_c  62   b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 320C3D4D-CC00-875B-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> to detail the usage of hash spaces alongside namespace and names.
The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Hash Space (SHA2_256): 3fb32780-953c-4464-9cfd-e85dbbe9843d
Name Space (DNS):      6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x401835fda627
ver        4   0x8
custom_b  12   0x627
var        2   b10
custom_c  62   b0, 0x73fed73f2bc5b2c
-------------------------------------------
total     128
-------------------------------------------
final: 401835fd-a627-870a-873f-ed73f2bc5b2c
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 401835fd-a627-870a-873f-ed73f2bc5b2c
D:                                     -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</li>
          <li>Line B details the version and variant hexadecimal positions which must be overwritten.</li>
          <li>Line C details the final value after the ver/var have been overwritten.</li>
          <li>Line D details the discarded, leftover values from the original SHA-256 computation.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y92Xbj6HYmeI+nQEmrOySbpDiTUlb6WCEpMsOZMVRIefJ4
VVVrgSQo4QRJ0ACoIcNRq16j7/qqH6QfpZ6k97f3/geAoEI5nnK5dOxIiQT+
cc9js9kM7k7CXjBLp6toGZ+EsyyaF80kLubNzSaZZfFdM5tP+51ud5LkzfYo
mEbFSZgXsyCd5OkiLuL8JHyB718E03SVx6t8g0+KbBO/CPLNZJnkeZKuisc1
jf764upVsE5OgpCGyJIpDfXiMc5f0N9FOi39MYvXxS190sPf+eMyi+e5eyBP
s8L7JNwPo+k0mcWrIlosHsNpmmXxtEhWN/bz8KR5GBRJsaBl/LBK7uIs50fp
93/ZxOHrc3ommSf0cXjwww+vzw+DaDKh7dPT9FcQZXF0Ep5+uArub05CPZrg
4738Hsyigsbttru9IIg2xW2anQTNUI70u8ef4iz80ArPo7skp8XHyyhZnIQf
H2f44B+nST5NW9N0SV+lGY1+hg/Cy8e8iJe5HeZlFs3Cb1rh+ziapLNHN86E
vvjHtXzaSlIzyg+r6SLdzOj9ZEXn9L4Vfh9H01v6WsbzPtCB1n9djP5xc9+K
Zxs3CJ9UUjyG6Tz8Mcpv6UyLdBUEqzRbRgV9i8s867WP8V+6uSi7ielab4ti
nZ8cHa03k7yVruPVTZZu1i0a9ChdLZJVjC+Ojof0v+Pj9vHxEV15az2byyBy
TXvnZxcn4Yd4mRZx+D5Lp7SwLA7P6N72+LmMQOYdjR1+g8HDs9OL8HIdT+ka
CUoJ6Hhd/GQeZ0mcJ6t5KssMw9eXL9+ehJ3meHDc6Tbb/U5zwN/ITZ5ubjZ5
EXaOj/v06V+Gw9HJznHeHb2+OCNAPB73+s3xSbfd7r8wX1790LyiHUxbJ+Ff
WjSKv71/MA/RaHyWtOCreHq7ShfpzWMj3LNbzkN6IixuY32DzjOT5+lS3l2+
phluEkIo+eyU4S8pEqDmN/HKPButZvp+5j9OQ9Thw6yCD/khBsAikkyH2eRx
GOXh6eXbVid8N/krYZz3HiHhcp2u6M98zztZHA/9+eHVWb89Hp6YX+Sjcaff
OTG/0EevXr+/7IzbzX49cK3uFgxfK9pN6ya9O8IvDFh48ejt68urFn5r8RhV
8LqMpwCnbwmow8uCNhdlckAGgfF7U/DgLZ9VtKDLyun1DQEknZt5K+ejcXe3
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

-->

</rfc>
