UNPKG

@ellcrys/spell

Version:

The official JavaScript library for Ellcrys

539 lines 25 kB
<!doctype html> <html class="default no-js"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>PublicKey | Spell Documentation</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="../assets/css/main.css"> </head> <body> <header> <div class="tsd-page-toolbar"> <div class="container"> <div class="table-wrap"> <div class="table-cell" id="tsd-search" data-index="../assets/js/search.js" data-base=".."> <div class="field"> <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label> <input id="tsd-search-field" type="text" /> </div> <ul class="results"> <li class="state loading">Preparing search index...</li> <li class="state failure">The search index is not available</li> </ul> <a href="../index.html" class="title">Spell Documentation</a> </div> <div class="table-cell" id="tsd-widgets"> <div id="tsd-filter"> <a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a> <div class="tsd-filter-group"> <div class="tsd-select" id="tsd-filter-visibility"> <span class="tsd-select-label">All</span> <ul class="tsd-select-list"> <li data-value="public">Public</li> <li data-value="protected">Public/Protected</li> <li data-value="private" class="selected">All</li> </ul> </div> <input type="checkbox" id="tsd-filter-inherited" checked /> <label class="tsd-widget" for="tsd-filter-inherited">Inherited</label> <input type="checkbox" id="tsd-filter-externals" checked /> <label class="tsd-widget" for="tsd-filter-externals">Externals</label> <input type="checkbox" id="tsd-filter-only-exported" /> <label class="tsd-widget" for="tsd-filter-only-exported">Only exported</label> </div> </div> <a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a> </div> </div> </div> </div> <div class="tsd-page-title"> <div class="container"> <ul class="tsd-breadcrumb"> <li> <a href="../globals.html">Globals</a> </li> <li> <a href="../modules/key.html">Key</a> </li> <li> <a href="key.publickey.html">PublicKey</a> </li> </ul> <h1>Class PublicKey</h1> </div> </div> </header> <div class="container container-main"> <div class="row"> <div class="col-8 col-content"> <section class="tsd-panel tsd-comment"> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>PublicKey represents an ED25519 public key</p> </div> <dl class="tsd-comment-tags"> <dt>export</dt> <dd></dd> <dt>class</dt> <dd><p>PublicKey</p> </dd> </dl> </div> </section> <section class="tsd-panel tsd-hierarchy"> <h3>Hierarchy</h3> <ul class="tsd-hierarchy"> <li> <span class="target">PublicKey</span> </li> </ul> </section> <section class="tsd-panel-group tsd-index-group"> <h2>Index</h2> <section class="tsd-panel tsd-index-panel"> <div class="tsd-index-content"> <section class="tsd-index-section tsd-is-private tsd-is-private-protected"> <h3>Properties</h3> <ul class="tsd-index-list"> <li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><a href="key.publickey.html#pk" class="tsd-kind-icon">pk</a></li> </ul> </section> <section class="tsd-index-section "> <h3>Methods</h3> <ul class="tsd-index-list"> <li class="tsd-kind-method tsd-parent-kind-class"><a href="key.publickey.html#toaddress" class="tsd-kind-icon">to<wbr>Address</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="key.publickey.html#tobase58" class="tsd-kind-icon">to<wbr>Base58</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="key.publickey.html#tobuffer" class="tsd-kind-icon">to<wbr>Buffer</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="key.publickey.html#verify" class="tsd-kind-icon">verify</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><a href="key.publickey.html#from" class="tsd-kind-icon">from</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><a href="key.publickey.html#frombuffer" class="tsd-kind-icon">from<wbr>Buffer</a></li> </ul> </section> </div> </section> </section> <section class="tsd-panel-group tsd-member-group tsd-is-private tsd-is-private-protected"> <h2>Properties</h2> <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-private"> <a name="pk" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagPrivate">Private</span> pk</h3> <div class="tsd-signature tsd-kind-icon">pk<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Buffer</span></div> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L244">key.ts:244</a></li> </ul> </aside> </section> </section> <section class="tsd-panel-group tsd-member-group "> <h2>Methods</h2> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="toaddress" class="tsd-anchor"></a> <h3>to<wbr>Address</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">to<wbr>Address<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="key.address.html" class="tsd-signature-type">Address</a></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L275">key.ts:275</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns an address derived from the public key</p> </div> <dl class="tsd-comment-tags"> <dt>memberof</dt> <dd><p>PublicKey</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <a href="key.address.html" class="tsd-signature-type">Address</a></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="tobase58" class="tsd-anchor"></a> <h3>to<wbr>Base58</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">to<wbr>Base58<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L252">key.ts:252</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns base58 encode string of the public key</p> </div> <dl class="tsd-comment-tags"> <dt>memberof</dt> <dd><p>PublicKey</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="tobuffer" class="tsd-anchor"></a> <h3>to<wbr>Buffer</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">to<wbr>Buffer<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Buffer</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L264">key.ts:264</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns the public key as a buffer. The public key version is added as the 0th byte in the returned buffer</p> </div> <dl class="tsd-comment-tags"> <dt>memberof</dt> <dd><p>PublicKey</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Buffer</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="verify" class="tsd-anchor"></a> <h3>verify</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">verify<span class="tsd-signature-symbol">(</span>msg<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Buffer</span>, sig<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Buffer</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L291">key.ts:291</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Verify a signature</p> </div> <dl class="tsd-comment-tags"> <dt>memberof</dt> <dd><p>PublicKey</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>msg: <span class="tsd-signature-type">Buffer</span></h5> <div class="tsd-comment tsd-typography"> <p>The message that was signed</p> </div> </li> <li> <h5>sig: <span class="tsd-signature-type">Buffer</span></h5> <div class="tsd-comment tsd-typography"> <p>The message&#39;s signature</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-static"> <a name="from" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagStatic">Static</span> from</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-static"> <li class="tsd-signature tsd-kind-icon">from<span class="tsd-signature-symbol">(</span>str<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="key.publickey.html" class="tsd-signature-type">PublicKey</a></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L222">key.ts:222</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Instantiate a PublicKey from a base58 encoded public key string</p> </div> <dl class="tsd-comment-tags"> <dt>static</dt> <dd></dd> <dt>throws</dt> <dd><p>InvalidPublicKeyChecksum|InvalidPublicKeyVersion|InvalidPublicKeySize</p> </dd> <dt>memberof</dt> <dd><p>PublicKey</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>str: <span class="tsd-signature-type">string</span></h5> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="key.publickey.html" class="tsd-signature-type">PublicKey</a></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-static"> <a name="frombuffer" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagStatic">Static</span> from<wbr>Buffer</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-static"> <li class="tsd-signature tsd-kind-icon">from<wbr>Buffer<span class="tsd-signature-symbol">(</span>buf<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Buffer</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="key.publickey.html" class="tsd-signature-type">PublicKey</a></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in <a href="https://github.com/ellcrys/spell.js/blob/cda6112/src/lib/key.ts#L198">key.ts:198</a></li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Instantiate a PublicKey from a buffer. The buffer&#39;s 0th index must contain the public key version.</p> </div> <dl class="tsd-comment-tags"> <dt>static</dt> <dd></dd> <dt>memberof</dt> <dd><p>PublicKey</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>buf: <span class="tsd-signature-type">Buffer</span></h5> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="key.publickey.html" class="tsd-signature-type">PublicKey</a></h4> </li> </ul> </section> </section> </div> <div class="col-4 col-menu menu-sticky-wrap menu-highlight"> <nav class="tsd-navigation primary"> <ul> <li class="globals "> <a href="../globals.html"><em>Globals</em></a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/auth.html">Auth</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/ell.html">Ell</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/errors.html">Errors</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/index.html">Index</a> </li> <li class="current tsd-kind-external-module"> <a href="../modules/key.html">Key</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/logger.html">Logger</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/miner.html">Miner</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/namespace.html">Namespace</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/net.html">Net</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/node.html">Node</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/pool.html">Pool</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/rpc.html">RPC</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/rpcclient.html">RPCClient</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/spell.html">Spell</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/state.html">State</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/transactionbuilder.html">Transaction<wbr>Builder</a> </li> <li class=" tsd-kind-external-module"> <a href="../modules/txutility.html">Tx<wbr>Utility</a> </li> </ul> </nav> <nav class="tsd-navigation secondary menu-sticky"> <ul class="before-current"> <li class=" tsd-kind-class tsd-parent-kind-external-module"> <a href="key.address.html" class="tsd-kind-icon">Address</a> </li> <li class=" tsd-kind-class tsd-parent-kind-external-module"> <a href="key.hdkey.html" class="tsd-kind-icon">HDKey</a> </li> <li class=" tsd-kind-class tsd-parent-kind-external-module"> <a href="key.privatekey.html" class="tsd-kind-icon">Private<wbr>Key</a> </li> </ul> <ul class="current"> <li class="current tsd-kind-class tsd-parent-kind-external-module"> <a href="key.publickey.html" class="tsd-kind-icon">Public<wbr>Key</a> <ul> <li class=" tsd-kind-property tsd-parent-kind-class tsd-is-private"> <a href="key.publickey.html#pk" class="tsd-kind-icon">pk</a> </li> <li class=" tsd-kind-method tsd-parent-kind-class"> <a href="key.publickey.html#toaddress" class="tsd-kind-icon">to<wbr>Address</a> </li> <li class=" tsd-kind-method tsd-parent-kind-class"> <a href="key.publickey.html#tobase58" class="tsd-kind-icon">to<wbr>Base58</a> </li> <li class=" tsd-kind-method tsd-parent-kind-class"> <a href="key.publickey.html#tobuffer" class="tsd-kind-icon">to<wbr>Buffer</a> </li> <li class=" tsd-kind-method tsd-parent-kind-class"> <a href="key.publickey.html#verify" class="tsd-kind-icon">verify</a> </li> <li class=" tsd-kind-method tsd-parent-kind-class tsd-is-static"> <a href="key.publickey.html#from" class="tsd-kind-icon">from</a> </li> <li class=" tsd-kind-method tsd-parent-kind-class tsd-is-static"> <a href="key.publickey.html#frombuffer" class="tsd-kind-icon">from<wbr>Buffer</a> </li> </ul> </li> </ul> <ul class="after-current"> <li class=" tsd-kind-variable tsd-parent-kind-external-module"> <a href="../modules/key.html#addressversion" class="tsd-kind-icon">Address<wbr>Version</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#ed25519_curve" class="tsd-kind-icon">ED25519_<wbr>CURVE</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#hardened_offset" class="tsd-kind-icon">HARDENED_<wbr>OFFSET</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module"> <a href="../modules/key.html#privatekeyversion" class="tsd-kind-icon">Private<wbr>Key<wbr>Version</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module"> <a href="../modules/key.html#publickeyversion" class="tsd-kind-icon">Public<wbr>Key<wbr>Version</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#ripemd160" class="tsd-kind-icon">RIPEMD160</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#sha3" class="tsd-kind-icon">SHA3</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#b58" class="tsd-kind-icon">b58</a> </li> <li class=" tsd-kind-variable tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#pathregex" class="tsd-kind-icon">path<wbr>Regex</a> </li> <li class=" tsd-kind-function tsd-parent-kind-external-module"> <a href="../modules/key.html#isvalidpath" class="tsd-kind-icon">is<wbr>Valid<wbr>Path</a> </li> <li class=" tsd-kind-function tsd-parent-kind-external-module tsd-is-not-exported"> <a href="../modules/key.html#replacederive" class="tsd-kind-icon">replace<wbr>Derive</a> </li> </ul> </nav> </div> </div> </div> <footer> <div class="container"> <h2>Legend</h2> <div class="tsd-legend-group"> <ul class="tsd-legend"> <li class="tsd-kind-module"><span class="tsd-kind-icon">Module</span></li> <li class="tsd-kind-object-literal"><span class="tsd-kind-icon">Object literal</span></li> <li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li> <li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li> <li class="tsd-kind-function tsd-has-type-parameter"><span class="tsd-kind-icon">Function with type parameter</span></li> <li class="tsd-kind-index-signature"><span class="tsd-kind-icon">Index signature</span></li> <li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-enum"><span class="tsd-kind-icon">Enumeration</span></li> <li class="tsd-kind-enum-member"><span class="tsd-kind-icon">Enumeration member</span></li> <li class="tsd-kind-property tsd-parent-kind-enum"><span class="tsd-kind-icon">Property</span></li> <li class="tsd-kind-method tsd-parent-kind-enum"><span class="tsd-kind-icon">Method</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li> <li class="tsd-kind-interface tsd-has-type-parameter"><span class="tsd-kind-icon">Interface with type parameter</span></li> <li class="tsd-kind-constructor tsd-parent-kind-interface"><span class="tsd-kind-icon">Constructor</span></li> <li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li> <li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li> <li class="tsd-kind-index-signature tsd-parent-kind-interface"><span class="tsd-kind-icon">Index signature</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li> <li class="tsd-kind-class tsd-has-type-parameter"><span class="tsd-kind-icon">Class with type parameter</span></li> <li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li> <li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li> <li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li> <li class="tsd-kind-accessor tsd-parent-kind-class"><span class="tsd-kind-icon">Accessor</span></li> <li class="tsd-kind-index-signature tsd-parent-kind-class"><span class="tsd-kind-icon">Index signature</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li> <li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li> <li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited accessor</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected property</span></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected method</span></li> <li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected accessor</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private method</span></li> <li class="tsd-kind-accessor tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private accessor</span></li> </ul> <ul class="tsd-legend"> <li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li> <li class="tsd-kind-call-signature tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li> </ul> </div> </div> </footer> <div class="overlay"></div> <script src="../assets/js/main.js"></script> <script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script> </body> </html>