<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.12 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc text-list-symbols="-o*+"?>

<rfc ipr="trust200902" docName="draft-irtf-cfrg-pairing-friendly-curves-00" category="exp">

  <front>
    <title>Pairing-Friendly Curves</title>

    <author initials="Y." surname="Sakemi" fullname="Yumi Sakemi">
      <organization>Lepidum</organization>
      <address>
        <email>yumi.sakemi@lepidum.co.jp</email>
      </address>
    </author>
    <author initials="T." surname="Kobayashi" fullname="Tetsutaro Kobayashi">
      <organization>NTT</organization>
      <address>
        <email>tetsutaro.kobayashi.dr@hco.ntt.co.jp</email>
      </address>
    </author>
    <author initials="T." surname="Saito" fullname="Tsunekazu Saito">
      <organization>NTT</organization>
      <address>
        <email>tsunekazu.saito.hg@hco.ntt.co.jp</email>
      </address>
    </author>

   <date/>

    <area>IRTF</area>
    <workgroup>CFRG</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>Pairing-Friendly Curves</keyword>
    <keyword>Eliptic Curve Cryptgraphy</keyword>

    <abstract>


<t>This memo introduces pairing-friendly curves used for constructing pairing-based cryptography.
It describes recommended parameters for each security level and recent implementations of pairing-friendly curves.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<section anchor="pairing-based-cryptography" title="Pairing-Based Cryptography">

<t>Elliptic curve cryptography is one of the important areas in recent cryptography. The cryptographic algorithms based on elliptic curve cryptography, such as ECDSA (Elliptic Curve Digital Signature Algorithm), are widely used in many applications.</t>

<t>Pairing-based cryptography, a variant of elliptic curve cryptography, has attracted the attention for its flexible and applicable functionality.
Pairing is a special map defined over elliptic curves.
Thanks to the characteristics of pairing, it can be applied to construct several cryptographic algorithms and protocols such as identity-based encryption (IBE), attribute-based encryption (ABE), authenticated key exchange (AKE), short signatures and so on. Several applications of pairing-based cryptography are now in practical use.</t>

<t>As the importance of pairing grows, elliptic curves where pairing is efficiently computable are studied and the special curves called pairing-friendly curves are proposed.</t>

</section>
<section anchor="applications-of-pairing-based-cryptography" title="Applications of Pairing-Based Cryptography">

<t>Several applications using pairing-based cryptography are standardized and implemented. We show example applications available in the real world.</t>

<t>IETF publishes RFCs for pairing-based cryptography such as Identity-Based Cryptography <xref target="RFC5091"/>, Sakai-Kasahara Key Encryption (SAKKE) <xref target="RFC6508"/>, and Identity-Based Authenticated Key Exchange (IBAKE) <xref target="RFC6539"/>. 
SAKKE is applied to Multimedia Internet KEYing (MIKEY) <xref target="RFC6509"/> and used in 3GPP <xref target="SAKKE"/>.</t>

<t>Pairing-based key agreement protocols are standardized in ISO/IEC <xref target="ISOIEC11770-3"/>.
In <xref target="ISOIEC11770-3"/>, a key agreement scheme by Joux <xref target="Joux00"/>, identity-based key agreement schemes by Smart-Chen-Cheng <xref target="CCS07"/> and by Fujioka-Suzuki-Ustaoglu <xref target="FSU10"/> are specified.</t>

<t>MIRACL implements M-Pin, a multi-factor authentication protocol <xref target="M-Pin"/>.
M-Pin protocol includes a kind of zero-knowledge proof, where pairing is used for its construction.</t>

<t>Trusted Computing Group (TCG) specifies ECDAA (Elliptic Curve Direct Anonymous Attestation) in the specification of Trusted Platform Module (TPM) <xref target="TPM"/>. 
ECDAA is a protocol for proving the attestation held by a TPM to a verifier without revealing the attestation held by that TPM. Pairing is used for constructing ECDAA. FIDO Alliance <xref target="FIDO"/> and W3C <xref target="W3C"/> also published ECDAA algorithm similar to TCG.</t>

<!-- Intel SGX EPID -->

<t>Intel introduces Intel Enhanced Privacy ID (EPID) which enables remote attestation of a hardware device while preserving the privacy of the device as a functionality of Intel Software Guard Extensions (SGX) <xref target="EPID"/>. They extend TPM ECDAA to realize such functionality. A pairing-based EPID has been proposed <xref target="BL10"/> and distributed along with Intel SGX applications.</t>

<t>Zcash implements their own zero-knowledge proof algorithm named zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) <xref target="Zcash"/>. zk-SNARKs is used for protecting privacy of transactions of Zcash. They use pairing for constructing zk-SNARKS.</t>

<t>Cloudflare introduces Geo Key Manager <xref target="Cloudflare"/> to restrict distribution of customers’ private keys to the subset of their data centers. To achieve this functionality, attribute-based encryption is used and pairing takes a role as a building block.</t>

<t>Recently, Boneh-Lynn-Shacham (BLS) signature schemes are being standardized 
<xref target="I-D.boneh-bls-signature"/> and utilized in several blockchain projects 
such as Ethereum <xref target="Ethereum"/>, Algorand <xref target="Algorand"/>, Chia Network <xref target="Chia"/> and DFINITY <xref target="DFINITY"/>. 
The aggregation functionality of BLS signatures is effective for their applications of decentralization and scalability.</t>

</section>
<section anchor="goal" title="Goal">

<t>The goal of this memo is to consider the security of pairing-friendly curves used in pairing-based cryptography and introduce secure parameters of pairing-friendly curves. Specifically, we explain the recent attack against pairing-friendly curves and how much the security of the curves is reduced.
We show how to evaluate the security of pairing-friendly curves and give the parameters for 100 bits of security, which is no longer secure, 128, 192 and 256 bits of security.</t>

</section>
<section anchor="requirements-terminology" title="Requirements Terminology">

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

</section>
</section>
<section anchor="preliminaries" title="Preliminaries">

<section anchor="elliptic-curve" title="Elliptic Curve">

<t>Let p &gt; 3 be a prime and q = p^n for a natural number n.
Let F_q be a finite field.
The curve defined by the following equation E is called an elliptic curve.</t>

<figure><artwork><![CDATA[
   E : y^2 = x^3 + A * x + B,
]]></artwork></figure>

<t>where x and y are in F_q, and A and B in F_q satisfy the discriminant inequality 4 * A^3 + 27 * B^2 != 0 mod q.
This is called Weierstrass normal form of an elliptic curve.</t>

<t>Solutions (x, y) for an elliptic curve E, as well as the point at infinity, O_E, 
are called F_q-rational points.
If P and Q are two points on the curve E, we can define R = P + Q as the opposite point of the intersection between the curve E and the line that passes through P and Q.<vspace />
We can define P + O_E = P = O_E + P as well.
Similarly, we can define 2P = P + P and a scalar multiplication S = [a]P for a positive integer a can be defined as an (a-1)-time addition of P.</t>

<t>The additive group, denoted by E(F_q), is constructed by the set of F_q-rational points and the addition law described above.
We can define the cyclic additive group with a prime order r by taking a base point BP in E(F_q) as a generator. This group is used for the elliptic curve cryptography.</t>

<t>We define terminology used in this memo as follows.</t>

<t><list style="hanging">
  <t hangText='O_E:'>
  the point at infinity over an elliptic curve E.</t>
  <t hangText='E(F_q):'>
  a group constructed by F_q-rational points of E.</t>
  <t hangText='#E(F_q):'>
  the number of F_q-rational points of E.</t>
  <t hangText='h:'>
  a cofactor such that h =  #E(F_q) / r.</t>
</list></t>

</section>
<section anchor="pairing" title="Pairing">

<t>Pairing is a kind of the bilinear map defined over two elliptic curves E and E’.
Examples include Weil pairing, Tate pairing, optimal Ate pairing <xref target="Ver09"/> and so on.
Especially, optimal Ate pairing is considered to be efficient to compute and mainly used for practical implementation.</t>

<t>Let E be an elliptic curve defined over a prime field F_p and E’ be an elliptic curve defined over an extension field of F_p.
Let k be a minimum integer such that r is a divisor of p^k - 1, which is called an embedding degree.
Let G_1 be a cyclic subgroup on the elliptic curve E with order r, 
and G_2 be a cyclic subgroup on the elliptic curve E’ with order r.
Let G_T be an order r subgroup of a multiplicative group F_pk^*.</t>

<t>Pairing is defined as a bilinear map e: (G_1, G_2) -&gt; G_T
satisfying the following properties:</t>

<t><list style="numbers">
  <t>Bilinearity: for any S in G_1, T in G_2, and integers a and b, e([a]S, [b]T) = e(S, T)^{a * b}.</t>
  <t>Non-degeneracy: for any T in G_2, e(S, T) = 1 if and only if S = O_E.
 Similarly, for any S in G_1, e(S, T) = 1 if and only if T = O_E.</t>
  <t>Computability: for any S in G_1 and T in G_2, the bilinear map is efficiently computable.</t>
</list></t>

</section>
<section anchor="BNdef" title="Barreto-Naehrig Curve">

<t>A BN curve <xref target="BN05"/> is one of the instantiations of pairing-friendly curves proposed in 2005. A pairing over BN curves constructs optimal Ate pairings.</t>

<t>A BN curve is defined by elliptic curves E and E’ parameterized by a well chosen integer t.
E is defined over F_p, where p is a prime more than or equal to 5, and E(F_p) has a subgroup of prime order r.
The characteristic p and the order r are parameterized by</t>

<figure><artwork><![CDATA[
    p = 36 * t^4 + 36 * t^3 + 24 * t^2 + 6 * t + 1
    r = 36 * t^4 + 36 * t^3 + 18 * t^2 + 6 * t + 1
]]></artwork></figure>

<t>for an integer t.</t>

<t>The elliptic curve E has an equation of the form E: y^2 = x^3 + b, where b is an element of multiplicative group of order p.</t>

<t>BN curves always have order 6 twists. If m is an element which is neither a square nor a cube in an extension field F_p2, the twisted curve E’ of E is defined over an extension field F_p2 by the equation E’: y^2 = x^3 + b’ with b’ = b / m or b’ = b * m. 
BN curves are called D-type if b’ = b / m, and M-type if b’ = b * m.
The embedded degree k is 12.</t>

<t>A pairing e is defined by taking G_1 as a subgroup of E(F_p) of order r, G_2 as a subgroup of E’(F_p2), and G_T as a subgroup of a multiplicative group F_p12^* of order r.</t>

</section>
<section anchor="BLSdef" title="Barreto-Lynn-Scott Curve">

<t>A BLS curve <xref target="BLS02"/> is another instantiations of pairings proposed in 2002. Similar to BN curves, a pairing over BLS curves constructs optimal Ate pairings.</t>

<t>A BLS curve is elliptic curves E and E’ parameterized by a well chosen integer t.
E is defined over a finite field F_p by an equation of the form E: y^2 = x^3 + b,
and its twisted curve, E’: y^2 = x^3 + b’, is defined in the same way as BN curves. 
In contrast to BN curves, E(F_p) does not have a prime order.
Instead, its order is divisible by a large parameterized prime r and denoted by h * r with cofactor h.
The pairing will be defined on the r-torsions points.
In the same way as BN curves, BLS curves can be categorized into D-type and M-type.</t>

<t>BLS curves vary according to different embedding degrees. In this memo, we deal with BLS12 and BLS48 families with embedding degrees 12 and 48 with respect to r, respectively.</t>

<t>In BLS curves, parameterized p and r are given by the following equations:</t>

<figure><artwork><![CDATA[
   BLS12:
       p = (t - 1)^2 * (t^4 - t^2 + 1) / 3 + t
       r = t^4 - t^2 + 1
   BLS48:
       p = (t - 1)^2 * (t^16 - t^8 + 1) / 3 + t
       r = t^16 - t^8 + 1
]]></artwork></figure>

<t>for a well chosen integer t.</t>

<t>A pairing e is defined by taking G_1 as a subgroup of E(F_p) of order r, G_2 as an order r subgroup of E’(F_p2) for BLS12 and of E’(F_p8) for BLS48, and G_T as an order r subgroup of a multiplicative group F_p12^* for BLS12 and of a multiplicative group F_p48^* for BLS48.</t>

</section>
<section anchor="representation-convention-for-an-extension-field" title="Representation Convention for an Extension Field">

<t>Pairing-friendly curves use a tower of some extension fields. 
In order to encode an element of an extension field, we adopt the representation convention shown in <xref target="IEEE-1363a-2004"/>.</t>

<t>Let F_p be a finite field of characteristic p and F_p^d be an extension field of F_p of degree d and an indeterminate i. 
For an element s in F_p^d such that s = s_0 + s_1 * p + … +  s_{d - 1} * i^{d - 1} for s_0, s_1, … , s_{d - 1} in a basefield F_p, 
s is represented as integer by</t>

<figure><artwork><![CDATA[
    int(s) = s_0 + s_1 * p + ... +  s_{d - 1} * p^{d - 1}.
]]></artwork></figure>

<t>Let F_p^d’ be an extension field of F_p^d of degree d’ / d and an indeterminate j.
For an element s’ in F_p^d’ such that s’ = s’_0 + s’_1 * j + … +  s’_{d’ / d - 1} * j^{d’ / d - 1} 
for s’_0, s’_1, … , s’_{d’ / d - 1} in a basefield F_p^d, 
s’ is represented as integer by</t>

<figure><artwork><![CDATA[
    int(s') = int(s'_0) + int(s'_1) * p^{d' / d} + 
                ... + int(s'_{d' / d - 1}) * p^{d' / d * (d' - 1)},
]]></artwork></figure>

<t>where int(s’_0), … , int(s’_{d’ / d - 1}) are integers encoded by above convention.</t>

<t>In general, one can define encoding between integer and an element of any finite field tower by inductively applying the above convention.</t>

<t>The parameters and test vectors of extension fields described in this memo are encoded by this convention and represented in octet stream.</t>

<!-- Pairing-friendly curves uses some extension fields. 
In order to encode an element of an extension field, 
we adopt the convention shown in {{IEEE-1363a-2004}}.

Let F\_p be a finite field of characteristic p and F\_p^d be an extension field of F\_p of degree d.
For an element s in F
such that s = s\_0 + s\_1 \* i + s\_2 \* i^2 + ... + s\_{d-1} \* i^{d-1} 
for an indeterminate i and s\_1, ... , s\_{d-1} in a subfield of the extension field, 
s is represented by

        s = s_0 + s_1 * p + s_2 * p^2 + ... + s_{d-1} * p^{d-1},

where p is a characteristic of the subfield.

The parameters and test vectors of extension fields described in this memo 
are encoded by this convention and represented in octet stream. -->

</section>
</section>
<section anchor="security_pfc" title="Security of Pairing-Friendly Curves">

<section anchor="evaluating-the-security-of-pairing-friendly-curves" title="Evaluating the Security of Pairing-Friendly Curves">

<t>The security of pairing-friendly curves is evaluated by the hardness of the following discrete logarithm problems.</t>

<t><list style="symbols">
  <t>The elliptic curve discrete logarithm problem (ECDLP) in G_1 and G_2</t>
  <t>The finite field discrete logarithm problem (FFDLP) in G_T</t>
</list></t>

<t>There are other hard problems over pairing-friendly curves used for proving the security of pairing-based cryptography. Such problems include computational bilinear Diffie-Hellman (CBDH) problem and bilinear Diffie-Hellman (BDH) Problem, decision bilinear Diffie-Hellman (DBDH) problem, gap DBDH problem, etc <xref target="ECRYPT"/>.
Almost all of these variants are reduced to the hardness of discrete logarithm problems described above and believed to be easier than the discrete logarithm problems.</t>

<t>There would be the case where the attacker solves these reduced problems to break pairing-based cryptography. Since such attacks have not been discovered yet, we discuss the hardness of the discrete logarithm problems in this memo.</t>

<t>The security level of pairing-friendly curves is estimated by the computational cost of the most efficient algorithm to solve the above discrete logarithm problems. 
The well-known algorithms for solving the discrete logarithm problems include Pollard’s rho algorithm <xref target="Pollard78"/>, Index Calculus <xref target="HR83"/> and so on. 
In order to make index calculus algorithms more efficient, number field sieve (NFS) algorithms are utilized.</t>

</section>
<section anchor="impact" title="Impact of the Recent Attack">

<t>In 2016, Kim and Barbulescu proposed a new variant of the NFS algorithms, the extended tower number field sieve (exTNFS), which drastically reduces the complexity of solving FFDLP <xref target="KB16"/>.
Due to exTNFS, the security level of pairing-friendly curves asymptotically dropped down.
For instance, Barbulescu and Duquesne estimated that the security of the BN curves which had been believed to provide 128 bits of security (BN256, for example) dropped down to approximately 100 bits <xref target="BD18"/>.</t>

<t>Some papers showed the minimum bit length of the parameters of pairing-friendly curves for each security level when applying exTNFS as an attacking method for FFDLP.
For 128 bits of security, Menezes, Sarkar and Singh estimated the minimum bit length of p of BN curves after exTNFS as 383 bits, and that of BLS12 curves as 384 bits <xref target="MSS17"/>.
For 256 bits of security, Kiyomura et al. estimated the minimum bit length of p^k of BLS48 curves as 27,410 bits, which implied 572 bits of p <xref target="KIK17"/>.</t>

</section>
</section>
<section anchor="secure_params" title="Security Evaluation of Pairing-Friendly Curves">

<t>We give security evaluation for pairing-friendly curves based on the evaluating method presented in <xref target="security_pfc"/>. We also introduce secure parameters of pairing-friendly curves for each security level.
The parameters introduced here are chosen with the consideration of security, efficiency and global acceptance.</t>

<t>For security, we introduce the parameters with 100 bits, 128 bits, 192 bits and 256 bits of security.
We note that 100 bits of security is no longer secure
and recommend 128 bits, 192 bits and 256 bits of security for secure applications.
We follow TLS 1.3 <xref target="RFC8446"/> which specifies the cipher suites with 128 bits and 256 bits of security as mandatory-to-implement for the choice of the security level.</t>

<t>Implementers of the applications have to choose the parameters with appropriate security level according to the security requirements of the applications.
For efficiency, we refer to the benchmark by mcl <xref target="mcl"/> for 128 bits of security, and by Kiyomura et al. <xref target="KIK17"/> for 256 bits of security, and then choose sufficiently efficient parameters.
For global acceptance, we give the implementations of pairing-friendly curves in <xref target="impl"/>.</t>

<section anchor="for-100-bits-of-security" title="For 100 Bits of Security">

<t>Before exTNFS, BN curves with 256-bit size of underlying finite field (so-called BN256) were considered to achieve 128 bits of security. After exTNFS, however, the security level of BN curves with 256-bit size of underlying finite field fell into 100 bits.</t>

<t>Implementers who will newly develop the applications of pairing-based cryptography SHOULD NOT use pairing-friendly curves with 100 bits of security (i.e. BN256).</t>

<t>There exists applications which already implemented pairing-based cryptography with 100-bit secure pairing-friendly curves.
In such a case, implementers MAY use 100 bits of security only if they need to keep interoperability with the existing applications.</t>

</section>
<section anchor="for-128-bits-of-security" title="For 128 Bits of Security">

<section anchor="bn-curves" title="BN Curves">

<t>A BN curve with 128 bits of security is shown in <xref target="BD18"/>, which we call BN462. 
BN462 is defined by a parameter</t>

<figure><artwork><![CDATA[
    t = 2^114 + 2^101 - 2^14 - 1 
]]></artwork></figure>

<t>for the definition in <xref target="BNdef"/>.</t>

<t>For the finite field F_p, the towers of extension field F_p2, F_p6 and F_p12 are defined by indeterminates u, v, w as follows:</t>

<figure><artwork><![CDATA[
    F_p2 = F_p[u] / (u^2 + 1)
    F_p6 = F_p2[v] / (v^3 - u - 2)
    F_p12 = F_p6[w] / (w^2 - v).
]]></artwork></figure>

<t>Defined by t, the elliptic curve E and its twisted curve E’ are represented by E: y^2 = x^3 + 5 and E’: y^2 = x^3 - u + 2, respectively. The size of p becomes 462-bit length. A pairing e is defined by taking G_1 as a cyclic group of order r generated by a base point BP = (x, y) in F_p, G_2 as a cyclic group of order r generated by a based point BP’ = (x’, y’) in F_p2, and G_T as a subgroup of a multiplicative group F_p12^* of order r. BN462 is D-type.</t>

<t>We give the following parameters for BN462.</t>

<t><list style="symbols">
  <t>G_1 defined over E: y^2 = x^3 + b
  <list style="symbols">
      <t>p : a characteristic</t>
      <t>r : an order</t>
      <t>BP = (x, y) : a base point</t>
      <t>h : a cofactor</t>
      <t>b : a coefficient of E</t>
    </list></t>
  <t>G_2 defined over E’: y^2 = x^3 + b’
  <list style="symbols">
      <t>r’ : an order</t>
      <t>BP’ = (x’, y’) : a base point (encoded with <xref target="IEEE-1363a-2004"/>)
      <list style="symbols">
          <t>x’ = x’0 + x’1 * u (x’0, x’1 in F_p)</t>
          <t>y’ = y’0 + y’1 * u (y’0, y’1 in F_p)</t>
        </list></t>
      <t>h’ : a cofactor</t>
      <t>b’ : a coefficient of E’</t>
    </list></t>
</list></t>

<t><list style="hanging">
  <t hangText='p:'>
  0x2404 80360120 023fffff fffff6ff 0cf6b7d9 bfca0000 000000d8 
12908f41 c8020fff fffffff6 ff66fc6f f687f640 00000000 2401b008 
40138013</t>
  <t hangText='r:'>
  0x2404 80360120 023fffff fffff6ff 0cf6b7d9 bfca0000 000000d8 
12908ee1 c201f7ff fffffff6 ff66fc7b f717f7c0 00000000 2401b007 
e010800d</t>
  <t hangText='x:'>
  0x21a6 d67ef250 191fadba 34a0a301 60b9ac92 64b6f95f 63b3edbe 
c3cf4b2e 689db1bb b4e69a41 6a0b1e79 239c0372 e5cd7011 3c98d91f 
36b6980d</t>
  <t hangText='y:'>
  0x0118 ea0460f7 f7abb82b 33676a74 32a490ee da842ccc fa7d788c 
65965042 6e6af77d f11b8ae4 0eb80f47 5432c666 00622eca a8a5734d 
36fb03de</t>
  <t hangText='h:'>
  1</t>
  <t hangText='b:'>
  5</t>
  <t hangText='r’:'>
  0x2404 80360120 023fffff fffff6ff 0cf6b7d9 bfca0000 000000d8 
12908ee1 c201f7ff fffffff6 ff66fc7b f717f7c0 00000000 2401b007 
e010800d</t>
  <t hangText='x’0:'>
  0x0257 ccc85b58 dda0dfb3 8e3a8cbd c5482e03 37e7c1cd 96ed61c9 
13820408 208f9ad2 699bad92 e0032ae1 f0aa6a8b 48807695 468e3d93 
4ae1e4df</t>
  <t hangText='x’1:'>
  0x1d2e 4343e859 9102af8e dca84956 6ba3c98e 2a354730 cbed9176 
884058b1 8134dd86 bae555b7 83718f50 af8b59bf 7e850e9b 73108ba6 
aa8cd283</t>
  <t hangText='y’0:'>
  0x0a06 50439da2 2c197951 7427a208 09eca035 634706e2 3c3fa7a6 
bb42fe81 0f1399a1 f41c9dda e32e0369 5a140e7b 11d7c337 6e5b68df 
0db7154e</t>
  <t hangText='y’1:'>
  0x073e f0cbd438 cbe0172c 8ae37306 324d44d5 e6b0c69a c57b393f 
1ab370fd 725cc647 692444a0 4ef87387 aa68d537 43493b9e ba14cc55 
2ca2a93a</t>
  <t hangText='x’:'>
  0x041b04cb e3413297 c49d8129 7eed0759 47d86135 c4abf0be 9d5b64be 
02d6ae78 34047ea4 079cd30f e28a68ba 0cb8f7b7 2836437d c75b2567 
ff2b98db b93f68fa c828d822 1e4e1d89 475e2d85 f2063cbc 4a74f6f6 
6268b6e6 da1162ee 055365bb 30283bde 614a17f6 1a255d68 82417164 
bc500498</t>
  <t hangText='y’:'>
  0x0104fa79 6cbc2989 0f9a3798 2c353da1 3b299391 be45ddb1 c15ca42a 
bdf8bf50 2a5dd7ac 0a3d351a 859980e8 9be676d0 0e92c128 714d6f3c 
6aba56ca 6e0fc6a5 468c12d4 2762b29d 840f13ce 5c3323ff 016233ec 
7d76d4a8 12e25bbe b2c25024 3f2cbd27 80527ec5 ad208d72 24334db3 
c1b4a49c</t>
  <t hangText='h’:'>
  0x2404 80360120 023fffff fffff6ff 0cf6b7d9 bfca0000 000000d8 
12908fa1 ce0227ff fffffff6 ff66fc63 f5f7f4c0 00000000 2401b008 
a0168019</t>
  <t hangText='b’:'>
  -u + 2</t>
</list></t>

</section>
<section anchor="bls-curves" title="BLS Curves">

<t>A BLS12 curve with 128 bits of security shown in <xref target="BLS12-381"/>, BLS12-381, 
is defined by a parameter</t>

<figure><artwork><![CDATA[
    t = -2^63 - 2^62 - 2^60 - 2^57 - 2^48 - 2^16 
]]></artwork></figure>

<t>and the size of p becomes 381-bit length.</t>

<t>For the finite field F_p, the towers of extension field F_p2, F_p6 and F_p12 are defined by indeterminates u, v, w as follows:</t>

<figure><artwork><![CDATA[
    F_p2 = F_p[u] / (u^2 + 1)
    F_p6 = F_p2[v] / (v^3 - u - 1)
    F_p12 = F_p6[w] / (w^2 - v).
]]></artwork></figure>

<t>Defined by t, the elliptic curve E and its twisted curve E’ are represented 
by E: y^2 = x^3 + 4 and E’: y^2 = x^3 + 4(u + 1).</t>

<t>A pairing e is defined by taking G_1 as a cyclic group of order r generated by a base point BP = (x, y) in F_p, G_2 as a cyclic group of order r generated by a based point BP’ = (x’, y’) in F_p2, and G_T as a subgroup of a multiplicative group F_p12^* of order r. BLS12-381 is M-type.</t>

<t>We have to note that, according to <xref target="MSS17"/>, the bit length of p for BLS12 to achieve 128 bits of security is calculated as 384 bits and more, which BLS12-381 does not satisfy. They state that BLS12-381 achieves 127-bit security level evaluated by the computational cost of Pollard’s rho, whereas NCC group estimated that the security level of BLS12-381 is between 117 and 120 bits at most <xref target="NCCG"/>.
Therefore, we regard BN462 as a "conservative" parameter, and BLS12-381 as an "optimistic" parameter.</t>

<t>We give the following parameters for BLS12-381.</t>

<t><list style="symbols">
  <t>G_1 defined over E: y^2 = x^3 + b
  <list style="symbols">
      <t>p : a characteristic</t>
      <t>r : an order</t>
      <t>BP = (x, y) : a base point</t>
      <t>h : a cofactor</t>
      <t>b : a coefficient of E</t>
    </list></t>
  <t>G_2 defined over E’: y^2 = x^3 + b’
  <list style="symbols">
      <t>r’ : an order</t>
      <t>BP’ = (x’, y’) : a base point (encoded with <xref target="IEEE-1363a-2004"/>)
      <list style="symbols">
          <t>x’ = x’0 + x’1 * u (x’0, x’1 in F_p)</t>
          <t>y’ = y’0 + y’1 * u (y’0, y’1 in F_p)</t>
        </list></t>
      <t>h’ : a cofactor</t>
      <t>b’ : a coefficient of E’</t>
    </list></t>
</list></t>

<t><list style="hanging">
  <t hangText='p:'>
  0x1a0111ea 397fe69a 4b1ba7b6 434bacd7 64774b84 f38512bf 6730d2a0 
f6b0f624 1eabfffe b153ffff b9feffff ffffaaab</t>
  <t hangText='r:'>
  0x73eda753 299d7d48 3339d808 09a1d805 53bda402 fffe5bfe ffffffff 
00000001</t>
  <t hangText='x:'>
  0x17f1d3a7 3197d794 2695638c 4fa9ac0f c3688c4f 9774b905 a14e3a3f 
171bac58 6c55e83f f97a1aef fb3af00a db22c6bb</t>
  <t hangText='y:'>
  0x08b3f481 e3aaa0f1 a09e30ed 741d8ae4 fcf5e095 d5d00af6 00db18cb 
2c04b3ed d03cc744 a2888ae4 0caa2329 46c5e7e1</t>
  <t hangText='h:'>
  0x396c8c00 5555e156 8c00aaab 0000aaab</t>
  <t hangText='b:'>
  4</t>
  <t hangText='r’:'>
  0x1a0111ea 397fe69a 4b1ba7b6 434bacd7 64774b84 f38512bf 6730d2a0 
f6b0f624 1eabfffe b153ffff b9feffff ffffaaab</t>
  <t hangText='x’0:'>
  0x24aa2b2 f08f0a91 26080527 2dc51051 c6e47ad4 fa403b02 
b4510b64 7ae3d177 0bac0326 a805bbef d48056c8 c121bdb8</t>
  <t hangText='x’1:'>
  0x13e02b60 52719f60 7dacd3a0 88274f65 596bd0d0 9920b61a 
b5da61bb dc7f5049 334cf112 13945d57 e5ac7d05 5d042b7e</t>
  <t hangText='y’0:'>
  0xce5d527 727d6e11 8cc9cdc6 da2e351a adfd9baa 8cbdd3a7 
6d429a69 5160d12c 923ac9cc 3baca289 e1935486 08b82801</t>
  <t hangText='y’1:'>
  0x606c4a0 2ea734cc 32acd2b0 2bc28b99 cb3e287e 85a763af 
267492ab 572e99ab 3f370d27 5cec1da1 aaa9075f f05f79be</t>
  <t hangText='x’:'>
  0x204d9ac 05ffbfeb ac60c8f3 e4143831 567c7063 d38b0595 9c12ec06 
3fd7b99a b4541ece faa3f0ec 1a0a33da 0ff56d7b 45b2ca9f f8adbac4 
78790d52 dc45216b 3e272dce a7571e71 81b20335 695608a3 0ea1f83e 
53a80d95 ad3a0c1e 7c4e76e2</t>
  <t hangText='y’:'>
  0x09cb66a fff60c18 9da2c655 d4eccad1 5dba53e8 a3c89101 aba0838c 
17ad69cd 096844ba 7ec246ea 99be5c24 9aea2f05 c14385e9 c53df5fb 
63ddecfe f1067e73 5cc17763 97138d4c b2ccdfbe 45b5343e eadf6637 
08ae1288 aa4306db 8598a5eb</t>
  <t hangText='h’:'>
  0x5d543a9 5414e7f1 091d5079 2876a202 cd91de45 47085aba a68a205b 
2e5a7ddf a628f1cb 4d9e82ef 21537e29 3a6691ae 1616ec6e 786f0c70 
cf1c38e3 1c7238e5</t>
  <t hangText='b’:'>
  4 * (u + 1)</t>
</list></t>

</section>
</section>
<section anchor="for-192-bits-of-security" title="For 192 Bits of Security">

<t>(TBD)</t>

</section>
<section anchor="for-256-bits-of-security" title="For 256 Bits of Security">

<t>As shown in <xref target="impact"/>, it is unrealistic to achieve 256 bits of security by BN curves 
since the minimum size of p becomes too large to implement.
Hence, we consider BLS48 for 256 bits of security.</t>

<t>A BLS48 curve with 256 bits of security is shown in <xref target="KIK17"/>, which we call BLS48-581. 
It is defined by a parameter</t>

<figure><artwork><![CDATA[
    t = -1 + 2^7 - 2^10 - 2^30 - 2^32. 
]]></artwork></figure>

<t>For the finite field F_p, the towers of extension field F_p2, F_p4, F_p8, F_p24 and F_p48 are defined by indeterminates u, v, w, z, s as follows:</t>

<figure><artwork><![CDATA[
    F_p2 = F_p[u] / (u^2 + 1)
    F_p4 = F_p2[v] / (v^2 + u + 1)
    F_p8 = F_p4[w] / (w^2 + v)
    F_p24 = F_p8[z] / (z^3 + w)
    F_p48 = Fp24[s] / (s^2 + z).
]]></artwork></figure>

<t>The elliptic curve E and its twisted curve E’ are represented by E: y^2 = x^3 + 1 
and E’: y^2 = x^3 - 1 / w.
A pairing e is defined by taking G_1 as a cyclic group of order r generated by a base point BP = (x, y) in F_p, G_2 as a cyclic group of order r generated by a based point BP’ = (x’, y’) in F_p8, and G_T as a subgroup of a multiplicative group F_p48^* of order r.
The size of p becomes 581-bit length. BLS48-581 is D-type.</t>

<t>We then give the parameters for BLS48-581 as follows.</t>

<t><list style="symbols">
  <t>G_1 defined over E: y^2 = x^3 + b
  <list style="symbols">
      <t>p : a characteristic</t>
      <t>r : a prime which divides an order of G_1</t>
      <t>BP = (x, y) : a base point</t>
      <t>h : a cofactor</t>
      <t>b : a coefficient of E</t>
    </list></t>
  <t>G_2 defined over E’: y^2 = x^3 + b’
  <list style="symbols">
      <t>r’ : an order</t>
      <t>BP’ = (x’, y’) : a base point (encoded with <xref target="IEEE-1363a-2004"/>)
      <list style="symbols">
          <t>x’ = x’0 + x’1 * u + x’2 * v + x’3 * u * v + x’4 * w + x’5 * u * w + x’6 * v * w + x’7 * u * v * w (x’0, …, x’7 in F_p)</t>
          <t>y’ = y’0 + y’1 * u + y’2 * v + y’3 * u * v + y’4 * w + y’5 * u * w + y’6 * v * w + y’7 * u * v * w (y’0, …, y’7 in F_p)</t>
        </list></t>
      <t>h’ : a cofactor</t>
      <t>b’ : a coefficient of E’</t>
    </list></t>
</list></t>

<t><list style="hanging">
  <t hangText='p:'>
  0x12 80f73ff3 476f3138 24e31d47 012a0056 e84f8d12 2131bb3b 
e6c0f1f3 975444a4 8ae43af6 e082acd9 cd30394f 4736daf6 8367a551 
3170ee0a 578fdf72 1a4a48ac 3edc154e 6565912b</t>
  <t hangText='r:'>
  0x23 86f8a925 e2885e23 3a9ccc16 15c0d6c6 35387a3f 0b3cbe00 
3fad6bc9 72c2e6e7 41969d34 c4c92016 a85c7cd0 562303c4 ccbe5994 
67c24da1 18a5fe6f cd671c01</t>
  <t hangText='x:'>
  0x02 af59b7ac 340f2baf 2b73df1e 93f860de 3f257e0e 86868cf6 1abdbaed 
ffb9f754 4550546a 9df6f964 5847665d 859236eb dbc57db3 68b11786
cb74da5d 3a1e6d8c 3bce8732 315af640</t>
  <t hangText='y:'>
  0x0c efda44f6 531f91f8 6b3a2d1f b398a488 a553c9ef eb8a52e9 91279dd4 
1b720ef7 bb7beffb 98aee53e 80f67858 4c3ef22f 487f77c2 876d1b2e
35f37aef 7b926b57 6dbb5de3 e2587a70</t>
  <t hangText='h:'>
  0x85555841 aaaec4ac</t>
  <t hangText='b:'>
  1</t>
  <t hangText='r’:'>
  0x23 86f8a925 e2885e23 3a9ccc16 15c0d6c6 35387a3f 0b3cbe00 3fad6bc9
72c2e6e7 41969d34 c4c92016 a85c7cd0 562303c4 ccbe5994 67c24da1
18a5fe6f cd671c01</t>
  <t hangText='x’:'>
  0x5 d615d9a7 871e4a38 237fa45a 2775deba bbefc703 44dbccb7 
de64db3a 2ef156c4 6ff79baa d1a8c422 81a63ca0 612f4005 03004d80 
491f5103 17b79766 322154de c34fd0b4 ace8bfab + 
0x7 c4973ece 22585120 69b0e86a bc07e8b2 2bb6d980 e1623e95 
26f6da12 307f4e1c 3943a00a bfedf162 14a76aff a62504f0 c3c7630d 
979630ff d75556a0 1afa143f 1669b366 76b47c57 * u + 
0x1 fccc7019 8f1334e1 b2ea1853 ad83bc73 a8a6ca9a e237ca7a 
6d6957cc bab5ab68 60161c1d bd19242f fae766f0 d2a6d55f 028cbdfb 
b879d5fe a8ef4cde d6b3f0b4 6488156c a55a3e6a * v + 
0xb e2218c25 ceb6185c 78d80129 54d4bfe8 f5985ac6 2f3e5821 
b7b92a39 3f8be0cc 218a95f6 3e1c776e 6ec143b1 b279b946 8c31c525 
7c200ca5 2310b8cb 4e80bc3f 09a7033c bb7feafe * u * v + 
0x3 8b91c600 b35913a3 c598e4ca a9dd6300 7c675d0b 1642b567 
5ff0e7c5 80538669 9981f9e4 8199d5ac 10b2ef49 2ae58927 4fad55fc 
1889aa80 c65b5f74 6c9d4cbb 739c3a1c 53f8cce5 * w + 
0xc 96c7797e b0738603 f1311e4e cda088f7 b8f35dce f0977a3d 
1a58677b b0374181 81df6383 5d28997e b57b40b9 c0b15dd7 595a9f17 
7612f097 fc796091 0fce3370 f2004d91 4a3c093a * u * w + 
0xb 9b7951c6 061ee3f0 197a4989 08aee660 dea41b39 d13852b6 
db908ba2 c0b7a449 cef11f29 3b13ced0 fd0caa5e fcf3432a ad1cbe43 
24c22d63 334b5b0e 205c3354 e41607e6 0750e057 * v * w + 
0x8 27d5c22f b2bdec52 82624c4f 4aaa2b1e 5d7a9def af47b521 
1cf74171 9728a7f9 f8cfca93 f29cff36 4a7190b7 e2b0d458 5479bd6a 
ebf9fc44 e56af2fc 9e97c3f8 4e19da00 fbc6ae34 * u * v * w</t>
  <t hangText='y’:'>
  0x0 eb53356c 375b5dfa 49721645 2f3024b9 18b42380 59a577e6 
f3b39ebf c435faab 0906235a fa27748d 90f7336d 8ae5163c 1599abf7 
7eea6d65 9045012a b12c0ff3 23edd3fe 4d2d7971 + 
0x2 84dc7597 9e0ff144 da653181 5fcadc2b 75a422ba 325e6fba 
01d72964 732fcbf3 afb096b2 43b1f192 c5c3d189 2ab24e1d d212fa09 
7d760e2e 588b4235 25ffc7b1 11471db9 36cd5665 * u + 
0xb 36a201dd 008523e4 21efb703 67669ef2 c2fc5030 216d5b11 
9d3a480d 37051447 5f7d5c99 d0e90411 515536ca 3295e5e2 f0c1d35d 
51a65226 9cbc7c46 fc3b8fde 68332a52 6a2a8474 * v + 
0xa ec25a462 1edc0688 223fbbd4 78762b1c 2cded336 0dcee23d 
d8b0e710 e122d274 2c89b224 333fa40d ced28177 42770ba1 0d67bda5 
03ee5e57 8fb3d8b8 a1e53373 16213da9 2841589d * u * v + 
0xd 209d5a22 3a9c4691 6503fa5a 88325a25 54dc541b 43dd93b5 
a959805f 1129857e d85c77fa 238cdce8 a1e2ca4e 512b64f5 9f430135 
945d137b 08857fdd dfcf7a43 f47831f9 82e50137 * w + 
0x7 d0d03745 736b7a51 3d339d5a d537b904 21ad66eb 16722b58 
9d82e205 5ab7504f a83420e8 c270841f 6824f47c 180d139e 3aafc198 
caa72b67 9da59ed8 226cf3a5 94eedc58 cf90bee4 * u * w + 
0x8 96767811 be65ea25 c2d05dfd d17af8a0 06f364fc 0841b064 
155f14e4 c819a6df 98f425ae 3a2864f2 2c1fab8c 74b2618b 5bb40fa6 
39f53dcc c9e88401 7d9aa62b 3d41faea feb23986 * v * w + 
0x3 5e2524ff 89029d39 3a5c07e8 4f981b5e 068f1406 be8e50c8 
7549b6ef 8eca9a95 33a3f8e6 9c31e97e 1ad0333e c7192054 17300d8c 
4ab33f74 8e5ac66e 84069c55 d667ffcb 732718b6 * u * v * w</t>
  <t hangText='x’:'>
  0x01 690ae060 61530e31 64040ce6 e7466974 a0865edb 6d5b825d f11e5db6
b724681c 2b5a805a f2c7c45f 60300c3c 4238a1f5 f6d3b644 29f5b655
a4709a8b ddf790ec 477b5fb1 ed4a0156 dec43f7f 6c401164 da6b6f9a
f79b9fc2 c0e09d2c d4b65900 d2394b61 aa3bb48c 7c731a14 68de0a17
346e34e1 7d58d870 7f845fac e35202bb 9d64b5ef f29cbfc8 5f5c6d60
1d794c87 96c20e67 81dffed3 36fc1ff6 d3ae3193 dec00603 91acb681
1f1fbde3 8027a0ef 591e6b21 c6e31c5f 1fda66eb 05582b6b 0399c6a2
459cb2ab fd0d5d95 3447a927 86e194b2 89588e63 ef1b8b61 ad354bed
299b5a49 7c549d7a 56a74879 b7665a70 42fbcaf1 190d915f 945fef6c
0fcec14b 4afc403f 50774720 4d810c57 00de1692 6309352f 660f26a5
529a2f74 cb9d1044 0595dc25 d6d12fcc e84fc565 57217bd4 bc2d645a
b4ca167f b812de7c acc3b942 7fc78212 985680b8 83bf7fee 7eae0199
1eb7a52a 0f4cbb01 f5a8e3c1 6c41350d c62be2c1 9cbd2b98 d9c9d268
7cd811db 7863779c 97e9a15b d6967d5e b21f972d 28ad9d43 7de41234
25249319 98f280a9 a9c799c3 3ff8f838 ca35bdde bbb79cdc 2967946c
c0f77995 411692e1 8519243d 5598bdb4 623a11dc 97ca3889 49f32c65
db3fc6a4 7124bd5d 063549e5 0b0f8b03 0d3a9830 e1e3bef5 cd428393
9d33a28c fdc3df89 640df257 c0fc2544 77a9c8ef f69b57cf f042e6fd
1ef3e293 c57beca2 cd61dc44 838014c2 08eda095 e10d5e89 e705ff69
07047895 96e41969 96508797 71f58935 d768cdc3 b55150cc a3693e28
33b62df3 4f1e2491 ef8c5824 f8a80cd8 6e65193a</t>
  <t hangText='y’:'>
  0x00 951682f0 10b08932 b28b4a85 1ec79469 f9437fc4 f9cfa8cc dec25c3c
c847890c 65e1bcd2 df994b83 5b71e49c 0fc69e6d 9ea5da9d bb020a9d
fb2942dd 022fa962 fb0233de 016c8c80 e9387b0b 28786785 523e68eb
7c008f81 b99ee3b5 d10a72e5 321a09b7 4b39c58b 75d09d73 e4155b76
dc11d8dd 416b7fa6 3557fcdd b0a955f6 f5e0028d 4af2150b fd757a89
8b548912 e2c0c6e5 70449113 fcee54cd a9cb8bfd 7f182825 b371f069
61b62ca4 41bfcb3d 13ce6840 432bf8bc 4736003c 64d695e9 84ddc2ef
4aee1747 044157fd 2f9b81c4 3eed97d3 45289899 6d24c66a ad191dba
634f3e04 c89485e0 6f8308b8 afaedf1c 98b1a466 deab2c15 81f96b6f
3c64d440 f2a16a62 75000cf3 8c09453b 5b9dc827 8eabe442 92a154dc
69faa74a d76ca847 b786eb2f d686b9be 509fe24b 8293861c c35d76be
88c27117 04bfe118 e4db1fad 86c2a642 4da6b3e5 807258a2 d166d3e0
e43d15e3 b6464fb9 9f382f57 fd10499f 8c8e11df 718c98a0 49bd0e5d
1301bc9e 6ccd0f06 3b06eb06 422afa46 9b5b529b 8bba3d4c 6f219aff
e4c57d73 10a92119 c98884c3 b6c0bbcc 113f6826 b3ae70e3 bbbaadab
3ff8abf3 b905c231 38dfe385 134807fc c1f9c19e 68c0ec46 8213bc9f
0387ca1f 4ffe406f da92d655 3cd4cfd5 0a2c895e 85fe2540 9ffe8bb4
3b458f9b efab4d59 bee20e2f 01de48c2 affb03a9 7ceede87 214e3bb9
0183303b 672e50b8 7b36a615 34034578 db0195fd 81a46beb 55f75d20
049d044c 3fa5c367 8c783db3 120c2580 359a7b33 cac5ce21 e4cecda9
e2e2d6d2 ff202ff4 3c1bb2d4 b5e53dae 010423ce</t>
  <t hangText='h’:'>
  0x170e915c b0a6b740 6b8d9404 2317f811 d6bc3fc6 e211ada4 2e58ccfc
b3ac076a 7e4499d7 00a0c23d c4b0c078 f92def8c 87b7fe63 e1eea270
db353a4e f4d38b59 98ad8f0d 042ea24c 8f02be1c 0c83992f e5d77252
27bb2712 3a949e08 76c0a8ce 0a67326d b0e955dc b791b867 f31d6bfa
62fbdd5f 44a00504 df04e186 fae033f1 eb43c1b1 a08b6e08 6eff03c8
fee9ebdd 1e191a8a 4b0466c9 0b389987 de5637d5 dd13dab3 3196bd2e
5afa6cd1 9cf0fc3f c7db7ece 1f3fac74 2626b1b0 2fcee040 43b2ea96
492f6afa 51739597 c54bb78a a6b0b993 19fef9d0 9f768831 018ee656
4c68d054 c62f2e0b 4549426f ec24ab26 957a669d ba2a2b69 45ce40c9
aec6afde da16c79e 15546cd7 771fa544 d5364236 690ea068 32679562
a6873142 0ae52d0d 35a90b8d 10b688e3 1b6aee45 f45b7a50 83c71732
105852de cc888f64 839a4de3 3b99521f 0984a418 d20fc7b0 609530e4
54f0696f a2a8075a c01cc8ae 3869e8d0 fe1f3788 ffac4c01 aa2720e4
31da333c 83d9663b fb1fb7a1 a7b90528 482c6be7 89229903 0bb51a51
dc7e91e9 15687441 6bf4c26f 1ea7ec57 80585639 60ef92bb bb8632d3
a1b695f9 54af10e9 a78e40ac ffc13b06 540aae9d a5287fc4 429485d4
4e6289d8 c0d6a3eb 2ece3501 24527518 39fb48bc 14b51547 8e2ff412
d930ac20 307561f3 a5c998e6 bcbfebd9 7effc643 3033a236 1bfcdc4f
c74ad379 a16c6dea 49c209b1</t>
  <t hangText='b’:'>
  -1 / w</t>
</list></t>

</section>
</section>
<section anchor="impl" title="Implementations of Pairing-Friendly Curves">

<t>We show the pairing-friendly curves selected by existing standards, cryptographic libraries and applications.</t>

<!-- standards -->

<t>ISO/IEC 15946-5 <xref target="ISOIEC15946-5"/> shows examples of BN curves with the size of 160, 192, 224, 256, 384 and 512 bits of p. There is no action so far after the proposal of exTNFS.</t>

<t>TCG adopts an BN curve of 256 bits specified in ISO/IEC 15946-5 (TPM_ECC_BN_P256) and that of 638 bits specified by their own (TPM_ECC_BN_P638).
FIDO Alliance <xref target="FIDO"/> and W3C <xref target="W3C"/> adopt the same BN curves as TCG, a 512-bit BN curve shown in ISO/IEC 15946-5 and another 256-bit BN curve.</t>

<!-- libraries -->

<t>Cryptographic libraries which implement pairings include PBC <xref target="PBC"/>, mcl <xref target="mcl"/>, RELIC <xref target="RELIC"/>, TEPLA <xref target="TEPLA"/>, AMCL <xref target="AMCL"/>, Intel IPP <xref target="Intel-IPP"/> and a library by Kyushu University <xref target="BLS48"/>.</t>

<t>Cloudflare published a new cryptographic library CIRCL (Cloudflare Interoperable, Reusable Cryptographic Library) in 2019 <xref target="CIRCL"/>. The plan for the implementation of secure pairing-friendly curves is stated in their roadmap.</t>

<!-- applications -->

<t>MIRACL implements BN curves and BLS12 curves <xref target="MIRACL"/>.</t>

<t>Zcash implements a BN curve (named BN128) in their library libsnark <xref target="libsnark"/>.
After exTNFS, they propose a new parameter of BLS12 as BLS12-381 <xref target="BLS12-381"/>
and publish its experimental implementation <xref target="zkcrypto"/>.</t>

<t>Ethereum 2.0 adopts BLS12-381 (BLS12_381), BN curves with 254 bits of p (CurveFp254BNb) and 382 bits of p (CurveFp382_1 and CurveFp382_2) <xref target="go-bls"/>. Their implementation calls mcl <xref target="mcl"/> for pairing computation. Chia Network publishs their implementation <xref target="Chia"/> by integrating the RELIC toolkit <xref target="RELIC"/>.</t>

<t><xref target="adoption"/> shows the adoption of pairing-friendly curves in existing standards, cryptographic libraries and applications.
In this table, the curves marked as (*) indicate that the security level is evaluated less than the one labeld in the table.</t>

<texttable title="Adoption of Pairing-Friendly Curves" anchor="adoption">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>100 bit</ttcol>
      <ttcol align='left'>128 bit</ttcol>
      <ttcol align='left'>192 bit</ttcol>
      <ttcol align='left'>256 bit</ttcol>
      <c>ISO/IEC 15946-5</c>
      <c>BN256</c>
      <c>BN384</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>TCG</c>
      <c>BN256</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>FIDO/W3C</c>
      <c>BN256</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>PBC</c>
      <c>BN</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>mcl</c>
      <c>BN254 / BN_SNARK1</c>
      <c>BN381_1 (*) / BN462 / BLS12-381</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>RELIC</c>
      <c>BN254 / BN256</c>
      <c>BLS12-381 / BLS12-455</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>TEPLA</c>
      <c>BN254</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>AMCL</c>
      <c>BN254 / BN256</c>
      <c>BLS12-381 (*) / BLS12-383 (*) / BLS12-461</c>
      <c>&#160;</c>
      <c>BLS48</c>
      <c>Intel IPP</c>
      <c>BN256</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Kyushu Univ.</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>BLS48</c>
      <c>MIRACL</c>
      <c>BN254</c>
      <c>BLS12</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Zcash</c>
      <c>BN128 (CurveSNARK)</c>
      <c>BLS12-381</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Ethereum</c>
      <c>BN254</c>
      <c>BN382 (*) / BLS12-381 (*)</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Chia Network</c>
      <c>&#160;</c>
      <c>BLS12-381 (*)</c>
      <c>&#160;</c>
      <c>&#160;</c>
</texttable>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>This memo entirely describes the security of pairing-friendly curves, and introduces secure parameters of pairing-friendly curves. We give these parameters in terms of security, efficiency and global acceptance. The parameters for 100, 128, 192 and 256 bits of security are introduced since the security level will different in the requirements of the pairing-based applications. Implementers can select these parameters according to their security requirements.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no actions for IANA.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>The authors would like to thank Akihiro Kato and Shoko Yonezawa for their significant contribution to the early version of this memo.
The authors would also like to acknowledge Sakae Chikara, Hoeteck Wee, Sergey Gorbunov and Michael Scott for their valuable comments.</t>

<!-- # Change log -->

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>

<reference anchor="Ver09" >
  <front>
    <title>Optimal Pairings</title>
    <author initials="F." surname="Vercauteren" fullname="Frederik Vercauteren">
      <organization></organization>
    </author>
    <date year="2010" month="January"/>
  </front>
  <seriesInfo name="IEEE Transactions on Information Theory" value="Vol. 56, pp. 455-461"/>
  <seriesInfo name="DOI" value="10.1109/tit.2009.2034881"/>
</reference>

<reference anchor="BN05" >
  <front>
    <title>Pairing-Friendly Elliptic Curves of Prime Order</title>
    <author initials="P." surname="Barreto" fullname="Paulo S. L. M. Barreto">
      <organization></organization>
    </author>
    <author initials="M." surname="Naehrig" fullname="Michael Naehrig">
      <organization></organization>
    </author>
    <date year="2006"/>
  </front>
  <seriesInfo name="Selected Areas in Cryptography" value="pp. 319-331"/>
  <seriesInfo name="DOI" value="10.1007/11693383_22"/>
</reference>

<reference anchor="BLS02" >
  <front>
    <title>Constructing Elliptic Curves with Prescribed Embedding Degrees</title>
    <author initials="P." surname="Barreto" fullname="Paulo S. L. M. Barreto">
      <organization></organization>
    </author>
    <author initials="B." surname="Lynn" fullname="Ben Lynn">
      <organization></organization>
    </author>
    <author initials="M." surname="Scott" fullname="Michael Scott">
      <organization></organization>
    </author>
    <date year="2003"/>
  </front>
  <seriesInfo name="Security in Communication Networks" value="pp. 257-267"/>
  <seriesInfo name="DOI" value="10.1007/3-540-36413-7_19"/>
</reference>

<reference anchor="KB16" >
  <front>
    <title>Extended Tower Number Field Sieve: A New Complexity for the Medium Prime Case</title>
    <author initials="T." surname="Kim" fullname="Taechan Kim">
      <organization></organization>
    </author>
    <author initials="R." surname="Barbulescu" fullname="Razvan Barbulescu">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
  <seriesInfo name="Advances in Cryptology – CRYPTO 2016" value="pp. 543-571"/>
  <seriesInfo name="DOI" value="10.1007/978-3-662-53018-4_20"/>
</reference>

<reference anchor="BD18" >
  <front>
    <title>Updating Key Size Estimations for Pairings</title>
    <author initials="R." surname="Barbulescu" fullname="Razvan Barbulescu">
      <organization></organization>
    </author>
    <author initials="S." surname="Duquesne" fullname="Sylvain Duquesne">
      <organization></organization>
    </author>
    <date year="2018" month="January"/>
  </front>
  <seriesInfo name="Journal of" value="Cryptology"/>
  <seriesInfo name="DOI" value="10.1007/s00145-018-9280-5"/>
</reference>

<reference anchor="MSS17" >
  <front>
    <title>Challenges with Assessing the Impact of NFS Advances on the Security of Pairing-Based Cryptography</title>
    <author initials="A." surname="Menezes" fullname="Alfred Menezes">
      <organization></organization>
    </author>
    <author initials="P." surname="Sarkar" fullname="Palash Sarkar">
      <organization></organization>
    </author>
    <author initials="S." surname="Singh" fullname="Shashank Singh">
      <organization></organization>
    </author>
    <date year="2017"/>
  </front>
  <seriesInfo name="Lecture Notes in Computer Science" value="pp. 83-108"/>
  <seriesInfo name="DOI" value="10.1007/978-3-319-61273-7_5"/>
</reference>

<reference anchor="KIK17" >
  <front>
    <title>Secure and Efficient Pairing at 256-Bit Security Level</title>
    <author initials="Y." surname="Kiyomura" fullname="Yutaro Kiyomura">
      <organization></organization>
    </author>
    <author initials="A." surname="Inoue" fullname="Akiko Inoue">
      <organization></organization>
    </author>
    <author initials="Y." surname="Kawahara" fullname="Yuto Kawahara">
      <organization></organization>
    </author>
    <author initials="M." surname="Yasuda" fullname="Masaya Yasuda">
      <organization></organization>
    </author>
    <author initials="T." surname="Takagi" fullname="Tsuyoshi Takagi">
      <organization></organization>
    </author>
    <author initials="T." surname="Kobayashi" fullname="Tetsutaro Kobayashi">
      <organization></organization>
    </author>
    <date year="2017"/>
  </front>
  <seriesInfo name="Applied Cryptography and Network Security" value="pp. 59-79"/>
  <seriesInfo name="DOI" value="10.1007/978-3-319-61204-1_4"/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC5091" target='https://www.rfc-editor.org/info/rfc5091'>
<front>
<title>Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems</title>
<author initials='X.' surname='Boyen' fullname='X. Boyen'><organization /></author>
<author initials='L.' surname='Martin' fullname='L. Martin'><organization /></author>
<date year='2007' month='December' />
<abstract><t>This document describes the algorithms that implement Boneh-Franklin (BF) and Boneh-Boyen (BB1) Identity-based Encryption.  This document is in part based on IBCS #1 v2 of Voltage Security's Identity-based Cryptography Standards (IBCS) documents, from which some irrelevant sections have been removed to create the content of this document.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='5091'/>
<seriesInfo name='DOI' value='10.17487/RFC5091'/>
</reference>



<reference  anchor="RFC6508" target='https://www.rfc-editor.org/info/rfc6508'>
<front>
<title>Sakai-Kasahara Key Encryption (SAKKE)</title>
<author initials='M.' surname='Groves' fullname='M. Groves'><organization /></author>
<date year='2012' month='February' />
<abstract><t>In this document, the Sakai-Kasahara Key Encryption (SAKKE) algorithm is described.  This uses Identity-Based Encryption to exchange a shared secret from a Sender to a Receiver.  This  document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6508'/>
<seriesInfo name='DOI' value='10.17487/RFC6508'/>
</reference>



<reference  anchor="RFC6539" target='https://www.rfc-editor.org/info/rfc6539'>
<front>
<title>IBAKE: Identity-Based Authenticated Key Exchange</title>
<author initials='V.' surname='Cakulev' fullname='V. Cakulev'><organization /></author>
<author initials='G.' surname='Sundaram' fullname='G. Sundaram'><organization /></author>
<author initials='I.' surname='Broustis' fullname='I. Broustis'><organization /></author>
<date year='2012' month='March' />
<abstract><t>Cryptographic protocols based on public-key methods have been traditionally based on certificates and Public Key Infrastructure (PKI) to support certificate management.  The emerging field of Identity-Based Encryption (IBE) protocols allows simplification of infrastructure requirements via a Private-Key Generator (PKG) while providing the same flexibility.  However, one significant limitation of IBE methods is that the PKG can end up being a de facto key escrow server, with undesirable consequences.  Another observed deficiency is a lack of mutual authentication of communicating parties.  This document specifies the Identity-Based Authenticated Key Exchange (IBAKE) protocol.  IBAKE does not suffer from the key escrow problem and in addition provides mutual authentication as well as perfect forward and backward secrecy.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6539'/>
<seriesInfo name='DOI' value='10.17487/RFC6539'/>
</reference>



<reference  anchor="RFC6509" target='https://www.rfc-editor.org/info/rfc6509'>
<front>
<title>MIKEY-SAKKE: Sakai-Kasahara Key Encryption in Multimedia Internet KEYing (MIKEY)</title>
<author initials='M.' surname='Groves' fullname='M. Groves'><organization /></author>
<date year='2012' month='February' />
<abstract><t>This document describes the Multimedia Internet KEYing-Sakai-Kasahara Key Encryption (MIKEY-SAKKE), a method of key exchange that uses Identity-based Public Key Cryptography (IDPKC) to establish a shared secret value and certificateless signatures to provide source authentication.  MIKEY-SAKKE has a number of desirable features, including simplex transmission, scalability, low-latency call setup, and support for secure deferred delivery.  This document is not an Internet  Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6509'/>
<seriesInfo name='DOI' value='10.17487/RFC6509'/>
</reference>


<reference anchor="SAKKE" >
  <front>
    <title>Security of the mission critical service (Release 15)</title>
    <author >
      <organization>3GPP</organization>
    </author>
    <date year="2018"/>
  </front>
  <seriesInfo name="3GPP TS" value="33.180 15.3.0"/>
</reference>
<reference anchor="ISOIEC11770-3" >
  <front>
    <title>ISO/IEC 11770-3:2015</title>
    <author >
      <organization>ISO/IEC</organization>
    </author>
    <date year="2015"/>
  </front>
  <seriesInfo name="ISO/IEC" value="Information technology -- Security techniques -- Key management -- Part 3: Mechanisms using asymmetric techniques"/>
</reference>


<reference anchor="Joux00" >
  <front>
    <title>A One Round Protocol for Tripartite Diffie–Hellman</title>
    <author initials="A." surname="Joux" fullname="Antoine Joux">
      <organization></organization>
    </author>
    <date year="2000"/>
  </front>
  <seriesInfo name="Lecture Notes in Computer Science" value="pp. 385-393"/>
  <seriesInfo name="DOI" value="10.1007/10722028_23"/>
</reference>

<reference anchor="CCS07" >
  <front>
    <title>Identity-based key agreement protocols from pairings</title>
    <author initials="L." surname="Chen" fullname="L. Chen">
      <organization></organization>
    </author>
    <author initials="Z." surname="Cheng" fullname="Z. Cheng">
      <organization></organization>
    </author>
    <author initials="N." surname="Smart" fullname="N. P. Smart">
      <organization></organization>
    </author>
    <date year="2007" month="January"/>
  </front>
  <seriesInfo name="International Journal of Information Security" value="Vol. 6, pp. 213-241"/>
  <seriesInfo name="DOI" value="10.1007/s10207-006-0011-9"/>
</reference>

<reference anchor="FSU10" >
  <front>
    <title>Ephemeral Key Leakage Resilient and Efficient ID-AKEs That Can Share Identities, Private and Master Keys</title>
    <author initials="A." surname="Fujioka" fullname="Atsushi Fujioka">
      <organization></organization>
    </author>
    <author initials="K." surname="Suzuki" fullname="Koutarou Suzuki">
      <organization></organization>
    </author>
    <author initials="B." surname="Ustaoglu" fullname="Berkant Ustaoglu">
      <organization></organization>
    </author>
    <date year="2010"/>
  </front>
  <seriesInfo name="Lecture Notes in Computer Science" value="pp. 187-205"/>
  <seriesInfo name="DOI" value="10.1007/978-3-642-17455-1_12"/>
</reference>


<reference anchor="M-Pin" target="https://www.miracl.com/miracl-labs/m-pin-a-multi-factor-zero-knowledge-authentication-protocol">
  <front>
    <title>M-Pin: A Multi-Factor Zero Knowledge Authentication Protocol</title>
    <author initials="M." surname="Scott">
      <organization></organization>
    </author>
    <date year="2019" month="July"/>
  </front>
</reference>
<reference anchor="TPM" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
  <front>
    <title>Trusted Platform Module Library Specification, Family \“2.0\”, Level 00, Revision 01.38</title>
    <author >
      <organization>Trusted Computing Group (TCG)</organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="FIDO" target="https://fidoalliance.org/specs/fido-v2.0-rd-20180702/fido-ecdaa-algorithm-v2.0-rd-20180702.html">
  <front>
    <title>FIDO ECDAA Algorithm - FIDO Alliance Review Draft 02</title>
    <author initials="R." surname="Lindemann">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="W3C" target="https://www.w3.org/TR/webauthn/">
  <front>
    <title>Web Authentication: An API for accessing Public Key Credentials Level 1 - W3C Recommendation</title>
    <author initials="E." surname="Lundberg">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="EPID" target="https://software.intel.com/en-us/download/intel-sgx-intel-epid-provisioning-and-attestation-services">
  <front>
    <title>Intel (R) SGX: Intel (R) EPID Provisioning and Attestation Services</title>
    <author >
      <organization>Intel Corporation</organization>
    </author>
    <date />
  </front>
</reference>


<reference anchor="BL10" >
  <front>
    <title>Enhanced Privacy ID from Bilinear Pairing for Hardware Authentication and Attestation</title>
    <author initials="E." surname="Brickell" fullname="Ernie Brickell">
      <organization></organization>
    </author>
    <author initials="J." surname="Li" fullname="Jiangtao Li">
      <organization></organization>
    </author>
    <date year="2010" month="August"/>
  </front>
  <seriesInfo name="2010 IEEE Second International Conference on Social" value="Computing"/>
  <seriesInfo name="DOI" value="10.1109/socialcom.2010.118"/>
</reference>


<reference anchor="Zcash" target="https://z.cash/technology/zksnarks.html">
  <front>
    <title>What are zk-SNARKs?</title>
    <author initials="R." surname="Lindemann">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="Cloudflare" target="https://blog.cloudflare.com/geo-key-manager-how-it-works/">
  <front>
    <title>Geo Key Manager: How It Works</title>
    <author initials="N." surname="Sullivan">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>




<reference anchor="I-D.boneh-bls-signature">
<front>
<title>BLS Signature Scheme</title>

<author initials='D' surname='Boneh' fullname='Dan Boneh'>
    <organization />
</author>

<author initials='S' surname='Gorbunov' fullname='Sergey Gorbunov'>
    <organization />
</author>

<author initials='H' surname='Wee' fullname='Hoeteck Wee'>
    <organization />
</author>

<author initials='Z' surname='Zhang' fullname='Zhenfei Zhang'>
    <organization />
</author>

<date month='February' day='8' year='2019' />

<abstract><t>The BLS signature scheme was introduced by Boneh-Lynn-Shacham in 2001.  The signature scheme relies on pairing-friendly curves and supports non-interactive aggregation properties.  That is, given a collection of signatures (sigma_1, ..., sigma_n), anyone can produce a short signature (sigma) that authenticates the entire collection. BLS signature scheme is simple, efficient and can be used in a variety of network protocols and systems to compress signatures or certificate chains.  This document specifies the BLS signature and the aggregation algorithms.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-boneh-bls-signature-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-boneh-bls-signature-00.txt' />
</reference>


<reference anchor="Ethereum" target="https://medium.com/prysmatic-labs/ethereum-2-0-development-update-17-prysmatic-labs-ed5bcf82ec00">
  <front>
    <title>Ethereum 2.0 Development Update #17 - Prysmatic Labs</title>
    <author initials="R." surname="Jordan">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="Algorand" target="https://medium.com/algorand/digital-signatures-for-blockchains-5820e15fbe95">
  <front>
    <title>Efficient and Secure Digital Signatures for Proof-of-Stake Blockchains</title>
    <author initials="S." surname="Gorbunov">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="Chia" target="https://github.com/Chia-Network/bls-signatures">
  <front>
    <title>BLS signatures in C++, using the relic toolkit</title>
    <author >
      <organization>Chia Network</organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="DFINITY" target="https://dfinity.org/pdf-viewer/library/dfinity-consensus.pdf">
  <front>
    <title>DFINITY Technology Overview Series Consensus System Rev. 1</title>
    <author initials="D." surname="Williams">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="IEEE-1363a-2004" >
  <front>
    <title>IEEE Standard Specifications for Public-Key Cryptography - Amendment 1: Additional Techniques</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="IEEE" value="standard"/>
  <seriesInfo name="DOI" value="10.1109/ieeestd.2004.94612"/>
</reference>


<reference anchor="ECRYPT" >
  <front>
    <title>Final Report on Main Computational Assumptions in Cryptography</title>
    <author >
      <organization>ECRYPT</organization>
    </author>
    <date />
  </front>
</reference>


<reference anchor="Pollard78" >
  <front>
    <title>Monte Carlo methods for index computation $({\rm mod}\ p)$</title>
    <author initials="J." surname="Pollard" fullname="J. M. Pollard">
      <organization></organization>
    </author>
    <date year="1978" month="September"/>
  </front>
  <seriesInfo name="Mathematics of Computation" value="Vol. 32, pp. 918-918"/>
  <seriesInfo name="DOI" value="10.1090/s0025-5718-1978-0491431-9"/>
</reference>

<reference anchor="HR83" >
  <front>
    <title>Fast Computation of Discrete Logarithms in GF (q)</title>
    <author initials="M." surname="Hellman" fullname="Martin E. Hellman">
      <organization></organization>
    </author>
    <author initials="J." surname="Reyneri" fullname="Justin M. Reyneri">
      <organization></organization>
    </author>
    <date year="1983"/>
  </front>
  <seriesInfo name="Advances in Cryptology" value="pp. 3-13"/>
  <seriesInfo name="DOI" value="10.1007/978-1-4757-0602-4_1"/>
</reference>



<reference  anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>


<reference anchor="mcl" target="https://github.com/herumi/mcl">
  <front>
    <title>mcl - A portable and fast pairing-based cryptography library</title>
    <author initials="S." surname="Mitsunari">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
</reference>
<reference anchor="BLS12-381" target="https://electriccoin.co/blog/new-snark-curve/">
  <front>
    <title>BLS12-381: New zk-SNARK Elliptic Curve Construction</title>
    <author initials="S." surname="Bowe">
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="NCCG" target="https://www.nccgroup.trust/us/our-research/zcash-overwinter-consensus-and-sapling-cryptography-review/">
  <front>
    <title>Zcash Overwinter Consensus and Sapling Cryptography Review</title>
    <author >
      <organization>NCC Group</organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="ISOIEC15946-5" >
  <front>
    <title>ISO/IEC 15946-5:2017</title>
    <author >
      <organization>ISO/IEC</organization>
    </author>
    <date year="2017"/>
  </front>
  <seriesInfo name="ISO/IEC" value="Information technology -- Security techniques -- Cryptographic techniques based on elliptic curves -- Part 5: Elliptic curve generation"/>
</reference>
<reference anchor="MIRACL" target="https://github.com/miracl/MIRACL">
  <front>
    <title>MIRACL Cryptographic SDK</title>
    <author >
      <organization>MIRACL Ltd.</organization>
    </author>
    <date year="2018"/>
  </front>
</reference>
<reference anchor="libsnark" target="https://github.com/zcash/libsnark">
  <front>
    <title>libsnark: a C++ library for zkSNARK proofs</title>
    <author >
      <organization>SCIPR Lab</organization>
    </author>
    <date year="2012"/>
  </front>
</reference>
<reference anchor="zkcrypto" target="https://github.com/zkcrypto/pairing">
  <front>
    <title>zkcrypto - Pairing-friendly elliptic curve library</title>
    <author >
      <organization>zkcrypto</organization>
    </author>
    <date year="2017"/>
  </front>
</reference>
<reference anchor="CIRCL" target="https://github.com/cloudflare/circl">
  <front>
    <title>CIRCL: Cloudflare Interoperable, Reusable Cryptographic Library</title>
    <author >
      <organization>Cloudflare</organization>
    </author>
    <date year="2019"/>
  </front>
</reference>
<reference anchor="go-bls" target="https://godoc.org/github.com/prysmaticlabs/go-bls">
  <front>
    <title>go-bls - Go wrapper for a BLS12-381 Signature Aggregation implementation in C++</title>
    <author >
      <organization>Prysmatic Labs</organization>
    </author>
    <date year="2018"/>
  </front>
</reference>
<reference anchor="PBC" target="https://crypto.stanford.edu/pbc/">
  <front>
    <title>PBC Library - The Pairing-Based Cryptography Library</title>
    <author initials="B." surname="Lynn">
      <organization></organization>
    </author>
    <date year="2006"/>
  </front>
</reference>
<reference anchor="RELIC" target="https://github.com/relic-toolkit/relic">
  <front>
    <title>RELIC is an Efficient LIbrary for Cryptography</title>
    <author initials="C.P.L." surname="Gouvea">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
</reference>
<reference anchor="TEPLA" target="http://www.cipher.risk.tsukuba.ac.jp/tepla/index_e.html">
  <front>
    <title>TEPLA: University of Tsukuba Elliptic Curve and Pairing Library</title>
    <author >
      <organization>University of Tsukuba</organization>
    </author>
    <date year="2013"/>
  </front>
</reference>
<reference anchor="AMCL" target="https://github.com/apache/incubator-milagro-crypto">
  <front>
    <title>The Apache Milagro Cryptographic Library (AMCL)</title>
    <author >
      <organization>The Apache Software Foundation</organization>
    </author>
    <date year="2016"/>
  </front>
</reference>
<reference anchor="Intel-IPP" target="https://software.intel.com/en-us/ipp-crypto-reference-arithmetic-of-the-group-of-elliptic-curve-points">
  <front>
    <title>Developer Reference for Intel Integrated Performance Primitives Cryptography 2019</title>
    <author >
      <organization>Intel Corporation</organization>
    </author>
    <date year="2018"/>
  </front>
</reference>
<reference anchor="BLS48" target="https://github.com/mk-math-kyushu/bls48">
  <front>
    <title>bls48 - C++ library for Optimal Ate Pairing on BLS48</title>
    <author >
      <organization>Kyushu University</organization>
    </author>
    <date year="2017"/>
  </front>
</reference>


    </references>


<section anchor="comp_pairing" title="Computing Optimal Ate Pairing">

<t>Before presenting the computation of optimal Ate pairing e(P, Q) 
satisfying the properties shown in <xref target="pairing"/>, 
we give subfunctions used for pairing computation.</t>

<t>The following algorithm Line_Function shows the computation of the line function.
It takes A = (A[1], A[2]), B = (B[1], B[2]) in G_2 
and P = ((P[1], P[2])) in G_1 as input and outputs an element of G_T.</t>

<figure><artwork><![CDATA[
    if (A = B) then
        l := (3 * A[1]^2) / (2 * A[2]);
    else if (A = -B) then
        return P[1] - A[1];
    else
        l := (B[2] - A[2]) / (B[1] - A[1]);
    end if;
    return (l * (P[1] -A[1]) + A[2] -P[2]);
]]></artwork></figure>

<t>When implementing the line function, implementers should consider the isomorphism of E and its twisted curve E’ so that one can reduce the computational cost of operations in G_2. We note that the function Line_function does not consider such isomorphism.</t>

<t>Computation of optimal Ate pairing for BN curves uses Frobenius map.
Let a Frobenius map pi for a point Q = (x, y) over E’ be pi(p, Q) = (x^p, y^p).</t>

<section anchor="optimal-ate-pairings-over-barreto-naehrig-curves" title="Optimal Ate Pairings over Barreto-Naehrig Curves">

<t>Let c = 6 * t + 2 for a parameter t and c_0, c_1, … , c_L in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, …, L) equals to c.</t>

<t>The following algorithm shows the computation of optimal Ate pairing over Barreto-Naehrig curves.
It takes P in G_1, Q in G_2, an integer c, c_0, …,c_L in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, …, L) equals to c, and an order r as input, and outputs e(P, Q).</t>

<figure><artwork><![CDATA[
    f := 1; T := Q;
    if (c_L = -1)
        T := -T;
    end if
    for i = L-1 to 0
        f := f^2 * Line_function(T, T, P); T := 2 * T;
        if (c_i = 1 | c_i = -1)
            f := f * Line_function(T, c_i * Q); T := T + c_i * Q;
        end if
    end for
    Q_1 := pi(p, Q); Q_2 := pi(p, Q_1);
    f := f * Line_function(T, Q_1, P); T := T + Q_1;
    f := f * Line_function(T, -Q_2, P);
    f := f^{(p^k - 1) / r}
    return f;
]]></artwork></figure>

</section>
<section anchor="optimal-ate-pairings-over-barreto-lynn-scott-curves" title="Optimal Ate Pairings over Barreto-Lynn-Scott Curves">

<t>Let c = t for a parameter t and c_0, c_1, … , c_L in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, …, L) equals to c.
The following algorithm shows the computation of optimal Ate pairing over Barreto-Lynn-Scott curves.
It takes P in G_1, Q in G_2, a parameter c, c_0, c_1, …, c_L in {-1,0,1} such that the sum of c_i * 2^i (i = 0, 1, …, L), 
and an order r as input, and outputs e(P, Q).</t>

<figure><artwork><![CDATA[
    f := 1; T := Q;
    if (c_L = -1)
        T := -T;
    end if
    for i = L-1 to 0
        f := f^2 * Line_function(T, T, P); T := 2 * T;
        if (c_i = 1 | c_i = -1)
            f := f * Line_function(T, c_i * Q, P); T := T + c_i * Q;
        end if
    end for
    f := f^{(p^k - 1) / r};
    return f;
]]></artwork></figure>

</section>
</section>
<section anchor="test-vectors-of-optimal-ate-pairing" title="Test Vectors of Optimal Ate Pairing">

<t>We provide test vectors for Optimal Ate Pairing e(P, Q) given in <xref target="comp_pairing"/> for the curves BN462, BLS12-381 and BLS48-581 given in <xref target="secure_params"/>.
Here, the inputs P = (x, y) and Q = (x’, y’) are the corresponding base points BP and BP’ given in <xref target="secure_params"/>.</t>

<t>For BN462 and BLS12-381, Q = (x’, y’) is given by</t>

<figure><artwork><![CDATA[
    x' = x'0 + x'1 * u and
    y' = y'0 + y'1 * u,
]]></artwork></figure>

<t>where u is a indeterminate and x’0, x’1, y’0, y’1 are elements of F_p.</t>

<t>For BLS48-581, Q = (x’, y’) is given by</t>

<figure><artwork><![CDATA[
    x' = x'0 + x'1 * u + x'2 * v + x'3 * u * v 
        + x'4 * w + x'5 * u * w + x'6 * v * w + x'7 * u * v * w and 
    y' = y'0 + y'1 * u + y'2 * v + y'3 * u * v 
        + y'4 * w + y'5 * u * w + y'6 * v * w + y'7 * u * v * w,
]]></artwork></figure>

<t>where u, v and w are indeterminates and x’0, …, x’7 and y’0, …, y’7 are elements of F_p.
The representation of Q = (x’, y’) given below is followed by <xref target="IEEE-1363a-2004"/>.</t>

<t>BN462:</t>

<t><list style="hanging">
  <t hangText='Input x value:'>
  0x17f1d3a7 3197d794 2695638c 4fa9ac0f c3688c4f 9774b905 a14e3a3f 
171bac58 6c55e83f f97a1aef fb3af00a db22c6bb</t>
  <t hangText='Input y value:'>
  0x08b3f481 e3aaa0f1 a09e30ed 741d8ae4 fcf5e095 d5d00af6 00db18cb 
2c04b3ed d03cc744 a2888ae4 0caa2329 46c5e7e1</t>
  <t hangText='Input x’0 value:'>
  0x0257 ccc85b58 dda0dfb3 8e3a8cbd c5482e03 37e7c1cd 96ed61c9 
13820408 208f9ad2 699bad92 e0032ae1 f0aa6a8b 48807695 468e3d93 
4ae1e4df</t>
  <t hangText='Input x’1 value:'>
  0x1d2e 4343e859 9102af8e dca84956 6ba3c98e 2a354730 cbed9176 
884058b1 8134dd86 bae555b7 83718f50 af8b59bf 7e850e9b 73108ba6 
aa8cd283</t>
  <t hangText='Input y’0 value:'>
  0x0a06 50439da2 2c197951 7427a208 09eca035 634706e2 3c3fa7a6 
bb42fe81 0f1399a1 f41c9dda e32e0369 5a140e7b 11d7c337 6e5b68df 
0db7154e</t>
  <t hangText='Input y’1 value:'>
  0x073e f0cbd438 cbe0172c 8ae37306 324d44d5 e6b0c69a c57b393f 
1ab370fd 725cc647 692444a0 4ef87387 aa68d537 43493b9e ba14cc55 
2ca2a93a</t>
  <t hangText='Input x’ value:'>
  0x041b04cb e3413297 c49d8129 7eed0759 47d86135 c4abf0be 9d5b64be 
02d6ae78 34047ea4 079cd30f e28a68ba 0cb8f7b7 2836437d c75b2567 
ff2b98db b93f68fa c828d822 1e4e1d89 475e2d85 f2063cbc 4a74f6f6 
6268b6e6 da1162ee 055365bb 30283bde 614a17f6 1a255d68 82417164 
bc500498</t>
  <t hangText='Input y’ value:'>
  0x0104fa79 6cbc2989 0f9a3798 2c353da1 3b299391 be45ddb1 c15ca42a 
bdf8bf50 2a5dd7ac 0a3d351a 859980e8 9be676d0 0e92c128 714d6f3c 
6aba56ca 6e0fc6a5 468c12d4 2762b29d 840f13ce 5c3323ff 016233ec 
7d76d4a8 12e25bbe b2c25024 3f2cbd27 80527ec5 ad208d72 24334db3 
c1b4a49c</t>
  <t hangText='Output e(P, Q):'>
  0x3c8193be d979f4ea 5012851f 2eb824ba 7d21f584 5c041641 0f26a097 
72ab76e9 153ad0df 012c6aad b90b2db7 91b4865d c0dce2a1 deec6844 
03bc919a 350d0077 25f4aaf2 eb1c6a6a 84c3d68b 3eb71c8f 6d21a669 
6d3b70b8 2ab34ca3 d8e362f8 570aeec9 78d92761 54940920 d459438e 
2141831f e6813bda 88f0a239 d693499f 07806c58 8498a881 870a313a 
26c03629 44f48955 25034b30 becb184d 52e0d806 62215750 4c392059 
308a3ab6 0f567fce 39169b96 36932988 abb8689f 709a4ad2 6ebc8dc2 
65f79386 19357015 cf8aebec 069412b8 82dd79bf 112713ec 241d5e20 
d6003b61 4943d666 403cb445 8e4ac7b8 800873eb 55d6e5aa bb6398c1 
c0f349f0 9e4ba501 f239e3f5 4d09ad61 40452545 f07a20d5 3d075b26 
30fefb61 f46eae73 4a0098c1 b7b7baf5 33a6072a 5e288590 cfb0c85b 
4edf7be9 06e01b4f 023387d8 5e9ca9aa 70ec3b5c c1acb450 685f4134 
5391a237 182295b9 fe23ebbb f8485065 da74c4a5 91a01f3e 5e3c5710 
337c050b 01c17724 d7cc02b4 f0f512da 2af14526 0028235d e26fe897 
7bc0a2e5 7c183729 661ed63f aef45700 78e30f16 d09e1c58 888e561d 
a1cb4adb 1390360d d8d7b7b5 f097b0e0 7c988743 001eb5d1 50da6218 
428c960f 10441667 e4ce905c e9cb9176 987e1731 403181b2 d197c267 
27f8fef0 0a612956 a43b172f ea11ba6f 660be51f 12c1f80a 3697b28b 
4d685ab6 7816e4b9 a8265a21 825a059d b092cfc1 cc28d142 8988b01a 
3ec9a14b 8b95bf1d 3d111be3 82848f2c 1e9ae9fe dbefb52e 8eba88ea 
17ad2e37 30ba6d0e fcd916de 43c1666f 3b25cd7f e72147f4 5e6c55cc 
701a6469 1426d6cd 9fbbe831 6a00537a 53650496 d27c2819 4b5c1d2c 
4909bcf0 06ab5e0f 90fd82a1 4e45c5d0 08448080 154b4723 b44bbc0d 
48911427 dbc54e0c 0d41a043 6a1c2d36 252b921a 2560ddcc ad362cb9 
02f79d7f 1210ddac 950bf406 d0f0c79f 299bcebd</t>
</list></t>

<t>BLS12-381:</t>

<t><list style="hanging">
  <t hangText='Input x value:'>
  0x17f1d3a7 3197d794 2695638c 4fa9ac0f c3688c4f 9774b905 a14e3a3f 
171bac58 6c55e83f f97a1aef fb3af00a db22c6bb</t>
  <t hangText='Input y value:'>
  0x08b3f481 e3aaa0f1 a09e30ed 741d8ae4 fcf5e095 d5d00af6 00db18cb 
2c04b3ed d03cc744 a2888ae4 0caa2329 46c5e7e1</t>
  <t hangText='Input x’0 value:'>
  0x24aa2b2 f08f0a91 26080527 2dc51051 c6e47ad4 fa403b02 
b4510b64 7ae3d177 0bac0326 a805bbef d48056c8 c121bdb8</t>
  <t hangText='Input x’1 value:'>
  0x13e02b60 52719f60 7dacd3a0 88274f65 596bd0d0 9920b61a 
b5da61bb dc7f5049 334cf112 13945d57 e5ac7d05 5d042b7e</t>
  <t hangText='Input y’0 value:'>
  0xce5d527 727d6e11 8cc9cdc6 da2e351a adfd9baa 8cbdd3a7 
6d429a69 5160d12c 923ac9cc 3baca289 e1935486 08b82801</t>
  <t hangText='Input y’1 value:'>
  0x606c4a0 2ea734cc 32acd2b0 2bc28b99 cb3e287e 85a763af 
267492ab 572e99ab 3f370d27 5cec1da1 aaa9075f f05f79be</t>
  <t hangText='Input x’ value:'>
  0x204d9ac 05ffbfeb ac60c8f3 e4143831 567c7063 d38b0595 9c12ec06 
3fd7b99a b4541ece faa3f0ec 1a0a33da 0ff56d7b 45b2ca9f f8adbac4 
78790d52 dc45216b 3e272dce a7571e71 81b20335 695608a3 0ea1f83e 
53a80d95 ad3a0c1e 7c4e76e2</t>
  <t hangText='Input y’ value:'>
  0x09cb66a fff60c18 9da2c655 d4eccad1 5dba53e8 a3c89101 aba0838c 
17ad69cd 096844ba 7ec246ea 99be5c24 9aea2f05 c14385e9 c53df5fb 
63ddecfe f1067e73 5cc17763 97138d4c b2ccdfbe 45b5343e eadf6637 
08ae1288 aa4306db 8598a5eb</t>
  <t hangText='Output e(P, Q):'>
  0x1099133 07699946 ffb01bb6 a8708efd ae7a380d 3d0eeed9 b73440e4 
6ba128c4 db75a7b2 1df4cabb a9722393 01955454 f8e43f34 37f83953 
557f251d 93c11e38 91134da9 e9d0a017 db6bbef8 f9f00689 b05a4e7b 
66ca3b5e bd345258 f776e9e1 117e41ec 69120956 0e0ac469 921183f4 
76c8dc14 0d30c301 a7a673e4 fc51655e 0c4130e5 47e1f648 386a1555 
7ab73dd7 b113ee92 60869568 7dd9cb79 5060647e feac9894 c0049ab3 
4f1cbdea c9527013 ef5810ec f5672692 74a0425a ff778592 49fdd23a 
af67e366 5c40a2b9 4a0aae91 112fb6aa d05ac5ca 8e3fa0bc 6b185c94 
447d2368 136ba383 bbec5528 af53f298 1628ba4b 906e54f0 60383b92 
fc46f84e 2e7c50d7 9cf7ff6d 21e81a67 15b31a66 0aa418ea de81887e 
c995285a 656d0a43 208ef518 27fd935a 1d617142 ad008f36 15201e00 
017154ac 5aee4c2d aa96433f 97cc4705 59f94d64 dcf4c69c fc254475 
d1365bc4 a3d18524 be1f6a7a cd1ad2e6 4a901e5c f97c6291 efa4951c 
dba232e2 172c7e94 4c89f6fc f6074d23 f41ea7ed 783be9ba ace67ae2 
7e9c682f d8fc347e 533d5e2e 550b72ee ee9f250f 427ac1f1 a0bb315e 
e5582635 065ec196 f68776ab 97cdd86e 9f1117b3 873800a1 9c2221c9 
3a810a71 7fb6ae09 a8eac52d 707158c7 83d45b9e ec3adfa8 3b626448 
60679b2e e242888d c0ae8c3f 7a4e2c5f 8d9060b8 4b7c53c2 3992b502 
15170d86 a8a1a1e6 2737e951 647ce587 2379cc01 ab977532 cefddf85 
39a8223f 3df88acc dd1c9fa2 c66227b9 5549471b 462370aa 61b58c57 
e9035ef9 0d630357 d852eaa3</t>
</list></t>

<t>BLS48-581:</t>

<t><list style="hanging">
  <t hangText='Input x value:'>
  0x02 af59b7ac 340f2baf 2b73df1e 93f860de 3f257e0e 86868cf6 1abdbaed 
ffb9f754 4550546a 9df6f964 5847665d 859236eb dbc57db3 68b11786
cb74da5d 3a1e6d8c 3bce8732 315af640</t>
  <t hangText='Input y value:'>
  0x0c efda44f6 531f91f8 6b3a2d1f b398a488 a553c9ef eb8a52e9 91279dd4 
1b720ef7 bb7beffb 98aee53e 80f67858 4c3ef22f 487f77c2 876d1b2e
35f37aef 7b926b57 6dbb5de3 e2587a70</t>
  <t hangText='Input x’ value:'>
  0x5 d615d9a7 871e4a38 237fa45a 2775deba bbefc703 44dbccb7 
de64db3a 2ef156c4 6ff79baa d1a8c422 81a63ca0 612f4005 03004d80 
491f5103 17b79766 322154de c34fd0b4 ace8bfab + 
0x7 c4973ece 22585120 69b0e86a bc07e8b2 2bb6d980 e1623e95 
26f6da12 307f4e1c 3943a00a bfedf162 14a76aff a62504f0 c3c7630d 
979630ff d75556a0 1afa143f 1669b366 76b47c57 * u + 
0x1 fccc7019 8f1334e1 b2ea1853 ad83bc73 a8a6ca9a e237ca7a 
6d6957cc bab5ab68 60161c1d bd19242f fae766f0 d2a6d55f 028cbdfb 
b879d5fe a8ef4cde d6b3f0b4 6488156c a55a3e6a * v + 
0xb e2218c25 ceb6185c 78d80129 54d4bfe8 f5985ac6 2f3e5821 
b7b92a39 3f8be0cc 218a95f6 3e1c776e 6ec143b1 b279b946 8c31c525 
7c200ca5 2310b8cb 4e80bc3f 09a7033c bb7feafe * u * v + 
0x3 8b91c600 b35913a3 c598e4ca a9dd6300 7c675d0b 1642b567 
5ff0e7c5 80538669 9981f9e4 8199d5ac 10b2ef49 2ae58927 4fad55fc 
1889aa80 c65b5f74 6c9d4cbb 739c3a1c 53f8cce5 * w + 
0xc 96c7797e b0738603 f1311e4e cda088f7 b8f35dce f0977a3d 
1a58677b b0374181 81df6383 5d28997e b57b40b9 c0b15dd7 595a9f17 
7612f097 fc796091 0fce3370 f2004d91 4a3c093a * u * w + 
0xb 9b7951c6 061ee3f0 197a4989 08aee660 dea41b39 d13852b6 
db908ba2 c0b7a449 cef11f29 3b13ced0 fd0caa5e fcf3432a ad1cbe43 
24c22d63 334b5b0e 205c3354 e41607e6 0750e057 * v * w + 
0x8 27d5c22f b2bdec52 82624c4f 4aaa2b1e 5d7a9def af47b521 
1cf74171 9728a7f9 f8cfca93 f29cff36 4a7190b7 e2b0d458 5479bd6a 
ebf9fc44 e56af2fc 9e97c3f8 4e19da00 fbc6ae34 * u * v * w</t>
  <t hangText='Input y’ value:'>
  0x0 eb53356c 375b5dfa 49721645 2f3024b9 18b42380 59a577e6 
f3b39ebf c435faab 0906235a fa27748d 90f7336d 8ae5163c 1599abf7 
7eea6d65 9045012a b12c0ff3 23edd3fe 4d2d7971 + 
0x2 84dc7597 9e0ff144 da653181 5fcadc2b 75a422ba 325e6fba 
01d72964 732fcbf3 afb096b2 43b1f192 c5c3d189 2ab24e1d d212fa09 
7d760e2e 588b4235 25ffc7b1 11471db9 36cd5665 * u + 
0xb 36a201dd 008523e4 21efb703 67669ef2 c2fc5030 216d5b11 
9d3a480d 37051447 5f7d5c99 d0e90411 515536ca 3295e5e2 f0c1d35d 
51a65226 9cbc7c46 fc3b8fde 68332a52 6a2a8474 * v + 
0xa ec25a462 1edc0688 223fbbd4 78762b1c 2cded336 0dcee23d 
d8b0e710 e122d274 2c89b224 333fa40d ced28177 42770ba1 0d67bda5 
03ee5e57 8fb3d8b8 a1e53373 16213da9 2841589d * u * v + 
0xd 209d5a22 3a9c4691 6503fa5a 88325a25 54dc541b 43dd93b5 
a959805f 1129857e d85c77fa 238cdce8 a1e2ca4e 512b64f5 9f430135 
945d137b 08857fdd dfcf7a43 f47831f9 82e50137 * w + 
0x7 d0d03745 736b7a51 3d339d5a d537b904 21ad66eb 16722b58 
9d82e205 5ab7504f a83420e8 c270841f 6824f47c 180d139e 3aafc198 
caa72b67 9da59ed8 226cf3a5 94eedc58 cf90bee4 * u * w + 
0x8 96767811 be65ea25 c2d05dfd d17af8a0 06f364fc 0841b064 
155f14e4 c819a6df 98f425ae 3a2864f2 2c1fab8c 74b2618b 5bb40fa6 
39f53dcc c9e88401 7d9aa62b 3d41faea feb23986 * v * w + 
0x3 5e2524ff 89029d39 3a5c07e8 4f981b5e 068f1406 be8e50c8 
7549b6ef 8eca9a95 33a3f8e6 9c31e97e 1ad0333e c7192054 17300d8c 
4ab33f74 8e5ac66e 84069c55 d667ffcb 732718b6 * u * v * w</t>
  <t hangText='Input x’ value:'>
  0x01 690ae060 61530e31 64040ce6 e7466974 a0865edb 6d5b825d f11e5db6
b724681c 2b5a805a f2c7c45f 60300c3c 4238a1f5 f6d3b644 29f5b655
a4709a8b ddf790ec 477b5fb1 ed4a0156 dec43f7f 6c401164 da6b6f9a
f79b9fc2 c0e09d2c d4b65900 d2394b61 aa3bb48c 7c731a14 68de0a17
346e34e1 7d58d870 7f845fac e35202bb 9d64b5ef f29cbfc8 5f5c6d60
1d794c87 96c20e67 81dffed3 36fc1ff6 d3ae3193 dec00603 91acb681
1f1fbde3 8027a0ef 591e6b21 c6e31c5f 1fda66eb 05582b6b 0399c6a2
459cb2ab fd0d5d95 3447a927 86e194b2 89588e63 ef1b8b61 ad354bed
299b5a49 7c549d7a 56a74879 b7665a70 42fbcaf1 190d915f 945fef6c
0fcec14b 4afc403f 50774720 4d810c57 00de1692 6309352f 660f26a5
529a2f74 cb9d1044 0595dc25 d6d12fcc e84fc565 57217bd4 bc2d645a
b4ca167f b812de7c acc3b942 7fc78212 985680b8 83bf7fee 7eae0199
1eb7a52a 0f4cbb01 f5a8e3c1 6c41350d c62be2c1 9cbd2b98 d9c9d268
7cd811db 7863779c 97e9a15b d6967d5e b21f972d 28ad9d43 7de41234
25249319 98f280a9 a9c799c3 3ff8f838 ca35bdde bbb79cdc 2967946c
c0f77995 411692e1 8519243d 5598bdb4 623a11dc 97ca3889 49f32c65
db3fc6a4 7124bd5d 063549e5 0b0f8b03 0d3a9830 e1e3bef5 cd428393
9d33a28c fdc3df89 640df257 c0fc2544 77a9c8ef f69b57cf f042e6fd
1ef3e293 c57beca2 cd61dc44 838014c2 08eda095 e10d5e89 e705ff69
07047895 96e41969 96508797 71f58935 d768cdc3 b55150cc a3693e28
33b62df3 4f1e2491 ef8c5824 f8a80cd8 6e65193a</t>
  <t hangText='Input y’ value:'>
  0x00 951682f0 10b08932 b28b4a85 1ec79469 f9437fc4 f9cfa8cc dec25c3c
c847890c 65e1bcd2 df994b83 5b71e49c 0fc69e6d 9ea5da9d bb020a9d
fb2942dd 022fa962 fb0233de 016c8c80 e9387b0b 28786785 523e68eb
7c008f81 b99ee3b5 d10a72e5 321a09b7 4b39c58b 75d09d73 e4155b76
dc11d8dd 416b7fa6 3557fcdd b0a955f6 f5e0028d 4af2150b fd757a89
8b548912 e2c0c6e5 70449113 fcee54cd a9cb8bfd 7f182825 b371f069
61b62ca4 41bfcb3d 13ce6840 432bf8bc 4736003c 64d695e9 84ddc2ef
4aee1747 044157fd 2f9b81c4 3eed97d3 45289899 6d24c66a ad191dba
634f3e04 c89485e0 6f8308b8 afaedf1c 98b1a466 deab2c15 81f96b6f
3c64d440 f2a16a62 75000cf3 8c09453b 5b9dc827 8eabe442 92a154dc
69faa74a d76ca847 b786eb2f d686b9be 509fe24b 8293861c c35d76be
88c27117 04bfe118 e4db1fad 86c2a642 4da6b3e5 807258a2 d166d3e0
e43d15e3 b6464fb9 9f382f57 fd10499f 8c8e11df 718c98a0 49bd0e5d
1301bc9e 6ccd0f06 3b06eb06 422afa46 9b5b529b 8bba3d4c 6f219aff
e4c57d73 10a92119 c98884c3 b6c0bbcc 113f6826 b3ae70e3 bbbaadab
3ff8abf3 b905c231 38dfe385 134807fc c1f9c19e 68c0ec46 8213bc9f
0387ca1f 4ffe406f da92d655 3cd4cfd5 0a2c895e 85fe2540 9ffe8bb4
3b458f9b efab4d59 bee20e2f 01de48c2 affb03a9 7ceede87 214e3bb9
0183303b 672e50b8 7b36a615 34034578 db0195fd 81a46beb 55f75d20
049d044c 3fa5c367 8c783db3 120c2580 359a7b33 cac5ce21 e4cecda9
e2e2d6d2 ff202ff4 3c1bb2d4 b5e53dae 010423ce</t>
  <t hangText='Output e(P, Q):'>
  0x276 43363d8d 5bcd15f0 b28c5097 eef37de3 71c67b59 9c1edb17 
6719754f f47a6ea7 5ad80480 617a2769 333ed4d1 89c7e90b 36a7f3c9 
873a13af f7cd1604 7a3c7fdc bf0c8471 bb510164 94c2e075 1da368ed 
41b9c2ae 12694b36 3abc6e6e 4f179278 71d4d68d b391f9be d8df5283 
1e6efe0a fa3816fd 8387ca11 5d2cba0c 16a34759 0cea2fa9 d358712d 
cf6c023a d4f5dfb9 ffd8cb2e 2778e6f6 95185e58 e2d81c2f 0cebcc27 
0e0fae67 8f758ef6 e319d634 f860a03f 10953e20 3c7e419f 9eb8a0b1 
af2890b2 b4182d8a f9fcbd41 0527e637 8c1a5aca 0ea8c085 e2784e78 
7c1e4712 fd891dc6 c20e5c72 a2b899cd 21aede46 358bc4c0 17270f72 
3cc29866 17fbabd4 b9c24ff7 44b9a032 1a2ebb39 2034d2ae 4d415eb8 
fd45330e 8fae1c93 f5d8849f 558e14dc f20e60b5 19122407 cdb876b2 
eb7897a8 9a602b0c 61093e87 d7dfc7c1 5cacf77a 9c71e9ea e43a6dfb 
fa4f68b8 9019f394 5caf71c1 9682779c 533e0ce0 002c16cf 123d3aff 
b99103d0 4d3fdb2a 6a1682ab 3a34cc41 7f369850 a22db3a6 c5b2d34b 
e0e97fa1 eb9e7d6e 45431e64 e6f0d20b f725cb43 23807531 fca7994a 
1447bb9c 1fc39fa8 87750f53 76c69ecb 8c58c70f f11a9f6d 5f5f780a 
831be9a6 1729ee17 78f050d6 c2afcdda 6cab13bd 952de323 222fbaea 
4638e029 5fbd5b8f 5c60ee91 429b078f 36f3dc2b e436236d 5fd2282c 
ff620325 2456f683 4b9aea62 12d9d478 ddcdb1fc 0537db30 5cc854f3 
9aca8619 38d0aab5 53f0d449 f4ca5bc7 653101b8 f90b70c9 41bbcd9e 
7775f810 2009c9c4 f268e0d1 5305c287 41d048b1 78f1f8ce 599c66aa 
e2401d1f 29e4987d e3d448ab b6462856 fe880511 8fe5d21a e5ce44bb 
a7eef2ac 2cd4138a b98152a0 8028275f a08a6d3e fe9344d1 6945016d 
e83c7287 fff6b6aa 95cf2757 c27ca48e ce8b8397 da3eb8f9 95550853 
43aba175 5660283b 5ea74e5e 52652818 4d100002 192e2440 61f917ef 
f3331617 cc10bd27 6167ec72 579a9421 40e1c538 858e84e5 b7585b17 
b0eb8bd4 5b8915d4 48bfe906 1fed09aa 7b91e299 b394ccf8 7c5fbb4c 
65ed6ab0 56f33c8b db82aea1 baad3f34 25b457e0 fe6a6193 0d4dd22a 
e7e1e394 6a655c72 564b4b65 d701a680 c6ccf3fe 88a1327d 3399523a 
06e9d2ad 2ecbb9ed 9518634d 2201150f 7133381b d1311540 2f482e17 
15b68876 f448c6e0 ff0dfec5 d3174ee8 026f7377 8692c617 82236066 
e74b7099 6fa41dae b068c9a7 8f5d8b59 655985e0 bd6e3785 b5846f7e 
721339e6 788731c2 4b80e26d d1182223 b669ad45 35e536f3 df711c31 
f1aa0227 18fdb6e8 b7ad06c7 64785050 7b3c6a7e 454dc498 b86769bd 
1fe57aa7 959f972e 8edb1326 b2a4233a 5d7e34d3 2c545b92 415b1944 
3339642d 441fd7ef ab7e16ee aebc422d 92c614c4 85e5e18e c3b990db 
473a2dc2 7277c5cc 408c42d8 e1615de5 151a4eba 594c8d98 27f4b14e 
38e3afd1 302aa4f8 6ad4d4ce 621f5de7 7b7f04b8 fa3ca11c d701eee9 
f7094ac3 24259670 5a30ccf2 dbf32491 074ee2ad e6595c11 71cf54d1 
2ebad23e 383624b5 63c1eba7 a76e4002 f1cdd4a0 e1f8c24e 9227aa53 
b56e077e d371babd 5935c20c d64ea0a0 45037849 98089570 7a54167f 
68abcc8e 06d4d4b1 027b6cda 799ceaa2 b254b9ea 7f34a437 8417e12a 
1bef63ac 3dd3b156 41f92e83 911ac76d 4ebfaaca bdf0f81e ba243180 
cf9a12d4 0f188a82 2d427533 a06969e9 b15ded57 85971636 f9f980e7 
27b22628 97ccb665 a3857ab7 754c2bac 6627a5b1 8fc419da 14b8bb5f 
2fe3d29c 62f8be1f bdd078d6 529087e3 002039da 3c193038 3d5582d2 
9d061c87 d68acf45 618f7da2 65194f7f 02fae405 b0c08687 15df1c3f 
af6b71df 7331b79c 0e9fe708 c05ff1cb 11a14b68 684a04a3 38359484 
cb994dc2 f4322928 17a1fd00 c12dae52 f8d151c6 fe34b3dc c9ca7eb5 
59d44baa f58cf94f 0646c469 4c49e3f1 81e0b1fb 382056aa 771c4118 
33d7cfbf 8212bc96 ee303dfc 15623717 c814fd49 e9355f48 a480af44 
bd7d2c94 031d9881 456a9eab 57e43962 668f1797 3cfa0e9a 075d94e3 
db2ad9c0 6d4a2ee8 db81db28 62af5f2e ac946630 f61a8ab1 b868469a 
9f7c2886 7c45cf5d 801bbbd7 4ecf2fce cd6c9939 865d7e27 dbe56fbf 
f5321cd8 29acf9c3 16c24778 ecc263e4 91cf8ed0 b23e1f2e c9bf0036 
e9f4442a d14db499 7daf8f4d bd4e7e7d 96fa32f0 474e04aa dced225e 
9b723462 900cb340 9320dfd8 54181422 d8135667 897d62cc 15a7e844 
b72f713b 983e33f2 017417fc ef9d384f 58600b02 2fbd93bb 2b405b74 
896acdc3 2b5c459a 4584aea9 3facf3d4 1c103d85 38fef57a 8ff66715 
f84aab22 d6b2613c ee764038 579a5334 b212a15b 9ddc3914 524f85a8 
89ed7cac 72bd23df ee819cb2 073f64a1 bd7a5b30 3119a571 5bae052c 
7b71b023 0d941d65 bd186322 7935eb6b 0b648608 d044a254 9edddae2 
46f935c6 82bf9200 9fb1d1e4 204a3946 8138e0dd 73b5c451 8c14faf2 
69b7a50d 2c187367 748aff27 ee960ef2 92bbbcaa 86db4f6d ca77dd66 
1eca3fbf be11e012 87b40aeb 81fea4a2 0f8870dd fc910b80 e9fa9a7f 
3949fbf9 e100c790 26256ffe 35b0b427 e9bf6364 616b3e44 45ba35fc 
3c65c442 49544aea 848b2577 8a7d3ced 9a3393cf 6aab49f7 337cda34 
dfa94fb7 6283645f 7551a49f 0fc0960d b6538505 374bc05e ba88344a 
27710517 00aaed45 6ebe28d2 f987ac36 3dd8a339 5617100c 00355ad3 
0a22cd13 34e32157 be954065 4fa2841e b370760f 182d8d8f 11380d0d 
d358c2be b3c2a9b1 c791a142 36dec80d eaabf2fa d5076703 649c4c67 
091e366c 593d5ad7 63598a8a 64bb95c9 1c5d4c1c f3941094 9bc3e0ae 
5eaa0e4c afb2e520 3da18549 5f81c36e 309e807a d6b5679b 1978ba41 
582c3c75 0d703e95 d77e479d 433867d0 fbe6c074 51984815 0fcec435 
1c912ded 64844bf1 e2e966fa f64c520e 89517fa9 2996536a f096c440 
7da5c1b1 bee0f040 cb440d00 95fb43a3 e1ee5846 ccdb0e06 8a8086c0 
3c2668ab e161554e fb4f0b19 75df1d81 8cd38614 2e343186 162cce43 
c9d05212 ddcad50e 10bdd365 9007f156 dcfd40e2 7b36baef 4cd5184b 
71f5c342 bf3b39e3 d0f145f6 515f2eed b926c999 53af0491 68376477 
632b7435 5d180b72 109e4049 323d0517 67ec3b58 58c545d8 ed85e074 
c839558e efaecfea 112062bb 9e000d82 2fad823c 2f59387a 62687738 
fb74c5e1 24b75fc6 384bd4e9 450ad801 db149c4e 89a02a14 45504e84 
e9d44b83 04ce52ea 513e923e 40c833ee 663a23fc 64365cc3 ef8abecd 
e2c35900 9712dec9 511e11e2 82685a62 5580ce56 e517ab30 10cc21d2 
b4a656e3 a5babb90 0a1678ee ef9ad5a0 46a8cf8e d82c25b4 29c08d2f 
f6f3f515 7d589d84 230378a4 5649de30 2ddb5da6 b05790df 8fe450e7 
bc583abc 7aaa9b83 1fa93a64 a12c379a f6cab1c9 a6cdf3ea 44a651ce 
c8d9f607 ab050904 5c6583c3 c3827c0b 990c4d93 63139193 cbdf158a 
50b8f989 166865db bb6d6658 7b7f2785 f2fd4810 ceb085af 5cabc661 
2e5544f1 d0de7ceb a1803095 03e62544 9749619c 619dd15e 190f46bf 
75788250 304f3214 460acd9b a78d1626 b75ebeeb 8f08b9d1 cb6183d1 
fcf37b1f ff2cd490 9b05070c cf3d2275 266a42a3 1e5204d1 55ce1587 
7cd4e0c6 afa46a05 50be923f 66b6be18 93383dd7 9d231d99 7fa9a89d 
039b96f0 a3bb28d9 8080706f dd87ebba ffd5199a a5c0a01e 351c6d9e 
4a93c3cd 4bc9eeba afb0bffe 7d9e2d79 6979dedc 16d9964a 449de47c 
a4b04db2 a192e96e 396ed228 6c8cfc6d 584dbbea b100d82e 97ba3c88 
e29a2e56 3e30760d b21ae180 ef884967 22ac5de8 77b85a80 5becaf51 
f0cf000e 27fc525d 2f665471 911153a6 d19cbc50 70c8404b fde12034 
254a1ab0 38d6626d c83e9652 b497cfec 9485a9ec 756b7c87 0995de42 
0e12b91c dc8664e4 1c760c71 d519381e ebc66a31 5b21429d 11591a5d 
6994abb8 d2f511c6 4f500fbe 7eaea507 b7492584 9338be99 84388212 
4a2c7dea c03ff2b8 b53e0459 dcf41296 e5a8574d c008f089 f47938c2 
789367c5 e27fc634 434a331c 8a227b49 b31ee9ec 5425407e 2c108f12 
7ca8324c f96dce1a 3227f6ec 4aea2d9b afa8c2e3 3de6b323 76c2f324 
a351e867 8e552ab8 077d1294 ec0954d2 b134cddc f2937952 a2c27f6a 
5cb719b6 a14c3908 4095b5d4 2ae8fce2 a7a13a1d b1d9c7b2 e1e07c0e 
7dbde19c 62c5eb6b 030faa55 c33b202a 56c15dd9 9fc289e1 4f33ba8b 
b68c36b0 944c14ef 52cc4078 426ddba5 abb05f32 05882c64 4adb6fbe 
0fe6b192 0f505b4a b163def7 8363d152 ca8855ad f93a84bc d7743570 
328ac022 cb287205 8f84e35d 416cb7d6 5a6a5a6c 26c54747 7a86dfa6 
c3f59dbb e3d1208c c3157177 7af026b2 4f8aab6c 167f6a60 4708e34a 
15c77c9c 5c1bf246 f287a8ab 4f128cf4 8f84cb96 43df8f6e ee07de97 
31c1b614 93a07041 b844e507 f8371476 d544c111 8553b3d6 c5bbfea5 
89e4939f 1a0786cb b3432aa8 23dd8b1f 360e5761 48aacd5d 859f8c6d 
b4d9ead2 5de7e396 2cfd47cd 40b33d31 51e1ab08 f521047a 51046218 
78a246b5 a0a675e6 d4c3315d 18a39dc8 456759fb b9a6bda2 cc73e391 
d050b7dd 4c1a2d73 e07b32fb e7201194 ac67c827 570c17f3 add5e58e 
d5951b91 64483445 d8c448ab 486dde3a c677443b 6ba8f7ac f2617058 
b65500a2 3caf76d8 3e0211d1 966b89a5 5a8dfaec c979a05b db64c10b 
aa802daa fb1cedeb d8eb3bbf 3eda50e5 a1e97398 b1e7112c d2d29d8e 
b71d66ad 1d39f85a f41da1cd 3a3330fc 8c7adfcc 91a13ce5 ab5b29cf 
0eb2cc0d 747fe5f1 588e10d1 be6ed505 2cf5ba84 a9ff273c 7b14c176 
3de0b128 f1a37cf7 46b27933 880550c2 56a0ac85 49a52ef3 fc0bc8a3 
eed01024 ddffe6fc 75d8e8ee 2fc302d4 aa3f556d c16852cb 53a373a7 
555b99a1 e914cbf8 55da764c</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAMmI10AA+y963YcN5ol+t9r+R0w9g9JVUwKQNzVp/oMdXOpLcm0qBpP
TamkhQAQYhaTmey8iKZVWmse5JyXO09y9gYiIiMvpOkqd3dNt9xdYmZkBC4f
vsvewAfEaDT68gs7c+Pp+wditWxG5ZdffPnFcryc+Afi2Izn+GH0dD72Uze5
Eo9W8w9+8eUXbman5hx3uLlplqOr2dT/ZC7N6KJ9oGkfGNnwwEhqPGOWeICl
jy/mD8RyvlostZQVfzNzbx6Il355OZufoYAvvzi7fCCeTZd+PvXL0WPWgmai
hPez+dUD4X+8YEGLpZm6d2aC6h+IKzbsYswqBP5bzmx7rf3m/MXy9IFI44XF
bL6c+2YxuGdxdb51Zel/XI4m48VyhN/q2QS/jWa/+S2rNqvl6Wz+IN43in/4
33iKm04OxR9bkax/iQI7OZ2dzfb8OptD/s/9xditztdX/bkZT9Cg9vb/Pok3
HNrZ4V8u9tf9+lB8O6vNlVmcjrcrf+2Xi9XSzGf7bgktePn69U7tZ929h8vu
+f8+MfXhdLn8mYacmPFyttOIxWrqz8xPq+2fr23AgvcdLrvntiv/8ovpbH5u
luMPvh2PV08faaWq9bdSFWn77X/4uaweiMffPTtU8lApWd1//ez1ITUR/yRp
Wap448OXMlvfJ2VxX6m8SpIyead1e8vzE6k370lGWSpHSZ6qZFS8U1W88duH
Kt+8ryrKUTLKcz3KEqnKUfpOy7bQx6rcvHchpUqzEW+rdClHWbzxxcmJKvaV
mqhqlCtdsAXtvd8++/bGe2U6Uu/SYJzTZleamazU+lueyXL4Lak2fuu+nRx9
++2TzhyDOUWv8tWJh1sYL6/ErBHLUy/Ox4vFeDYVFhfH1kzEws8/jK0Xd1/5
iTcLL1R276t1ORu2t6E9yTfHx+vL0eNoyG19DUWP/YKd3Hqej4rXJygjOVSl
RJWHyWE7JM9Ovnv25JFSRYGh3dMj/H4fN4juDlSZ3aa57XN7WpzdosXt0xDo
s27MIMSlt6fT2WT2/kqMRqIXdbg8/teVX/Dyt/5KnJupee/P/XTJK8dmvhTo
2wvcZ6bjxflCrFDpe2Hg+s79cj62gzLawfiX2epHKbeMRBZaS12+00m86dGj
E7mlegsltSxGUub4n1Kj1kqenvxByb1mkuoRLDjLoKSqtb0Xo+PxdGMszPy9
Xz4Qp8vlxeLB/fuXl5eH5+O5sRM4ivP78eMIvmNx/3x0MZ6OzOh8NVmOR42x
y9l89JOfz0Zn09nlxLv3fsRRg2ygjxTr6GI+QwyZTXa1uW3IkXgRSnsaShP/
y9PLdqWJo43SxHFb2s8pdXCkX72AJ7Wz5fKrbUX5qr3y+vjFg+sFESKtdxDC
xWqJIX0/n60uDqGA9+d+MVvNrb+/vDhHnKvnZn41Wlx4O27alt7f6e/rWJo4
npgltU68mLnVxIvn8XFxMnz8QDw152MAhzf/3//+f/ShxJ//9wBh7oOfCCkP
xCv/YRxMX6rDpLyNyXTVP+p6I75hd8Td14++ubcln83Hr7yZB9vKN6+fz6bE
BSeAB/689vNWF589/u4GmTZjNzOTydhMrQ+ipNQW4fLoAzo6mrsRHY8spI5X
vXXGjMwEAGa8PD3fuevwdHm+q11shnjy6PHRkTjqHhWjePmorT9I0V+KgJKE
1LfSqVeHGLGpQ4SdTrf16hq5lXvl9i+ryVX84Yfk0c/Z42UShPX61f1LX7N1
exTsqx98vWUvsK6pODp+JqBwwljrF8E1Ha/qCdwSndmjuXe830wWrXopiAkt
gnCg+PByLpS0a3Bin3QeH4qHZtKY6U+3fODoUDz6yS/Oxouv4uXbPfYvh+L3
M/iHxS2rwf2PDuF2p7d+Ar7j4S97Al35dnVu5re//fnYzG559zVqd9MjT/DI
aupgme9vqajVXkV9Yeb2NP7y5PjZ4xuMezFrlpegJIdjEJAYPfx0tFrcd7PL
6WRm3P3ww2jx/sdR/ERYzhARvRkZEIjJyCyXHhQlxI8W0ix21Z0sZwKoc0+c
fPM/I+mJX9lKRoq+UIFCxdG6UPisWOitsFEs+NFsfjGbh8d/kbd8+HwYmoma
T2YW5gY/DNgcrrX+4X9ZcIUbpPvTIW+4v8Yp9386W0zN/Gyx3wX+cGqWAqMh
fjobnbw8evXt4v/+j/JwjyazlWsmaMxNjq5Gpw5tf2vQn/ce2MJfjSLomo9O
Z5ej8XJEurvY4wK/8bPg1l7E2x/AS1yKZ0vxA++/HWh4CdCwQoT4YG7b++I2
cfHZ6PFhDW9yOqoni9Fi/H5qlqt5V+YTeO25X53fMPzn3o0Dgz2/fzG/WhC1
2ojKfPvwSI/kyNGJzy4IT0erCzYbCHC0+cTIu6y2Tam9lXJXiF1jBCKteLwu
T/whlCe+VgVixHFXpHiOIm8n21f0qHN3a8nu16uXsw8DwYbwDgO/nehMe/d9
N34/XprJeiQWIwRJDM7MngHJo72jrNTSq6ypfZXtSOlJA6w2plToXAJd8OJx
LFSc9IWGyAtfNGtG+P+TpTnz4uG6jltJ7eRQfDOb16vp7MOv5cgfnY7NDQJD
L05XdRAY7xy1E0z3N1R3j0sGrxfr39F88ei3vz1oCREZ69wTeCxns8nZeHkr
78v6uwmuv0dpjlbvAYDjT4+fPnv57PUfbxCAa8ZTsL8Aui5cMyJO9PP7LdTv
fh7Z2XThp4vV4hA37YijrUa8XjPL7z4w8gBzngRyiqjSFiBOrgDPzwlJD4W6
lVq8BgYy0zN/ay70YvbBnMIUbvcAoNwPYyLl8864nz158mSkkjwxAN8y3Yxq
/PHk9WPOB6WHVZp3dPPJo1d/PH79YEc4T8dTGMorj6C6FAjJLwy1JZCTEGTx
49FisTq/4JeoSvOri+Xs/dxcnF7dRnNizbfTmWR/ADPTFYY7/nY8myAquWI4
x1TJ+ydS6myUFaocKZJumVYqTXpq/vtXZbLLzNUoLTLw+FzqUfquHW5Ot6Vp
3jbx3E5uZ6Dw1avz8X3cvyNjXIOjPhKUsanBNemqGrNYim6+uTYLcEI7kKxo
dfy2nunFmPOLZj7eIdlDDHSi9Cgp1Q098hNvOVliZ+Mp+hXAwP2pvxwFiBPn
w/cE/HXRcBKXPdQRT6C5FwxOYeY92BnovN1PZa7p2sPZpf+7IMDA4b589Oib
G3pPjje1Ns4whHmH+4DNs9V8BD/qWcz9n4j+Rgh980ti5/na+QTMvDAXE47o
cCzxMJ3NHrEFrBm8USxs4IhCOIuFbZhcy5Zv5bTR2zi9sK0TvyhebZhfO5WY
wbWMsl130s8ktjdsjsnfMpM4ePzfYiZxINqNGUIRTRLF+E6F41pQP9mYPVhr
d/hJvPdTPx/S9BfPXh09en47/xHn9+7HR3bkGi9vtfbk8be3kW377POlO9wj
3zZMw90EC79dY4MR3O+e2dXrvjRhCD06ZxZQ2E9n0TVcEI3djvqdPHp2/Ir4
dk/72/j201m0uFu2v737fuuAd3vQ3UGEvbUouKURXedu1ZOu2OsV/dGzV7dV
mTVHu2/H8z2B56tY2ID3xTXJ2QX0FIGIE5irRQhJm5r1/Bd0aV34nk61HuX9
jHTrpl7N3MwGmDfoX8+WAr2KZez2MV7HOH0zE5doP/oW59nW8W5NBMTR+/dz
/z46iPH5xSQsILRfA0y+VZ83Sdf1VnX88NENnY6qcMhVYDTYHXq3un9R2z1x
AuX0E9Qj8RoIvlPKh8FNbQSIWw5ejK8PD8Xzq90JBvRBtqjh1ZPnz27qxWDA
Aq0YtbQiftvpSyhOjBngBuTt+bO1g/gFALOHyE8PxRH45Km5Xa8fHYpjdJyE
bvXBm32YqYWir58cPz+6pvctYLDjC4C/w/l4ccZF3rNVbQ6NPfzLxf2lv5iY
+5zE+fGd3z879FWsQPxhOgYKWLSriq9jMdvwiZigHfhfZKJ7C7++z0cvbuuB
zIWxpx49tCiQi1Dn44kBehpte7lu8QWaexSeAWANd+53POIu23DvNn0bFHnS
znuKp7NVO19+PRgO04mjZ8fHf8tE6vjiou0isF3j535q/ciE1Q3P2Z1ZMwLN
HgUcyS9dxIj4eXQBcL3cdWXtHA/816uu0GAQceaT/0JMYe3KzwPM4Q3H8/H5
mKvdi00vsAnn/vZp1YE3gz9Ny1uimbMR/OPp6OxqtThdccIiLXd1P1yGQ9uG
CN9BVudknsve0RGJhfpvpfDfhmoHer8/3n75xQhoDh58Cey15PfXp/BM5/58
BkexnM/cykKu21lBHRJc0fWyvbanNWjo9ZwO8OvZUji/sPNxjefn3dIO7rsw
cwPdQWtDiR4KDbzbQtZJWBGi9eMRusvNyLWgVV/TyMOul+dj5yae377mmIe+
xeHGla9viCe8YQvobhBVCGw29V0uBFpGljsNU94mTBi0bd6QRDBbu2H6/dLi
tdh7o4gDsVhBRqjiyaPHJ0fi7pav3JkDXC9A3jsI8/GXY+chpzCKaCbM6UoA
PkzaRbsouuNrRxOFiA+wefYVnb+xqadoplkGLUMplBPXVqYBdnC4Qd5FM/E/
jrvZgbYd/NqspjbOxHAmrG9RCKEiLHajl+fmAorVjKeUG3R+m7UcUrXN9Gwh
AGlZvz01oTWIWrhrqEEHaI2wiM61j81gi2drHYdaogLUee3wsQNdvsGiH6Zx
WOBcXrWihHfj85TA3WcPn3BMIKBxvVr6PXccxTvWq6r4/cwDiv/IdI/3Hnd8
yzsWp5zHGsx9si2LGXTpEAwwtns4xkPL2TMJQzWZzi6pHhcUV8jugcIE1Tha
bGi89YPCBFz/5eJghzxeckq/vwlD6DsIRIuN025BB3DXYrlyFD67wIq6sW6L
QlMmwXHsd04sAYNwMUOnDlsjP9rq+c1Gv1decQ75Z0QW8hrN3I1/apvf+yu0
RfzgOUyXGDvDy5vlmw8GwIAigMzjVDWacDmbT2Ivnj15/VRccOF8cYpevnr6
KDrMG1rUKeCzTgH3YOaPH9sssU+fDsSJOTPj0bdmYWgkYSHryUAXQ17YvfgI
U8n4CDu5Vf7RhrKGQnplffbwaFBEUn36dCggcBYc7HptdiEphwsnpk8nFd8+
+SMH4e6LZ/i0bghKCe3oHFrICPv4MZSKCna9GQ0IGMzHJKq1xe4MIQrrJnY+
ftxIJgvlPpvuXqZ33Cx/AYh27kV9FdKu8ETMvuKtW65h33MLPnhybubL0SOI
NfzzHoWE7Ky247jj6eov49mZGZ2sflqdjUd/QDdm7ycr3BiSs3jjvLWkZtwa
Rjs/0uvoIuZmsQfDBKuh96EedPJC2eH+IIrwaf0TgPFk5WiN4gw0gDa3maYV
Z0EOdv1Cjy0YGuxg2jQ0+cYsor57izbzZjc0IiQvxdF0Nr06n60WwzX5e53d
baRRBdpwTeLU3dfHL6iE+BPVOFYawlMviGCiTAVoF6AGqQXi1E/C2BnmgVHn
EVcRl9CBOWI0IN5qCS8Amja56ekll9lRwKE43iPFDYQWGni4lYQEDcH3VpOY
ePPxI/7l9wniR+dxXCvSPtoh1pDzzNluCD+Mzv/134C3Iq4++eZ/xjyI0eif
g/sKVwfYMl54AuaKRjii+Q/GXgk8cZfP3YNmjOG+/JQ+kZDxfLbcFACGxgBg
zF2gPs6HzFM8NaFy+ZC30Yrtoi28hWrtrYQmmyCDN7TN7xjVNytUAAcG0LII
fvouesZRZyM57MBzjMb43YVhjGKCUOi/4USiF97EMlwS2XBIQVLESrX30z56
oRZmb7RD4wBYIkxAaJnM0DXqyEDcOxAuTrIPzBudH8/F7HK61xgHY8uEb7fO
2xB3mRU5WmdFnqyshYkvxcvZdBTcMzECLOxo/n4VnBeK62+nuEJbKK91oUM1
pb34lkYMBmtupgtj+7AdCmlFjkd7t7Gj6F0lJ0EOg1nAgQJupWrQpfb3QeRh
BClx9LIXfat2Fg5hdg7Kcie2FooJ191DzMWqXvhlq20QOJiXEaQCeAKth53b
0zHsGj9DBhuqcSMY7AQWYGbbdS7oU4/ns0mr0fVqPOGuEBFSCYIAXgUiMkHp
D0MGCCe+RienaIY5F3fBLu+tkWMfdiiu2rOgjZD45RcIeftzSbowvBxPuujZ
QeZ1WgOH+i8Y6gVK6olMl/ABs2o/Mjp2mRW43H3k5eGKPEcNX9uauwXvjx/b
T9Evk3KZwfTnjs1vpw0EdOqjRlO34jBuw2cXpDqnlcdyA+QGOjX1uKUsAXx+
MzOTSLG9eI/PUTF6ur3oSAbAwDzqzyDN/kYKTmneAEiJPzt9j4X6Id2+gTuv
k4En1JpLz407E9Mj08BroanGnkGyTCRZXo/H0Qyi3nMO9nb3AiOL943p5NlU
gpMOKvN/EI//YCYrmtltxcNK348/xAe2phiUlKImusDzXVkHbbhBI6YzQe+K
sYgiOxBKl/in0qFUneU7T3cj/cr/6woQIzrb135+Po7LcN3oE99Ba91CfPXi
DyevvzqIf8XL78LnV0++/8OzV08e8/PJ74+eP+8/dHec/P67Pzx/vP60fvLR
dy9ePHn5OD6Mq2Lr0oujP34V0fpX3x2/fvbdy6PnX0XEgy67mY1emzYPcdfB
Ufo5wmiINot+7ibo3MNHx0KlEX5zuw6sL3zmZh18BqSbxqpmU4xI/Lqkz+Ya
BRADioBegcddcKICZBEVcLSJaeaRYn4NQOAnQBhc2WemT5DvJpzjxefwsxfi
n0USSDu98XmcR/hX8Ttx8XbaLogEy4blTVfM2xLEknzy6Zt3/xofDPk0MPax
D3TrdaeW/dxCAFr0BpPJ7JJOEUMdrT4Ql5aTmu2Zm9CZdgLuiXggrt5qNOzH
t4n4LUDAb8SP+PvwgDdFIPxjaHwkkxATGxhFeRT+fdhdFAtUvmhioxCe7DzI
ijNkU7YseLYUFRyFqnSBjw9R93/7nZDifAb5HLZzfuvG/+ABPDkjuKARzDkP
GeAukcHefp3MJqvoDe/+eCCu7kVh70xePQkDfImr/BsMktPA8B9obExkOhDf
vXmH+8KGwq497Odo3iXjxKljki7Q9yCM76O6Xs7a3zhv1vsT1nrpw3ROHELx
CoI/hiy+71oxuwDK4qjH5nTzeCFM+xAgoBvLSyKyQbH9rMSEhQbwfQGJeZYJ
KvL+tGvdIXPJf9hoAqtnR0NLfhc//pb3R/GgcycRVLdOd/CoPm6bH0s3MdDM
I1Hr45I4wV1v/mTe/Pm41fzQRTpC9otOzXRTXJ1mm7AiZUbLYDrOjTuUc3zY
+a14lQv9JFsHeHQ6W0ajeHKXw3TvIOhRB8HW9tLioH1D2Quyr3NiLgeOxtSz
oGebIgwjcWWZxbfZqoiGOxcAJ4u+zkMzzFlIwQ6Tq+1YPzymIbVtj7CpzWGY
zYkv0ZlY6BCjsuobJjuDtH7wfUPX7r8P1uuobxatK4lInZrA5JQH+80jzmzu
sazwcNuNB3zctO3eGoq98se4xALefN0V0TehdZTXDV3/6Gl8BEo1aycLFjHM
o/Wn0EXRly3ui3l45Kx9BL1BHS5AVec56xEmHtDhcyDBTl3Xxc0js3bjD+PF
LDTtX9+eiZFQXfTt6O/Hr1tU8Gkw8xMf7uYi2EWCtCnD0c4UMl3K9vxltPsn
d1DZkzh9t+gmOeg4J+tJ5NfEKf232WBFp8PsHz+GvawtaI2TtCi2neak7e97
qjUwosQ4QwYb7idRI4bknEgMf+fAZN0Uf+RX3STu5grKYRdEn4Q4uKNhG3Lp
jCtESSrGRSuU2zw7jSQ5bBqLBUTlumhj8Tdv3qkYi1vzBouKuty69W3djwbf
GnoIHWgLStG/qJQ7G8Ws2/K67VPnSNblNN30WOt1ewfEzpy9ffObblLrrF3s
j2oOQUQtXxvPQDWHznhTM/0DcZeyOQh9uydG/xyaB/IUEUA3x7FGJhchzWUJ
2PSAtahD8bAtEK7kQRukrxAq4JFiya/bj/qgIw20PTYlzC4eCH83BJWTAwSX
+s2fX9+Dafu7+Pr63tuPRrz5jag5CagPw4QA+hmcqR3UNqiifRBFKDFu1kAR
n0/aqNjmaw2i4Z5W31DO63U5yWGX1RtZ2R4BhEcHDdzxDtcuV3Su56GZAyrP
Ri+NP52P37fTjR+/fvgSAxvc0JF4+LLVuY8fuUMd1r+1gDglz16Of3Zlcz0/
hBZrKbPBfFI0tq6qQUhe7PMpMfgMmjbQxHo73WvtA9eEKtD8MIMZ4J09RbOm
ve9e0qsNywyNo5n0877dbCndyvlsHgAVjS7A6wm9WhZ1MkSRi3txQXHDGjcC
fofdNxb5xEWPNTpzNkMq3PZiANXxxO9EkgM0L9+mAF3txwCl0/BR42O4iL+D
dPn5tc+pct9zX37RYua1zESHunYc3mmEaj3zaBUngPQnm9yi7iRcd04oOn0+
s9d54XqUzUXQibUGmcmluVqg7g+d9HIESMh1cSgAxc+3yl/TaD/mVA4HC+0N
y4kBfK4CudwXDzjArfWFCjif0Tlp+swdTbqujA58rinanS3ptF4ff38HCd1H
L9C49huc2TkHYSCCNSd5PFpeXXi6mPWzUUFfbP8SymlHcisChMigdGt9nelu
m18LXKOH2tb6zh76cZvHALHnzjvhVn0vtjPEtp2bbghpSr/9zaCabZcX5xK5
y33t9Z6fDNze85O13+OxG9HxGTAIqse1Xm/HzSG4nKyXHPrRIWjcdH5dhbf2
fn0L6ef/TXze5gRDhE4s4rbGHMENZ502LONgj2YfDCvvlrTQcgEz5rj3gqOO
P5tSRqT8yy2hdvrlZp6zAcvoADboVVgARWOMOwhNiwrC2gnRQ0ZHENOE2VJb
8ovFzOPCxppNnsIzxrWvNaE4bY2oG+TLMaQ+4K8tsJuPcHNcollPFdzQ/YMN
RYmUuD2nqJ28hkBac1/bd3SO6wc/MHPLWIu+ByA2Q+ebkMK23KE3dJgDDhgY
vguL/OxvyNmNkzzM9hINz1/gUmb4dacs0d6MO8MNc0/6EEYRnqD9BkOeRF76
bDro7sH2YMQMq+DnOGk6vX62K0LKNtiFJm9moTFu3l2Sld2DVv4GnxEHR23c
UySB1NLlxjOMmRu3DSvYyLvbX4HKw6Plz9UwvK+PvNca8b+NZ95PKHoXHbDp
WhPWP5X9T2m55cd/MUeBQ0ds2qnphifScvBEWq6nu8M6a5dG/mg2/TBI7WKa
cx+dn9LvDRMx9qxnoAXL2WWcdVjMzv12cO88VuwuVwWmdub8FrrZBQXB0IxD
BGhXLzZabdetjnPQ45DUsbnVsM0iaeeML3bnjMOq4D7Qydvfuo4g72fAcTEp
IIO4uBfwoPNxConTCWN2/Wk3u9qmh7RzwSx+PUuygKov3ryTUPIF1RPjdoHP
h4eH+JeXPjoazyf+MH7bfeF48amD8NBBuP1geDcRW5hAWwcwUu521aYVaOSv
nRFtAmpcvbsgV1vEtqFpmy3rq8Llrl0bQn/r7twsxrduKMg78ATXSPMvh7vC
vLOW5p2hOInlFndagd5pJfqXQbvvUEixsk6uf3m7cSV6mlDIQSyjF/D2w3vE
/NYFQd+5UdJiR9R3KOv46Z28h5a2n+Eho4BDrZ/ww2YWcfdf7F770LCNG8/T
AeMTvfGnwSpGfAz9vdf1tLuyWVK7Ih8nG6I1R2jFqd+BZXYhLE4rTA4CbR5M
CodHw5J3O1/fT3ZP3Y57uNo03OhyUCl0ZNWGzLDU28+s7G3N6811xcAvPVDU
B0/QEoDstvvaXEQbzAXP/bDz4YeBV4rZz+uBx7MzeBno5nLuzXloTZt6c4Nz
XfzKLhVDPXSq/2BedI+BB/tuUw6u85Tj+FlH56h7Kw+OcLR2mqPeqnc9dZzT
3faio864EaP7VgeOuivYHae66UkXe5zo4p0OZjlocltpNFZ8GphnO+uyJem2
QV0Df20tj0t7f4eed5lkX4vhMYTXnHQKFtotzr+7aOynbgE55hF0ln2Lgjop
3CbpgPSxTVToF8CYnzb1i8Wa33WQOqzaQq5iMnsfd9CQ8YI1nbd7F8SeSaDr
HxJ3nzx6/Pz43sakJnFnV9KGod1UztOng3JetwKYx9TsSNrZqb6xkeH+7FaR
YRLkPmHu2TXCNLPTdT3dcovdOKShn6h9DOI19qPfQ2LnMMu7jx4+/v29vldh
Ivu6W8Odx/FOrm7aeLbdtfc/HhZ9IN6bC8FL6yt+aZnLFA6ACF7vaHI+g90w
7SEqAuBuu4cizi+1qS9dCtlQbW5QlO3l0thNP2F2Wb9GZBbjkFhkputsgRv0
Lg725Ww1CQ43eHeunEbf0WahGnvGxbnZ5ENY+GZ3uh70bWP1sNyzm4d4zBzU
mAgWim2nGjnlEJIh2VxqGJ688stImnFptVjsta+bhDX0R4c7hh33Gv2MeS84
izQw701dtBzj7mxUfl6vz61zKyGWILcBtrhpSNr8NdLUkLA5HW44CcAShXWG
dXPvo/m054jcQYw5nQ3a9fFjf8IIs+yecfOmeGQmdjVZwZ9+5EkiG0uWW9Dh
nEcLhS2fnCyNTw2aGmb3e3kcdCvM0R0tQjrk3ZdPT+5t7KfBI102YUc6n51f
IGh1Uo6ZjczjZirax6/H4ddPLV7kpscD8e04mv9DM69XExjMaj21aMTUXw53
M7FQNGPQioN1nHa+w4v7Wu9/fM0OdKlkjrNqMYOutY1FrzLc8RTdXzd6welC
yjxwOHiMx6uQihULPdh0mz+rqjz7FUbWVe/Q3QtOP0N9WmgU512tPxiKJeRQ
rngKBEF1r+sBLu3L3FtPkccunxoXjXbogoLjh94pXe4kzsH1vtRZHpf32m0x
9zaaG9LiL1DGj6Ex6EyfvvfxI09cbkHlCdHthbkgTCECbXebdekEeABSm77n
Um+znRR4gyCv25LIpLY1S4iD1GXSBF3kZRR/OovRLwxvK/p9gjgQL8BtfuLc
3ImZn5lIXeAc359uDMR1PQrod7Bi0fBMlXWzkjIJVR60C2Fm2aa9Kr1WGdyV
dpINR1QH0bLF+3IeaVdXs/PV3CDawVwOb9fOt2dtzWk5qFkXB6mSbRPbJaTz
uBUoK3Rf9wUNhAdit4M+gIIdsmtTl25Ghf5dGP3FpzZlJ2SK9iPs10UNN1ht
q0a/VzO4hzWwbEd9A8h+/LiBRj+FvWBhf8XflqB7nV4e7kD2vnwnehDXznaG
eeOWvIW0kl586zHuHLaN6cTvJ7OaG+Os9RfBfYRhoIoMEmkHWfbblhaq7Az4
oLeEmF0bRvmGFNsfAipoc+72JfHuy96NKyf9huNfUmWMrnFUtvZW/NABefH6
+YlQh0mbAJumeUiApQKvNyMFGYezEgB0gME7OXR+4NoGwDLOmXoPrnU1Ws5G
fe5On4+GoRzbPoVgRxkQBfsNiPMeI20ksge0xeyh0xm0Yu+ABf97gRC53IlB
G0sfG02YD3Oh91Tcupa1ggXNCYcKdGXVuHx6DndItMWzxD5+xL+f4nTlfi/a
7obbdk292wiP7ndnbYrAtJPEYjVI+VgDubVw2h7s2EToSJ98fvsd69FR8P7W
vQW887TNWH/YNrjzeGEhyjcBVbUYYRCOOWzo5ojed8FdSHhyBfwyjwFrgwve
XcxG7fJ2iMb30P6530o267as7BP7oTgaxJsDJu1z28d1oOVvbGbDhZqwKtfZ
/q6CXwLRhvVBoDrinniuxK7S37z5eZ1bP9xltDNcG85sE9WMD/1hK8wBpwLo
WywXmy2JvsJMQJTc1XC78E0N7GqOcuvixnXHIAAIR34VeNzBoBJI7MXRH0Mn
9/ajS6cKyftTHzXhzPuLmCUdT1MKWVXrYBI6GRJut7ejdcoMDdqnzF8zqeDl
YNplkJe06S+3XP5gwjECwg5CXMa0DRST5jqmdODD1lqeWVv0xiz6UvxO6LdK
MY0HfyWPJcdfLlMq0S0fxt2EQU3bg5SY3MXkh08xj+dpe9PO8n+b50IysW8a
rUuG4Z+8nwLlYt18Y0/CxuTjQqwOxAf0fpBePFyvFU+ZHPM7/vnT6s/ivri7
atdlN27J4y36Tx/CPR/eJujzit3fvE+1ZeV/ugw3XqKwkfgQNf7xYLX0YH/+
5t6UBqZaxPmQ4fzndkZE1mZlDK+yjRiqrcXvMPXVuRZOOQMIQFDQg9EamQ4T
6H52rbdNLN1Km5p3CeSdVm1mm/+u2yLRrjINk3V+QYGuL/FOKPIOyrzTF6p/
pQwf0dvJ43XSww+DmDbINd3cWhUtLc5eBoltZMFsp7VEbRphWB7sTEd3v83F
g36Ju7s2lOeDDVF3d5yKYU56d7Vur66DORfY27bqrbbuJNb0Lbqzt0kbA7LZ
KnG3m/YOfmzPusjAsEbiRxb14x3O8P94hzP8KxYsD8K3dqg3HrjiA1fhgavu
gSs+cLXzAERzZ79s7uwVzh2O5UXYWiB/1KlMRSmTXCothdRJw/9E+DfHB2mb
vC5cJerGGon/hAz/uTIsMipdybJJlbCl1LJ/Es/iQ543NseVvCyaPO2eRBGo
VNVSxiLwOSnDcV1ffjH/FVvlPVqlpWqK3VYVtWgKVTSF3W1VEYrwUskSBbJV
P3atUiYXLi98ozMJrqEa42ojktRIkyCY5LKujAUFydM6b6qsEXlSJ97VPhRp
E9uktfYiLytXq7oWderzykB6uZG18kUldFJZmYAe+8y6QiolEluVDlWFIpK8
zqsytuqqbRVuKsEbZZrLpkC3TF2XuhZJkhe5KVKRaJNWkitopky1tVY0pnBF
WdpQZJ5VeSZTNNrnpikKgDKl6tL4VEhfl7JJC5GlibZ5nkNWudbeGmFKkxVJ
6tpWNbVMnI+bR9iqkItTh49ZGNc7/5gDe0d2QtRZISCbMquzUjhnpGvqRJQ+
MaWtEceytNReJiIpfGGVdaLKvcuVrWK7klLLFAqtYQ2VcZBmVdXGQRe8lBgB
NLmRxuSmrEValrLIqwwBC+W7KolmgHt86hoRG6bahikHhUmTNPFlVolKSW2a
EmNpMZgVOE9eG2qIF9okWVokUtjaQ1+KPJRalqnMylqJUmG0XAmSZHyWZXUh
yqRQZQNFRoF1VtWNKFCH9FUtigQyqk0swkACTpfBPq/WAjMyF9CbpHJGC21V
VVSZEkWqCwMhCFlBTWSSwQTSQuZeQ5ETKF5baF2nuvGlErJRSVUZiCeFMCF4
4RMKOq9EZlQqPUZUKVfYJCmgolmdly7agnR1obLUx3Z18pJFglgmMWZpUlIW
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
aBBdlYdhl9HSnKGlR8zhP3rzJ/XmzyAIb/6k3/yZUIxXH7ZXH8ar3at/240q
YUPC3eP2nuN4z+DFGvQhaEV8cdpqiY/br1jlPpDD4T6gcYOmoNiH98L+jPUP
/G8iHqBCJuAf/Un9+a2mf7+rw1f953v/tL7ZTxa+L2q0t6y5X67mU3GMgsQo
lLf1/L6qH6KecDeqY90P109vVE9/3AwutJXdnfA9ULHK8Iz4bShLjI7bDnz5
xQ/cldKjx06vNsZu62RSDDpts9+6FojPYnY+mwPiLc7DJoHrtyUtZi3lbt8U
FU/gv+Hsh8DQota22hBiyPrE6bDTrNNI6uebd/3X/qyKvrXhxNVBcyOb/HkT
jKcobry46el8VvvpeEV82r0t3WxeFRfj+M69dovK9+stNe3+F77K42J89yLY
N398i49Xby/udUez7vEt7atd9r7cOvhutoSvI+peaKy7RvQ0bNm9Dmn31XLP
gxMZqQN5oD4NXrkWX0IUxhd3jZmyot+Oxd0xKmK4bbeYPL8X3xEd3jOyuNGZ
XOs+9g3A3i6vz9LtnMvx+j3k3w/fnt6/emxx0Habrf21u3vQvdmsf59165MO
NpxS6883PFFDi1f/JF7z7/f/tOmiFmgmt17e2/QS4d7R6x1XMCiVr5TAo89H
ig2Um8+HOpvwvs7g2Du7ufv6QOD/j++1zeENw1rWzRqHt7z/VcRPOw1cV7Kv
Cj70G8ihreV1eD1WuLRV13av+L3pdirxv+/h/lFCZ0j/hAt6cOGdGrrL6xv0
PdXmeNgeXLnVk6PvqWbHu9W8/XiX71YYxVegzj/tOOnmn25t6NuvdN6w9eW/
hY3f0sR/fQMfdPXWNj7oem/kfb9/Hdd20CKRzxb+iyx8y6j+RiPfb1C7sKe1
KPGab8T7H+s34u0xsHZZpnsVzsY79CjYfcC+A+PxjcwBcG8g/U/rl0BEsBBm
YQ6Gp0B1L5MOG34H5Wy+BOVTOCpg3k6FBSVbiMGmXBbz/XA/rJl3QGrOs7Zn
0/juzX6H7IJ7ekPlx3durjbu4W+PuBqeYHWwWSPIW/di6qGm79lbi1LWv+9u
ej2IP3ZvQlzFNyFuvsKRDenOZmL17aFL4fWFkzUP5+bWdRc6Mf/NDb9uU/Cm
8v6tW4TZp5vkcu1m4O3q/6atwYN3T/LUhNCay3ZaZONMhV70/WZmXtncV3zN
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
vP8AKN3SyIwWAQA=

-->

</rfc>

